summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2008-09-26 07:00:14 +0200
committerBenoit Foucher <benoit@zeroc.com>2008-09-26 07:00:14 +0200
commitb19987ad1a324152a279cfe845bd4309e8adbad5 (patch)
tree6a2990ecc8782faccee810587bd5f68965b378c4 /cpp/src
parentFixed potential IceGrid node hang on shutdown (diff)
downloadice-b19987ad1a324152a279cfe845bd4309e8adbad5.tar.bz2
ice-b19987ad1a324152a279cfe845bd4309e8adbad5.tar.xz
ice-b19987ad1a324152a279cfe845bd4309e8adbad5.zip
Fixed locator potential hang when resolving round-robin replica group which could occur if the replica group was removed and added again
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceGrid/LocatorI.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/cpp/src/IceGrid/LocatorI.cpp b/cpp/src/IceGrid/LocatorI.cpp
index 18d9808df34..3fbe3a146f1 100644
--- a/cpp/src/IceGrid/LocatorI.cpp
+++ b/cpp/src/IceGrid/LocatorI.cpp
@@ -687,7 +687,14 @@ LocatorI::removePendingResolve(const string& adapterId, int roundRobinCount)
//
if(roundRobinCount > 0)
{
- _database->getAdapter(adapterId)->increaseRoundRobinCount(roundRobinCount);
+ try
+ {
+ _database->getAdapter(adapterId)->increaseRoundRobinCount(roundRobinCount);
+ }
+ catch(const Ice::Exception&)
+ {
+ // Ignore.
+ }
}
map<string, deque<Ice::AMD_Locator_findAdapterByIdPtr> >::iterator p = _resolves.find(adapterId);