summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/ObjectAdapterFactory.java
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2003-09-04 02:11:46 +0000
committerMichi Henning <michi@zeroc.com>2003-09-04 02:11:46 +0000
commit5ecbdf0ebe5efd151129d4422b30b7aefe11f9db (patch)
treefca4840b748039de1d06e78170bb3c6ca23f6933 /java/src/IceInternal/ObjectAdapterFactory.java
parentFixed IcePack test cleaning (diff)
downloadice-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.java21
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;
}
//