diff options
author | bala <balanatarajan@users.noreply.github.com> | 2003-05-22 15:58:08 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2003-05-22 15:58:08 +0000 |
commit | cec127b61b05c26deaf6c13a716f94f7839c9502 (patch) | |
tree | 493ad6f83b0f45af82d1bf684821a99fbcca4260 | |
parent | 4ec2423cab27a2719e96046731918e135d4e8395 (diff) | |
download | ATCD-cec127b61b05c26deaf6c13a716f94f7839c9502.tar.gz |
ChangeLogTag:Thu May 22 10:51:22 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 16 | ||||
-rw-r--r-- | TAO/tao/ORB_Core.cpp | 14 |
2 files changed, 24 insertions, 6 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 2cfeb410c8e..2f05d0cc46f 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,19 @@ +Thu May 22 10:51:22 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> + + * tao/ORB_Core.cpp (create_object): If create_collocated_object () + returns a null, create a CORBA::Object () before + returning. The null pointer returned by the + create_collocated_object () is indeed right since the object + pointed to by the PortableGroup::ObjectGroup_ptr object + reference being created is not a servant. It is a + ServantManager! More specifically, it is Cygnus' ServantManager + created and housed by its LoadManager object. An actual + ObjectGroup object does not exist. It is a logical entity + exposed to clients to allow them to invoke methods transparently + on members of that object group. + + Hence returning a null-object would break the LoadBalancer. + Thu May 22 10:38:53 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> * tao/ObjectKey_Table.cpp (ObjectKey_Table): diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp index a8235b9e5d0..f5450c6eac3 100644 --- a/TAO/tao/ORB_Core.cpp +++ b/TAO/tao/ORB_Core.cpp @@ -1620,6 +1620,9 @@ TAO_ORB_Core::create_object (TAO_Stub *stub) // when we use collocation! const TAO_MProfile &mprofile = stub->base_profiles (); + // @@ We should thow CORBA::NO_MEMORY in platforms with exceptions, + // but we are stuck in platforms without exceptions! + CORBA::Object_ptr x; { // @@ Ossama: maybe we need another lock for the table, to // reduce contention on the Static_Object_Lock below, if so @@ -1642,16 +1645,15 @@ TAO_ORB_Core::create_object (TAO_Stub *stub) TAO_Adapter_Registry *ar = other_core->adapter_registry (); - return ar->create_collocated_object (stub, - mprofile); + x = ar->create_collocated_object (stub, + mprofile); + + if (x != 0) + return x; } } } - // @@ We should thow CORBA::NO_MEMORY in platforms with exceptions, - // but we are stuck in platforms without exceptions! - CORBA::Object_ptr x; - // The constructor sets the proxy broker as the // Remote one. ACE_NEW_RETURN (x, |