diff options
author | Phil Mesnier <mesnier_p@ociweb.com> | 2013-05-13 21:43:39 +0000 |
---|---|---|
committer | Phil Mesnier <mesnier_p@ociweb.com> | 2013-05-13 21:43:39 +0000 |
commit | 75207194593a32b13a9761ad2df65173da1d1102 (patch) | |
tree | b2ef27b07fd47b7861edb99450c34edfb30ab9b5 | |
parent | 2bb963bf5c40fec7ae800d59ac9fc55c426a83d5 (diff) | |
download | ATCD-75207194593a32b13a9761ad2df65173da1d1102.tar.gz |
Mon May 13 21:38:06 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r-- | TAO/ChangeLog | 8 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp | 11 |
2 files changed, 14 insertions, 5 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index be1f74fd8f4..c1cd517825b 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,11 @@ +Mon May 13 21:38:06 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com> + + * orbsvcs/ImplRepo_Service/AsyncListManager.cpp: + + Fix a deadlock condition where the lister is waiting for more + pings than it will receive because 1 or more target servers was + unpingable. + Mon May 13 19:12:59 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com> * orbsvcs/ImplRepo_Service/AsyncAccessManager.h: diff --git a/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp b/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp index 7a16a42750f..047c05fb53e 100644 --- a/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp @@ -145,6 +145,7 @@ AsyncListManager::list_i (CORBA::ULong start, CORBA::ULong how_many) it.advance (); } this->server_list_.length (len); + this->waiters_ = 0; for (CORBA::ULong i = 0; i < len; i++) { it.next (entry); @@ -175,16 +176,16 @@ AsyncListManager::list_i (CORBA::ULong start, CORBA::ULong how_many) this->server_list_[i].activeStatus = ImplementationRepository::ACTIVE_NO; } + else + { + this->waiters_++; + } } } - if (len == 0 || this->pinger_ == 0) + if (this->waiters_ == 0) { this->final_state (); } - else - { - this->waiters_ = len; - } } |