diff options
Diffstat (limited to 'java/src/Ice/ObjectPrxHelper.java')
-rw-r--r-- | java/src/Ice/ObjectPrxHelper.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/java/src/Ice/ObjectPrxHelper.java b/java/src/Ice/ObjectPrxHelper.java index 8934f0ba70c..6be7a09f3bb 100644 --- a/java/src/Ice/ObjectPrxHelper.java +++ b/java/src/Ice/ObjectPrxHelper.java @@ -495,10 +495,16 @@ public class ObjectPrxHelper implements ObjectPrx } } - public final synchronized int + public final int __handleException(LocalException ex, int cnt) { - _delegate = null; + // + // Only _delegate needs to be mutex protected here. + // + synchronized(this) + { + _delegate = null; + } try { @@ -553,8 +559,7 @@ public class ObjectPrxHelper implements ObjectPrx if(cnt > 0) { // - // Sleep before retrying. TODO: is it safe to sleep here - // with the mutex locked? + // Sleep before retrying. // try { @@ -587,6 +592,11 @@ public class ObjectPrxHelper implements ObjectPrx throw new LocationForwardIdentityException(); } + // + // TODO: BENOIT: This is not thread-safe. Everywhere else in the + // code, _reference is considered immutable and is not mutex + // protected. + // _reference = _reference.changeAdapterId(h.__reference().adapterId); _reference = _reference.changeEndpoints(h.__reference().endpoints); |