[omniORB-dev] omni bug (patch attached)
Serguei Kolos
Serguei.Kolos at cern.ch
Mon Nov 24 12:05:52 GMT 2003
Hello
While doing object deactivation I have noticed that omni always delays
deactivation
to another thread because the omniLocalIdentity::is_idle() method is
implemented as
{ return !pd_nInvocations;}.
I think this is wrong because later in the same file
(include/omniORB4/internal/localIdentity.h)
the comment for the pd_nInvocations attribute explains that it is
intentionally set to 1 when
there are no invocations in order to prevent the overhead of unnecessary
notifications.
Because of that the is_idle always returns zero, which results in
delayed deactivation.
The patch attached to this main changes the is_idle implementation to
{ return (pd_nInvocations<=1);}.
Unfortunately I'm not sure that this solution is fully correct. Could
someone please comment on that
because this issue is quite important for me.
Cheers,
Sergei
-------------- next part --------------
*** localIdentity.h Fri Nov 29 15:03:41 2002
--- /afs/cern.ch/user/k/kolos/working/online/omni/omni-04-02-00/include/omniORB4/internal/localIdentity.h Mon Nov 24 10:28:17 2003
***************
*** 29,34 ****
--- 29,37 ----
/*
$Log: localIdentity.h,v $
+ Revision 1.1.1.1 2003/11/03 15:00:13 kolos
+ Create omni package.
+
Revision 1.1.4.9 2002/11/29 14:03:41 dgrisby
Rearrange declarations to make Code Warrior happy.
***************
*** 144,150 ****
inline omniServant* servant() const { return pd_servant; }
inline _OMNI_NS(omniObjAdapter)* adapter() const { return pd_adapter; }
! inline int is_idle() const { return !pd_nInvocations;}
inline _CORBA_Boolean deactivated() const { return pd_deactivated; }
// For each of the above the ownership of the returned value
// is the responsibility of this object. No reference counts
--- 147,153 ----
inline omniServant* servant() const { return pd_servant; }
inline _OMNI_NS(omniObjAdapter)* adapter() const { return pd_adapter; }
! inline int is_idle() const { return (pd_nInvocations<=1);}
inline _CORBA_Boolean deactivated() const { return pd_deactivated; }
// For each of the above the ownership of the returned value
// is the responsibility of this object. No reference counts
More information about the omniORB-dev
mailing list