diff options
author | Michi Henning <michi@zeroc.com> | 2003-09-04 02:11:46 +0000 |
---|---|---|
committer | Michi Henning <michi@zeroc.com> | 2003-09-04 02:11:46 +0000 |
commit | 5ecbdf0ebe5efd151129d4422b30b7aefe11f9db (patch) | |
tree | fca4840b748039de1d06e78170bb3c6ca23f6933 /java/src/IceInternal/ObjectAdapterFactory.java | |
parent | Fixed IcePack test cleaning (diff) | |
download | ice-5ecbdf0ebe5efd151129d4422b30b7aefe11f9db.tar.bz2 ice-5ecbdf0ebe5efd151129d4422b30b7aefe11f9db.tar.xz ice-5ecbdf0ebe5efd151129d4422b30b7aefe11f9db.zip |
Fixed race condition in flushBatchRequests(): connections that are not yet
validated are now ignored when flushing.
Diffstat (limited to 'java/src/IceInternal/ObjectAdapterFactory.java')
-rw-r--r-- | java/src/IceInternal/ObjectAdapterFactory.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/java/src/IceInternal/ObjectAdapterFactory.java b/java/src/IceInternal/ObjectAdapterFactory.java index 2f139d16740..edab241f2cc 100644 --- a/java/src/IceInternal/ObjectAdapterFactory.java +++ b/java/src/IceInternal/ObjectAdapterFactory.java @@ -149,18 +149,23 @@ public final class ObjectAdapterFactory return null; } - public synchronized Ice.ObjectAdapterI[] - adapters() + public void + flushBatchRequests() { java.util.LinkedList a = new java.util.LinkedList(); - java.util.Iterator i = _adapters.values().iterator(); - while(i.hasNext()) + synchronized(this) + { + java.util.Iterator i = _adapters.values().iterator(); + while(i.hasNext()) + { + a.add(i.next()); + } + } + java.util.Iterator p = a.iterator(); + while(p.hasNext()) { - a.add(i.next()); + ((Ice.ObjectAdapterI)p.next()).flushBatchRequests(); } - Ice.ObjectAdapterI[] arr = new Ice.ObjectAdapterI[a.size()]; - a.toArray(arr); - return arr; } // |