From abc7c06f91483f61bfad323c3f97c7e7dd6ed170 Mon Sep 17 00:00:00 2001 From: Ossama Othman Date: Wed, 23 Apr 2003 23:07:34 +0000 Subject: ChangeLogTag:Wed Apr 23 18:06:48 2003 Ossama Othman --- TAO/ChangeLog | 10 +++++++++ TAO/tao/PortableServer/Object_Adapter.cpp | 10 --------- TAO/tao/PortableServer/POA.cpp | 35 ++++++++++++++----------------- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 4acfce3127a..07ecdde4787 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,13 @@ +Wed Apr 23 18:06:48 2003 Ossama Othman + + * tao/PortableServer/POA.cpp (id_to_reference_i): + (establish_components): + * tao/PortableServer/Object_Adapter.cpp (open): + + Reverted Carlos' changes that attempted to fix Bug 1414 + (IORInterceptor deadlock). It introduced other problems. + Thanks to Irfan for detecting this problem. + Wed Apr 23 17:13:27 2003 Jeff Parsons * TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp: diff --git a/TAO/tao/PortableServer/Object_Adapter.cpp b/TAO/tao/PortableServer/Object_Adapter.cpp index 9cbae2a919f..3438e39cd4b 100644 --- a/TAO/tao/PortableServer/Object_Adapter.cpp +++ b/TAO/tao/PortableServer/Object_Adapter.cpp @@ -627,16 +627,6 @@ TAO_Object_Adapter::open (ACE_ENV_SINGLE_ARG_DECL) // destroyed yet or not. this->root_->_add_ref (); - // Lock access for the duration of this transaction. - TAO_POA_Guard poa_guard(*this->root_ ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // Iterate over the registered IOR interceptors so that they may be - // given the opportunity to add tagged components to the profiles - // for servants managed by the Root POA. - this->root_->establish_components (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - // Release the POA_Manager_var since we got here without error. The // TAO_POA object takes ownership of the POA_Manager object // (actually it shares the ownership with its peers). diff --git a/TAO/tao/PortableServer/POA.cpp b/TAO/tao/PortableServer/POA.cpp index 650f95f9cc6..dc12bc2c98b 100644 --- a/TAO/tao/PortableServer/POA.cpp +++ b/TAO/tao/PortableServer/POA.cpp @@ -2438,23 +2438,23 @@ TAO_POA::id_to_reference_i (const PortableServer::ObjectId &id PortableServer::ObjectId_var system_id; PortableServer::Servant servant; CORBA::Short priority; + if (this->active_object_map ().find_servant_and_system_id_using_user_id ( id, - servant, - system_id.out (), - priority) == 0) - { - // Ask the ORT to create a reference - PortableInterceptor::ObjectId oid (id.length (), - id.length (), - ACE_const_cast (CORBA::Octet *, - id.get_buffer ()), - 0); - return - this->obj_ref_factory_->make_object( - servant->_interface_repository_id (), - oid - ACE_ENV_ARG_PARAMETER); + servant, + system_id.out (), + priority) == 0) + { + // Create object key. + TAO::ObjectKey_var key = this->create_object_key (system_id.in ()); + + // Ask the ORB to create you a reference + return this->key_to_object (key.in (), + servant->_interface_repository_id (), + servant, + 1, + priority + ACE_ENV_ARG_PARAMETER); } else // If the Object Id value is not active in the POA, an @@ -3640,9 +3640,6 @@ TAO_POA::establish_components (ACE_ENV_SINGLE_ARG_DECL) PortableInterceptor::IORInfo_var info = tao_info; - TAO_Object_Adapter::Non_Servant_Upcall non_servant_upcall (*this); - ACE_UNUSED_ARG (non_servant_upcall); - for (size_t i = 0; i < interceptor_count; ++i) { ACE_TRY @@ -3995,7 +3992,7 @@ void TAO_POA::imr_notify_shutdown (void) { if (TAO_debug_level > 0) - ACE_DEBUG ((LM_DEBUG, "Notifing ImR of Shutdown\n")); + ACE_DEBUG ((LM_DEBUG, "Notifying ImR of Shutdown\n")); // Notify the Implementation Repository about shutting down. CORBA::Object_var imr = this->orb_core ().implrepo_service (); -- cgit v1.2.1