From 1552d093786156ccb43eb488a120fb854021f986 Mon Sep 17 00:00:00 2001 From: Arno Noordover Date: Sun, 29 May 2016 12:47:05 +0200 Subject: [PATCH 1/2] CAMEL-9826: used CountDownLatch to wait for stop --- .../component/mongodb/MongoDbTailingProcess.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java index 2eaf6e1f16a53..ed11b6d6778d2 100644 --- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java +++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java @@ -39,6 +39,7 @@ public class MongoDbTailingProcess implements Runnable { public volatile boolean keepRunning = true; public volatile boolean stopped; // = false + private volatile CountDownLatch stoppedLatch; private final DBCollection dbCol; private final MongoDbEndpoint endpoint; @@ -98,6 +99,7 @@ public void initializeProcess() throws Exception { */ @Override public void run() { + stoppedLatch = new CountDownLatch(1); while (keepRunning) { doRun(); // if the previous call didn't return because we have stopped running, then regenerate the cursor @@ -120,6 +122,7 @@ public void run() { } stopped = true; + stoppedLatch.countDown(); } protected void stop() throws Exception { @@ -131,8 +134,7 @@ protected void stop() throws Exception { if (cursor != null) { cursor.close(); } - // wait until the main loop acknowledges the stop - while (!stopped) { } + awaitStopped(); if (LOG.isInfoEnabled()) { LOG.info("Stopped MongoDB Tailable Cursor consumer, bound to collection: {}", "db: " + dbCol.getDB() + ", col: " + dbCol.getName()); } @@ -183,4 +185,12 @@ private DBCursor initializeCursor() { } return answer; } + + private void awaitStopped() throws InterruptedException { + if (!stopped) { + LOG.info("Going to wait for stopping"); + stoppedLatch.await(); + } + } + } From 100ce2487a0f627795055c3d4f73d4c1897d1ab2 Mon Sep 17 00:00:00 2001 From: Arno Noordover Date: Sun, 29 May 2016 13:13:32 +0200 Subject: [PATCH 2/2] CAMEL-9826: Remove import --- .../apache/camel/component/mongodb/MongoDbTailingProcess.java | 1 - 1 file changed, 1 deletion(-) diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java index ed11b6d6778d2..40a4a66a9ad3d 100644 --- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java +++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbTailingProcess.java @@ -18,7 +18,6 @@ package org.apache.camel.component.mongodb; import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; import com.mongodb.BasicDBObject; import com.mongodb.Bytes;