Issue 3684: It is not clear when ORB initializers are meant to be called (interceptors-rtf) Source: International Business Machines (Mr. Russell Butek, ) Nature: Uncategorized Issue Severity: Summary: ORB_Init should only call ORB initializers when instantiating a new ORB, not every time ORB_Init is called. This is not clear in the spec. The offending verbage is in the first of the following 2 paragraphs from ptc/2000-04-05, page 21-44, between >>> and <<<: Each service that implements Interceptors will provide an instance of ORBInitializer. To use a service, an application would first call register_orb_initializer, passing in the service?s ORBInitializer. After this is complete, the application would instantiate a new ORB by calling ORB_init with a new ORB ID. >>>ORB_init calls each registered ORBInitializer. The returned ORB will contain any Interceptors that the given service requires. <<< register_orb_initializer is a global operation. An ORBInitializer registered at a given point in time will be called by all instantiating ORB_init calls that occur after that point in time. (An instantiating ORB_init call is one which produces a new ORB. In other words, one that is not passed the ID of an existing ORB.) No ORB instantiated before that point in time will be affected by that ORBInitializer. Moreover, if register_orb_initializer is called from within an initializer, the initializer registered by that call will not be called for the ORB currently being initialized. That initializer will only be invoked on an ORB instantiated at a later time. The offending sentence implies that the ORB initializers are called on EVERY ORB_Init call. It should only be called on every ORB_Init call that instantiates a new ORB. This "instantiating ORB_Init call" is defined in the next paragraph, but it should be defined and used in the first for clarity. I propose rewriting the above two paragraphs as: Each service that implements Interceptors will provide an instance of ORBInitializer. To use a service, an application would first call register_orb_initializer, passing in the service?s ORBInitializer. After this is complete, the application would make an instantiating ORB_Init call. (An instantiating ORB_init call is one which produces a new ORB. In other words, one that is not passed the ID of an existing ORB.) This instantiating ORB_Init call calls each registered ORBInitializer. The returned ORB will contain any Interceptors that the given service requires. register_orb_initializer is a global operation. An ORBInitializer registered at a given point in time will be called by all instantiating ORB_init calls that occur after that point in time. No ORB instantiated before that point in time will be affected by that ORBInitializer. Moreover, if register_orb_initializer is called from within an initializer, the initializer registered by that call will not be called for the ORB currently being initialized. That initializer will only be invoked on an ORB instantiated at a later time. Resolution: fixed, clos eissue Revised Text: Each service that implements Interceptors will provide an instance of ORBInitializer. To use a service, an application would first call register_orb_initializer, passing in the service's ORBInitializer. After this is complete, the application would make an instantiating ORB_Init call. (An instantiating ORB_init call is one which produces a new ORB. In other words, one that is not passed the ID of an existing ORB.) This instantiating ORB_Init call calls each registered ORBInitializer. The returned ORB will contain any Interceptors that the given service requires. register_orb_initializer is a global operation. An ORBInitializer registered at a given point in time will be called by all instantiating ORB_init calls that occur after that point in time. No ORB instantiated before that point in time will be affected by that ORBInitializer. Moreover, if register_orb_initializer is called from within an initializer, the initializer registered by that call will not be called for the ORB currently being initialized. That initializer will only be invoked on an ORB instantiated at a later time. Actions taken: June 14, 2000: received issue January 9, 2001: closed issue Discussion: End of Annotations:===== From: butek@us.ibm.com Received: from e23.nc.us.ibm.com (e23.raleigh.ibm.com [9.37.2.62]) by admin.ny.us.ibm.com. (8.9.3/8.9.3) with ESMTP id KAA32890; Tue, 13 Jun 2000 10:30:23 -0400 Received: from southrelay02.raleigh.ibm.com (southrelay02.raleigh.ibm.com [9.37.3.209]) by e23.nc.us.ibm.com (8.9.3/8.9.3) with ESMTP id KAA18142; Tue, 13 Jun 2000 10:11:52 -0500 Received: from d54mta02.raleigh.ibm.com (d54mta02.raleigh.ibm.com [9.67.228.34]) by southrelay02.raleigh.ibm.com (8.8.8m3/NCO v4.9) with SMTP id KAA38174; Tue, 13 Jun 2000 10:31:55 -0400 Received: by d54mta02.raleigh.ibm.com(Lotus SMTP MTA v4.6.5 (863.2 5-20-1999)) id 852568FD.004FD038 ; Tue, 13 Jun 2000 10:31:46 -0400 X-Lotus-FromDomain: IBMUS To: interceptors-ftf@omg.org, issues@omg.org Message-ID: <852568FD.004FC64B.00@d54mta02.raleigh.ibm.com> Date: Wed, 14 Jun 2000 19:49:18 +0100 Subject: It is not clear when ORB initializers are meant to be called Mime-Version: 1.0 Content-Disposition: inline Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by emerald.omg.org id LAA22974 Content-Type: text/plain; charset=iso-8859-1 X-UIDL: I-d!!Wi5e92\dd9@g9!! ORB_Init should only call ORB initializers when instantiating a new ORB, not every time ORB_Init is called. This is not clear in the spec. The offending verbage is in the first of the following 2 paragraphs from ptc/2000-04-05, page 21-44, between >>> and <<<: Each service that implements Interceptors will provide an instance of ORBInitializer. To use a service, an application would first call register_orb_initializer, passing in the service?s ORBInitializer. After this is complete, the application would instantiate a new ORB by calling ORB_init with a new ORB ID. >>>ORB_init calls each registered ORBInitializer. The returned ORB will contain any Interceptors that the given service requires. <<< register_orb_initializer is a global operation. An ORBInitializer registered at a given point in time will be called by all instantiating ORB_init calls that occur after that point in time. (An instantiating ORB_init call is one which produces a new ORB. In other words, one that is not passed the ID of an existing ORB.) No ORB instantiated before that point in time will be affected by that ORBInitializer. Moreover, if register_orb_initializer is called from within an initializer, the initializer registered by that call will not be called for the ORB currently being initialized. That initializer will only be invoked on an ORB instantiated at a later time. The offending sentence implies that the ORB initializers are called on EVERY ORB_Init call. It should only be called on every ORB_Init call that instantiates a new ORB. This "instantiating ORB_Init call" is defined in the next paragraph, but it should be defined and used in the first for clarity. I propose rewriting the above two paragraphs as: Each service that implements Interceptors will provide an instance of ORBInitializer. To use a service, an application would first call register_orb_initializer, passing in the service?s ORBInitializer. After this is complete, the application would make an instantiating ORB_Init call. (An instantiating ORB_init call is one which produces a new ORB. In other words, one that is not passed the ID of an existing ORB.) This instantiating ORB_Init call calls each registered ORBInitializer. The returned ORB will contain any Interceptors that the given service requires. register_orb_initializer is a global operation. An ORBInitializer registered at a given point in time will be called by all instantiating ORB_init calls that occur after that point in time. No ORB instantiated before that point in time will be affected by that ORBInitializer. Moreover, if register_orb_initializer is called from within an initializer, the initializer registered by that call will not be called for the ORB currently being initialized. That initializer will only be invoked on an ORB instantiated at a later time. Russell Butek butek@us.ibm.com From: Paul Kyzivat To: interceptors-ftf@omg.org Subject: RE: It is not clear when ORB initializers are meant to be called Date: Mon, 19 Jun 2000 16:19:49 -0400 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2448.0) Content-Type: text/plain; charset="ISO-8859-1" X-UIDL: A'&"!Hia!!g\hd9\%(!! Sounds good to me. Paul > -----Original Message----- > From: butek@us.ibm.com [mailto:butek@us.ibm.com] > Sent: Wednesday, June 14, 2000 2:49 PM > To: interceptors-ftf@omg.org; issues@omg.org > Subject: It is not clear when ORB initializers are meant to be called > > > > > ORB_Init should only call ORB initializers when instantiating > a new ORB, > not every time ORB_Init is called. This is not clear in the spec. > > The offending verbage is in the first of the following 2 > paragraphs from > ptc/2000-04-05, page 21-44, between >>> and <<<: > > Each service that implements Interceptors will provide an instance of > ORBInitializer. > To use a service, an application would first call > register_orb_initializer, > passing in > the service?s ORBInitializer. After this is complete, the > application would > instantiate > a new ORB by calling ORB_init with a new ORB ID. >>>ORB_init > calls each > registered > ORBInitializer. The returned ORB will contain any > Interceptors that the > given > service requires. <<< > > register_orb_initializer is a global operation. An ORBInitializer > registered at a > given point in time will be called by all instantiating > ORB_init calls that > occur after > that point in time. (An instantiating ORB_init call is one > which produces a > new ORB. > In other words, one that is not passed the ID of an existing > ORB.) No ORB > instantiated before that point in time will be affected by that > ORBInitializer. > Moreover, if register_orb_initializer is called from within > an initializer, > the > initializer registered by that call will not be called for the ORB > currently being > initialized. That initializer will only be invoked on an ORB > instantiated > at a later time. > > > The offending sentence implies that the ORB initializers are called on > EVERY ORB_Init call. It should only be called on every > ORB_Init call that > instantiates a new ORB. This "instantiating ORB_Init call" > is defined in > the next paragraph, but it should be defined and used in the first for > clarity. I propose rewriting the above two paragraphs as: > > Each service that implements Interceptors will provide an instance of > ORBInitializer. > To use a service, an application would first call > register_orb_initializer, > passing in > the service?s ORBInitializer. After this is complete, the > application would > make an > instantiating ORB_Init call. (An instantiating ORB_init call > is one which > produces a > new ORB. In other words, one that is not passed the ID of an existing > ORB.) This > instantiating ORB_Init call calls each registered ORBInitializer. The > returned ORB > will contain any Interceptors that the given service requires. > > register_orb_initializer is a global operation. An ORBInitializer > registered at a > given point in time will be called by all instantiating > ORB_init calls that > occur after > that point in time. No ORB instantiated before that point in > time will be > affected by > that ORBInitializer. Moreover, if register_orb_initializer is > called from > within an > initializer, the initializer registered by that call will not > be called for > the ORB currently > being initialized. That initializer will only be invoked on an ORB > instantiated at a later > time. > > Russell Butek > butek@us.ibm.com > >