diff options
author | Phil Mesnier <mesnier_p@ociweb.com> | 2013-04-01 21:30:23 +0000 |
---|---|---|
committer | Phil Mesnier <mesnier_p@ociweb.com> | 2013-04-01 21:30:23 +0000 |
commit | 0d66f24929411d0536d137ef2caccc1f5cdbfaad (patch) | |
tree | 964a2946cae0abdd389097264935ebc3865ef175 | |
parent | 23de61f9a56c2637fed2436b54838bd02d87a2a0 (diff) | |
download | ATCD-0d66f24929411d0536d137ef2caccc1f5cdbfaad.tar.gz |
Mon Apr 1 21:28:42 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r-- | TAO/ChangeLog_Asynch_ImR | 16 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp | 172 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h | 65 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp | 53 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h | 4 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp | 51 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/LiveCheck.h | 2 | ||||
-rw-r--r-- | TAO/utils/logWalker/Log.cpp | 6 |
8 files changed, 297 insertions, 72 deletions
diff --git a/TAO/ChangeLog_Asynch_ImR b/TAO/ChangeLog_Asynch_ImR index 5d78c937690..bae48aa3f08 100644 --- a/TAO/ChangeLog_Asynch_ImR +++ b/TAO/ChangeLog_Asynch_ImR @@ -1,3 +1,19 @@ +Mon Apr 1 21:28:42 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com> + + * orbsvcs/ImplRepo_Service/AsyncAccessManager.h: + * orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp: + * orbsvcs/ImplRepo_Service/ImR_Locator_i.h: + * orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp: + * orbsvcs/ImplRepo_Service/LiveCheck.h: + * orbsvcs/ImplRepo_Service/LiveCheck.cpp: + + Improve memory management. + + * utils/logWalker/Log.cpp: + + Improve handling of nested client/server connection + completions. + Mon Apr 1 15:51:42 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com> * orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp: diff --git a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp index 63713bd5204..16d01398260 100644 --- a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp @@ -5,8 +5,6 @@ #include "ImR_Locator_i.h" #include "Locator_Repository.h" - - //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- @@ -29,6 +27,7 @@ AsyncAccessManager::AsyncAccessManager (const Server_Info &info, AsyncAccessManager::~AsyncAccessManager (void) { + ACE_DEBUG ((LM_DEBUG, "AAM (%x): dtor\n", this)); delete this->info_; } @@ -58,6 +57,10 @@ AsyncAccessManager::add_interest (ImR_ResponseHandler *rh) if (this->locator_.pinger().is_alive (this->info_->name.c_str())) { this->final_state(); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) AsyncAccessManager::add_interest: ") + ACE_TEXT ("server = <%C>, server is alive\n"), + this->info_->name.c_str())); return; } } @@ -68,7 +71,7 @@ AsyncAccessManager::add_interest (ImR_ResponseHandler *rh) // the pinger and will delete itself when done. AsyncLiveListener *l = 0; ACE_NEW (l, AsyncLiveListener (this->info_->name.c_str(), - *this, + this, this->locator_.pinger())); if (!l->start()) { @@ -140,7 +143,8 @@ AsyncAccessManager::final_state (void) if (this->info_->activation_mode == ImplementationRepository::PER_CLIENT || this->status_ != AAM_SERVER_READY) { - this->locator_.remove_aam (this); + AsyncAccessManager_ptr aam (this); + this->locator_.remove_aam (aam); } } @@ -179,6 +183,13 @@ AsyncAccessManager::activator_replied (bool success) } void +AsyncAccessManager::server_is_shutting_down (void) +{ + this->status (AAM_SERVER_DEAD); + this->final_state (); +} + +void AsyncAccessManager::server_is_running (const char *partial_ior) { if (this->locator_.debug() > 0) @@ -201,7 +212,7 @@ AsyncAccessManager::server_is_running (const char *partial_ior) // the pinger and will delete itself when done. AsyncLiveListener *l = 0; ACE_NEW (l, AsyncLiveListener (this->info_->name.c_str(), - *this, + this, this->locator_.pinger())); if (!l->start()) { @@ -282,17 +293,21 @@ AsyncAccessManager::send_start_request (void) return true; } -void +AsyncAccessManager * AsyncAccessManager::add_ref (void) { - ACE_GUARD (TAO_SYNCH_MUTEX, mon, this->lock_); + ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, 0); ++this->refcount_; + + ACE_DEBUG ((LM_DEBUG, "AAM (%x): add_ref count now = %d\n", this, this->refcount_)); + return this; } void AsyncAccessManager::remove_ref (void) { ACE_GUARD (TAO_SYNCH_MUTEX, mon, this->lock_); + ACE_DEBUG ((LM_DEBUG, "AAM (%x): remove_ref count pre decr = %d\n", this, this->refcount_)); if (--this->refcount_ == 0) { delete this; @@ -302,18 +317,134 @@ AsyncAccessManager::remove_ref (void) //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- +AsyncAccessManager_ptr::AsyncAccessManager_ptr (void) + : val_ (0) +{ +} + +AsyncAccessManager_ptr::AsyncAccessManager_ptr (AsyncAccessManager *aam) + :val_ (aam) +{ +} + +AsyncAccessManager_ptr::AsyncAccessManager_ptr (const AsyncAccessManager_ptr &aam_ptr) + :val_ (aam_ptr.clone()) +{ +} + +AsyncAccessManager_ptr::~AsyncAccessManager_ptr (void) +{ + if (val_ != 0) + { + val_->remove_ref(); + } +} + +AsyncAccessManager_ptr & +AsyncAccessManager_ptr::operator= (const AsyncAccessManager_ptr &aam_ptr) +{ + if (val_ != *aam_ptr) + { + if (val_ != 0) + { + val_->remove_ref(); + } + val_ = aam_ptr.clone(); + } + return *this; +} + +AsyncAccessManager_ptr & +AsyncAccessManager_ptr::operator= (AsyncAccessManager *aam) +{ + if (val_ != aam) + { + if (val_ != 0) + { + val_->remove_ref(); + } + val_ = aam; + } + return *this; +} + +const AsyncAccessManager * +AsyncAccessManager_ptr::operator-> () const +{ + return val_; +} + +const AsyncAccessManager * +AsyncAccessManager_ptr::operator* () const +{ + return val_; +} + +AsyncAccessManager * +AsyncAccessManager_ptr::operator-> () +{ + return val_; +} + +AsyncAccessManager * +AsyncAccessManager_ptr::operator* () +{ + return val_; +} + +bool +AsyncAccessManager_ptr::operator== (const AsyncAccessManager_ptr &aam_ptr) const +{ + return val_ == *aam_ptr; +} + +bool +AsyncAccessManager_ptr::operator== (const AsyncAccessManager *aam) const +{ + return val_ == aam; +} + +AsyncAccessManager * +AsyncAccessManager_ptr::clone (void) const +{ + if (val_ != 0) + { + val_->add_ref(); + } + return val_; +} + +AsyncAccessManager * +AsyncAccessManager_ptr::_retn (void) +{ + AsyncAccessManager * aam = val_; + val_ = 0; + return aam; +} + +void +AsyncAccessManager_ptr::assign (AsyncAccessManager *aam) +{ + if (val_ != 0) + { + val_->remove_ref(); + } + val_ = aam; +} + +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- + ActivatorReceiver::ActivatorReceiver (AsyncAccessManager *aam, PortableServer::POA_ptr poa) - :aam_ (aam), + :aam_ (aam->add_ref ()), poa_ (PortableServer::POA::_duplicate (poa)) { - this->aam_->add_ref (); } ActivatorReceiver::~ActivatorReceiver (void) { - this->aam_->remove_ref (); } void @@ -349,19 +480,19 @@ ActivatorReceiver::shutdown_excep (Messaging::ExceptionHolder * ) //--------------------------------------------------------------------------- AsyncLiveListener::AsyncLiveListener (const char *server, - AsyncAccessManager &aam, + AsyncAccessManager *aam, LiveCheck &pinger) :LiveListener (server), - aam_ (aam), + aam_ (aam->add_ref ()), pinger_ (pinger), status_ (LS_UNKNOWN) { - this->aam_.add_ref (); + ACE_DEBUG ((LM_DEBUG, "AsyncLiveListener ctor, this = %x\n", this)); } AsyncLiveListener::~AsyncLiveListener (void) { - this->aam_.remove_ref (); + ACE_DEBUG ((LM_DEBUG, "AsyncLiveListener dtor, this = %x\n", this)); } bool @@ -381,23 +512,14 @@ AsyncLiveListener::status_changed (LiveStatus status) this->status_ = status; if (status == LS_TRANSIENT) { - if (!this->pinger_.add_listener (this)) - { - ACE_DEBUG ((LM_DEBUG, - "AsyncLiveListener::status_changed, deleting(1)\n")); - this->aam_.ping_replied (status); - delete this; - return true; - } return false; } else { ACE_DEBUG ((LM_DEBUG, - "AsyncLiveListener::status_changed, status = %d, deleting(2)\n", status)); - this->aam_.ping_replied (status); + "AsyncLiveListener::status_changed, status = %d, deleting(%x)\n", status, this)); + this->aam_->ping_replied (status); delete this; - return true; } return true; } diff --git a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h index 20c1861af73..3ffe1530895 100644 --- a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h +++ b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h @@ -28,6 +28,21 @@ class ImR_Locator_i; class ImR_ReplyHandler; struct Server_Info; + +enum AAM_Status + { + AAM_INIT, + AAM_ACTIVATION_SENT, + AAM_WAIT_FOR_RUNNING, + AAM_WAIT_FOR_PING, + AAM_WAIT_FOR_ALIVE, + AAM_SERVER_READY, + AAM_SERVER_DEAD, + AAM_NOT_MANUAL, + AAM_NO_ACTIVATOR, + AAM_NO_COMMANDLINE + }; + //---------------------------------------------------------------------------- /* * @class AsyncAccessManager @@ -48,20 +63,6 @@ struct Server_Info; * will have its own AAM instance. */ -enum AAM_Status - { - AAM_INIT, - AAM_ACTIVATION_SENT, - AAM_WAIT_FOR_RUNNING, - AAM_WAIT_FOR_PING, - AAM_WAIT_FOR_ALIVE, - AAM_SERVER_READY, - AAM_SERVER_DEAD, - AAM_NOT_MANUAL, - AAM_NO_ACTIVATOR, - AAM_NO_COMMANDLINE - }; - class AsyncAccessManager { public: @@ -78,9 +79,10 @@ class AsyncAccessManager void activator_replied (bool success); void server_is_running (const char *partial_ior); + void server_is_shutting_down (void); void ping_replied (LiveStatus server); - void add_ref (void); + AsyncAccessManager *add_ref (void); void remove_ref (void); private: @@ -100,7 +102,31 @@ class AsyncAccessManager TAO_SYNCH_MUTEX lock_; }; +class AsyncAccessManager_ptr +{ +public: + AsyncAccessManager_ptr (void); + AsyncAccessManager_ptr (AsyncAccessManager *aam); + AsyncAccessManager_ptr (const AsyncAccessManager_ptr &aam_ptr); + ~AsyncAccessManager_ptr (void); + + AsyncAccessManager_ptr &operator = (const AsyncAccessManager_ptr &aam_ptr); + AsyncAccessManager_ptr &operator = (AsyncAccessManager *aam); + const AsyncAccessManager * operator-> () const; + const AsyncAccessManager * operator* () const; + AsyncAccessManager * operator-> (); + AsyncAccessManager * operator* (); + bool operator== (const AsyncAccessManager_ptr &aam_ptr) const; + bool operator== (const AsyncAccessManager *aam) const; + AsyncAccessManager * clone (void) const; + AsyncAccessManager * _retn (void); + + void assign (AsyncAccessManager *aam); + +private: + AsyncAccessManager * val_; +}; //---------------------------------------------------------------------------- /* @@ -114,7 +140,8 @@ class ActivatorReceiver : public virtual POA_ImplementationRepository::AMI_ActivatorHandler { public: - ActivatorReceiver (AsyncAccessManager *aam, PortableServer::POA_ptr poa); + ActivatorReceiver (AsyncAccessManager *aam, + PortableServer::POA_ptr poa); virtual ~ActivatorReceiver (void); void start_server (void); @@ -124,7 +151,7 @@ public: void shutdown_excep (Messaging::ExceptionHolder * excep_holder); private: - AsyncAccessManager *aam_; + AsyncAccessManager_ptr aam_; PortableServer::POA_var poa_; }; @@ -137,7 +164,7 @@ class AsyncLiveListener : public LiveListener { public: AsyncLiveListener (const char * server, - AsyncAccessManager &aam, + AsyncAccessManager *aam, LiveCheck &pinger); virtual ~AsyncLiveListener (void); bool start (void); @@ -145,7 +172,7 @@ class AsyncLiveListener : public LiveListener bool status_changed (LiveStatus status); private: - AsyncAccessManager &aam_; + AsyncAccessManager_ptr aam_; LiveCheck &pinger_; LiveStatus status_; }; diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp index db27f743f34..2370a7080a6 100644 --- a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp @@ -219,6 +219,8 @@ ImR_Locator_i::shutdown (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, CORBA::Boolean activators, CORBA::Boolean servers) { + this->pinger_.shutdown (); + this->aam_set_.reset (); if (servers != 0 && this->repository_->servers ().current_size () > 0) { // Note : shutdown is oneway, so we can't throw @@ -490,22 +492,29 @@ ImR_Locator_i::activate_server_i (UpdateableServerInfo& info, bool manual_start, ImR_ResponseHandler *rh) { - AsyncAccessManager *aam = 0; + AsyncAccessManager_ptr aam; if (info->activation_mode == ImplementationRepository::PER_CLIENT) { - ACE_NEW (aam, AsyncAccessManager (*info, manual_start, *this)); - this->aam_set_.insert (aam); + AsyncAccessManager *aam_raw; + ACE_NEW (aam_raw, AsyncAccessManager (*info, manual_start, *this)); + aam = aam_raw; + int result = this->aam_set_.insert (aam); + ACE_DEBUG ((LM_DEBUG, "ImR_Locator_i::activate_server_i(PC) insert_aam returned %d\n", result)); } else { aam = this->find_aam (info->name.c_str()); - if (aam == 0) + if (*aam == 0) { - ACE_NEW (aam, AsyncAccessManager (*info, manual_start, *this)); - this->aam_set_.insert (aam); + AsyncAccessManager *aam_raw; + ACE_NEW (aam_raw, AsyncAccessManager (*info, manual_start, *this)); + aam = aam_raw; + int result = this->aam_set_.insert (aam); + ACE_DEBUG ((LM_DEBUG, "ImR_Locator_i::activate_server_i insert_aam returned %d\n", result)); } } aam->add_interest (rh); + ACE_DEBUG ((LM_DEBUG, "ImR_Locator_i::activate_server_i returning\n")); } CORBA::Object_ptr @@ -915,9 +924,10 @@ ImR_Locator_i::server_is_running info.update_repo(); } - AsyncAccessManager *aam = this->find_aam (name.c_str()); - if (aam != 0) + AsyncAccessManager_ptr aam(this->find_aam (name.c_str())); + if (*aam != 0) aam->server_is_running (partial_ior); + ACE_DEBUG ((LM_DEBUG, "Server_Is_Running, aam ptr should die\n")); } _tao_rh->server_is_running (); } @@ -948,12 +958,14 @@ ImR_Locator_i::server_is_shutting_down server)); this->pinger_.remove_server (server); - AsyncAccessManager *aam = this->find_aam (server); - if (aam != 0) - { - this->remove_aam (aam); - } - + { + AsyncAccessManager_ptr aam = this->find_aam (server); + if (*aam != 0) + { + aam->server_is_shutting_down (); + this->remove_aam (aam); + } + } info.edit ()->reset (); _tao_rh->server_is_shutting_down (); } @@ -1271,10 +1283,10 @@ ImR_Locator_i::root_poa (void) } void -ImR_Locator_i::remove_aam (AsyncAccessManager *aam) +ImR_Locator_i::remove_aam (AsyncAccessManager_ptr &aam) { + ACE_DEBUG ((LM_DEBUG, "ImR_Locator_i::remove_aam called\n")); this->aam_set_.remove (aam); - aam->remove_ref(); } AsyncAccessManager * @@ -1284,11 +1296,12 @@ ImR_Locator_i::find_aam (const char *name) !i.done(); i.advance ()) { - AsyncAccessManager **entry = 0; - i.next(entry); - if (*entry != 0 && (*entry)->has_server (name)) + AsyncAccessManager_ptr *entry = 0; + i.next (entry); + if (*(*entry) != 0 && (*entry)->has_server (name)) { - return (*entry); + ACE_DEBUG ((LM_DEBUG, "ImR_Locator_i::find_aam add ref and return\n")); + return (*entry)._retn()->add_ref(); } } return 0; diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h index 53ae2e8fb69..409347df184 100644 --- a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h +++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h @@ -139,7 +139,7 @@ public: PortableServer::POA_ptr root_poa (void); Activator_Info_Ptr get_activator (const ACE_CString& name); - void remove_aam (AsyncAccessManager *aam); + void remove_aam (AsyncAccessManager_ptr &aam); AsyncAccessManager *find_aam (const char *name); private: @@ -183,7 +183,7 @@ private: LiveCheck pinger_; /// A collection of asynch activator instances - typedef ACE_Unbounded_Set<AsyncAccessManager *> AAM_Set; + typedef ACE_Unbounded_Set<AsyncAccessManager_ptr> AAM_Set; AAM_Set aam_set_; CORBA::ORB_var orb_; diff --git a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp index f5087bfdffb..4368c369237 100644 --- a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp @@ -105,6 +105,8 @@ LiveEntry::status (LiveStatus l) ACE_DEBUG ((LM_DEBUG, "LiveEntry(%s)::status updating listeners, size = %d\n", this->server_.c_str(), this->listeners_.size())); + Listen_Set remove; + LiveStatus ls = this->liveliness_; if (ls == LS_TRANSIENT && ! this->reping_available()) ls = LS_LAST_TRANSIENT; @@ -118,12 +120,26 @@ LiveEntry::status (LiveStatus l) { if ((*ll)->status_changed (this->liveliness_)) { - ACE_GUARD (TAO_SYNCH_MUTEX, mon, this->lock_); - this->listeners_.remove (*ll); + remove.insert (*ll); } } } + { + ACE_GUARD (TAO_SYNCH_MUTEX, mon, this->lock_); + for (Listen_Set::ITERATOR i (remove); + !i.done(); + i.advance ()) + { + LiveListener **ll = 0; + i.next (ll); + if (*ll != 0) + { + this->listeners_.remove (*ll); + } + } + } + if (this->listeners_.size() > 0) { this->owner_->schedule_ping (this); @@ -267,7 +283,8 @@ PingReceiver::ping_excep (Messaging::ExceptionHolder * excep_holder) //--------------------------------------------------------------------------- LiveCheck::LiveCheck () - :ping_interval_() + :ping_interval_(), + running_ (false) { } @@ -292,6 +309,14 @@ LiveCheck::init (CORBA::ORB_ptr orb, this->reactor (r); CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA"); this->poa_ = PortableServer::POA::_narrow (obj.in()); + this->running_ = true; +} + +void +LiveCheck::shutdown (void) +{ + this->running_ = false; + this->reactor()->cancel_timer (this); } const ACE_Time_Value & @@ -304,7 +329,10 @@ int LiveCheck::handle_timeout (const ACE_Time_Value &, const void *) { - ACE_DEBUG ((LM_DEBUG, "LiveCheck::handle_timeout\n")); + ACE_DEBUG ((LM_DEBUG, "LiveCheck::handle_timeout running = %d\n", this->running_)); + if (!this->running_) + return -1; + bool want_reping = false; ACE_Time_Value next; for (LiveEntryMap::iterator le (this->entry_map_); @@ -373,6 +401,9 @@ void LiveCheck::add_server (const char *server, ImplementationRepository::ServerObject_ptr ref) { + if (!this->running_) + return; + ACE_CString s (server); LiveEntry *entry = 0; ACE_NEW (entry, LiveEntry (this, server, ref)); @@ -405,6 +436,9 @@ bool LiveCheck::add_per_client_listener (LiveListener *l, ImplementationRepository::ServerObject_ptr ref) { + if (!this->running_) + return false; + LiveEntry *entry = 0; ACE_NEW_RETURN (entry, LiveEntry (this, 0, ref), false); if (this->per_client_.push(entry) == 0) @@ -419,6 +453,9 @@ LiveCheck::add_per_client_listener (LiveListener *l, bool LiveCheck::add_listener (LiveListener *l) { + if (!this->running_) + return false; + LiveEntry *entry = 0; ACE_CString key (l->server()); int result = entry_map_.find (key, entry); @@ -435,6 +472,9 @@ LiveCheck::add_listener (LiveListener *l) void LiveCheck::schedule_ping (LiveEntry *entry) { + if (!this->running_) + return; + ACE_Time_Value now (ACE_OS::time()); ACE_Time_Value next = entry->next_check (); @@ -455,6 +495,9 @@ LiveCheck::schedule_ping (LiveEntry *entry) LiveStatus LiveCheck::is_alive (const char *server) { + if (!this->running_) + return LS_DEAD; + if (this->ping_interval_ == ACE_Time_Value::zero) { return LS_ALIVE; diff --git a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h index 64ccad0e7fa..db658905c04 100644 --- a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h +++ b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h @@ -165,6 +165,7 @@ class Locator_Export LiveCheck : public ACE_Event_Handler ~LiveCheck (void); void init (CORBA::ORB_ptr orb, const ACE_Time_Value &interval); + void shutdown (void); int handle_timeout (const ACE_Time_Value ¤t_time, const void *act = 0); @@ -199,6 +200,7 @@ class Locator_Export LiveCheck : public ACE_Event_Handler PerClientStack per_client_; PortableServer::POA_var poa_; ACE_Time_Value ping_interval_; + bool running_; }; #endif /* IMR_LIVECHECK_H_ */ diff --git a/TAO/utils/logWalker/Log.cpp b/TAO/utils/logWalker/Log.cpp index f01a59df9ef..d41453a67a5 100644 --- a/TAO/utils/logWalker/Log.cpp +++ b/TAO/utils/logWalker/Log.cpp @@ -606,11 +606,13 @@ Log::parse_handler_open_i (bool is_ssl) // else // ACE_DEBUG ((LM_DEBUG,"%d: handler_open: no match waiter addr = %s\n", // this->offset_, (waiter == 0 ? "<null>" : waiter->server_addr().c_str()) )); - } } - else + + if (pp == 0) { + // ACE_DEBUG ((LM_DEBUG,"%d: handler_open: calling pop_new_connection, addr = %s\n", + // this->offset_, addr)); pp = this->thr_->pop_new_connection(); } if (pp == 0) |