diff --git a/OpenICF-java-framework/connector-framework-internal/src/main/java/org/identityconnectors/framework/impl/api/local/operations/SubscriptionImpl.java b/OpenICF-java-framework/connector-framework-internal/src/main/java/org/identityconnectors/framework/impl/api/local/operations/SubscriptionImpl.java index 16da473a0..e47cae9d7 100644 --- a/OpenICF-java-framework/connector-framework-internal/src/main/java/org/identityconnectors/framework/impl/api/local/operations/SubscriptionImpl.java +++ b/OpenICF-java-framework/connector-framework-internal/src/main/java/org/identityconnectors/framework/impl/api/local/operations/SubscriptionImpl.java @@ -163,19 +163,20 @@ public Subscription executeBatch(final List tasks, final Observer batchTasks = batch.build(); - Subscription sub = facade.executeBatch(batchTasks, observer, options); - assertNotNull(sub.getReturnValue()); + final Subscription sub = facade.executeBatch(batchTasks, observer, options); + try { + assertNotNull(sub.getReturnValue()); - final long timeout = System.currentTimeMillis() + 3000; - while (!isComplete.get() && System.currentTimeMillis() < timeout) { - Thread.sleep(100); - } + final long timeout = System.currentTimeMillis() + 3000; + while (!isComplete.get() && System.currentTimeMillis() < timeout) { + Thread.sleep(100); + } - assertEquals(results.size(), batchTasks.size()); - assertTrue(isComplete.get()); - assertFalse(hasError.get()); + assertEquals(results.size(), batchTasks.size()); + assertTrue(isComplete.get()); + assertFalse(hasError.get()); - sub = facade.queryBatch((BatchToken) sub.getReturnValue(), observer, options); - assertNull(sub.getReturnValue()); + final Subscription query = facade.queryBatch((BatchToken) sub.getReturnValue(), observer, options); + try { + assertNull(query.getReturnValue()); + } finally { + query.close(); + } + } finally { + // the subscription holds a pooled connector until it is closed + sub.close(); + } } @Test @@ -435,17 +444,22 @@ public void onNext(BatchResult batchResult) { } }; - Subscription sub = facade.executeBatch(batch.build(), observer, options); - assertEquals(results.size(), 0); - assertFalse(isComplete.get()); - assertFalse(hasError.get()); - assertNotNull(sub.getReturnValue()); + final Subscription sub = facade.executeBatch(batch.build(), observer, options); + try { + assertNotNull(sub.getReturnValue()); - Thread.sleep(500); + final long timeout = System.currentTimeMillis() + 3000; + while (!hasError.get() && System.currentTimeMillis() < timeout) { + Thread.sleep(100); + } - assertEquals(results.size(), 2); - assertFalse(isComplete.get()); - assertTrue(hasError.get()); + assertEquals(results.size(), 2); + assertFalse(isComplete.get()); + assertTrue(hasError.get()); + } finally { + // the subscription holds a pooled connector until it is closed + sub.close(); + } } @Test