summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp8
-rw-r--r--java/src/Ice/ObjectAdapterI.java12
2 files changed, 15 insertions, 5 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp
index 8227753a4d4..94cc1baa354 100644
--- a/cpp/src/Ice/ObjectAdapterI.cpp
+++ b/cpp/src/Ice/ObjectAdapterI.cpp
@@ -526,9 +526,13 @@ Ice::ObjectAdapterI::getThreadPool() const
ServantManagerPtr
Ice::ObjectAdapterI::getServantManager() const
{
- IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
+ // No mutex lock necessary, _threadPool and _instance are
+ // immutable after creation until they are removed in
+ // waitForDeactivate().
- checkForDeactivation();
+ // Not check for deactivation here!
+
+ assert(_instance); // Must not be called after waitForDeactivate().
return _servantManager;
}
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java
index 04d0ced5a95..5b208d09d31 100644
--- a/java/src/Ice/ObjectAdapterI.java
+++ b/java/src/Ice/ObjectAdapterI.java
@@ -526,11 +526,17 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt
}
}
- public synchronized IceInternal.ServantManager
+ public IceInternal.ServantManager
getServantManager()
- {
- checkForDeactivation();
+ {
+ // No mutex lock necessary, _threadPool and _instance are
+ // immutable after creation until they are removed in
+ // waitForDeactivate().
+ // Not check for deactivation here!
+
+ assert(_instance != null); // Must not be called after waitForDeactivate().
+
return _servantManager;
}