summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbala <balanatarajan@users.noreply.github.com>2003-05-22 15:58:08 +0000
committerbala <balanatarajan@users.noreply.github.com>2003-05-22 15:58:08 +0000
commitcec127b61b05c26deaf6c13a716f94f7839c9502 (patch)
tree493ad6f83b0f45af82d1bf684821a99fbcca4260
parent4ec2423cab27a2719e96046731918e135d4e8395 (diff)
downloadATCD-cec127b61b05c26deaf6c13a716f94f7839c9502.tar.gz
ChangeLogTag:Thu May 22 10:51:22 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-rw-r--r--TAO/ChangeLog16
-rw-r--r--TAO/tao/ORB_Core.cpp14
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,