]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/AsyncBarrierImpl.java
Multiple reader thread support for db client
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / graph / AsyncBarrierImpl.java
index 7184acbc5242de4029abe6606eb806e37f424193..229c3d6a9e965b5b14167896334c2e83b1b2508a 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * Copyright (c) 2007, 2018 Association for Decentralized Information Management
  * in Industry THTH ry.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -20,8 +20,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.simantics.db.common.utils.Logger;
 import org.simantics.db.exception.RuntimeDatabaseException;
 import org.simantics.db.impl.query.QueryProcessor.AsyncBarrier;
-import org.simantics.db.impl.query.QueryProcessor.SessionTask;
-import org.simantics.utils.Development;
 
 final public class AsyncBarrierImpl extends AtomicInteger implements AsyncBarrier {
 
@@ -39,6 +37,8 @@ final public class AsyncBarrierImpl extends AtomicInteger implements AsyncBarrie
 
        final private AsyncBarrierImpl caller;
 
+       //private final Semaphore sema = new Semaphore(0);
+
        public AsyncBarrierImpl(AsyncBarrierImpl caller) {
                super(0);
                if (BOOKKEEPING) {
@@ -294,7 +294,7 @@ final public class AsyncBarrierImpl extends AtomicInteger implements AsyncBarrie
 
                        while (get() != 0) {
 
-                               boolean executed = impl.processor.resume(impl);
+                               boolean executed = impl.performPending();
                                if(executed) waitCount = 0;
                                
                                ++waitCount;
@@ -321,18 +321,16 @@ final public class AsyncBarrierImpl extends AtomicInteger implements AsyncBarrie
 
                                        }
 
-                                       if(Development.DEVELOPMENT) {
-
-                                               impl.processor.threadLocks[0].lock();
-                                               System.err.println("-queues=" + impl.processor.queues[0].size());
-                                               impl.processor.threadLocks[0].unlock();
-                                               System.err.println("-own=" + impl.processor.ownTasks[0].size());
-                                               System.err.println("-ownSync=" + impl.processor.ownSyncTasks[0].size());
-                                               for(SessionTask task : impl.processor.ownSyncTasks[0]) {
-                                                       System.err.println("--" + task);
-                                               }
-
-                                       }
+//                                     if(Development.DEVELOPMENT) {
+//                                             impl.processor.threadLocks[0].lock();
+//                                             System.err.println("-queues=" + impl.processor.queues[0].size());
+//                                             impl.processor.threadLocks[0].unlock();
+//                                             System.err.println("-own=" + impl.processor.ownTasks[0].size());
+//                                             System.err.println("-ownSync=" + impl.processor.ownSyncTasks[0].size());
+//                                             for(SessionTask task : impl.processor.ownSyncTasks[0]) {
+//                                                     System.err.println("--" + task);
+//                                             }
+//                                     }
 
                                        throw new RuntimeDatabaseException("Request timed out.");
                                        //waitCount = 0;