summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2013-05-13 21:43:39 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2013-05-13 21:43:39 +0000
commit759c54f0aad5a1e92cc03d431cf310a9cae61528 (patch)
treeb2ef27b07fd47b7861edb99450c34edfb30ab9b5
parent235705066ddad804a9c8dbb24402a2eabfc364ca (diff)
downloadATCD-759c54f0aad5a1e92cc03d431cf310a9cae61528.tar.gz
Mon May 13 21:38:06 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r--TAO/ChangeLog8
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp11
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;
- }
}