omni bug (patch attached)
Serguei Kolos <[email protected]> Mon, 24 Nov 2003 12:05:52 +0100
| Newsgroups | gmane.comp.corba.omniorb.devel |
|---|---|
| Message-ID | <[email protected]> |
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
_______________________________________________
omniORB-dev mailing list
[email protected]
http://www.omniorb-support.com/mailman/listinfo/omniorb-dev
omni.patch
(text/plain, 1.4 KB)
*** 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