Merge pull request #4 from stefan-egli/SLING-10441
SLING-10441 : use dedicated 'discovery' thread pool for scheduler ins…
diff --git a/pom.xml b/pom.xml
index 138bbe0..d188796 100644
--- a/pom.xml
+++ b/pom.xml
@@ -182,7 +182,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.discovery.commons</artifactId>
- <version>1.0.20</version>
+ <version>1.0.23-SNAPSHOT</version>
</dependency>
<!-- besides including discovery.commons' normal jar above,
for testing a few test helper classes are also reused.
@@ -190,7 +190,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.discovery.commons</artifactId>
- <version>1.0.20</version>
+ <version>1.0.23-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -201,9 +201,9 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.scheduler</artifactId>
- <version>2.3.4</version>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.scheduler</artifactId>
+ <version>2.5.0</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java b/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java
index aa42e94..1eaf2a3 100644
--- a/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java
+++ b/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java
@@ -20,7 +20,6 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -178,7 +177,7 @@
// 'fireJob' checks for a job from the same job-class to already exist
// 'fireJobAt' though allows to pass a name for the job - which can be made unique, thus does not conflict/already-exist
logger.info("triggerAsyncConnectorPing: firing job to trigger heartbeat");
- getScheduler().fireJobAt(NAME+UUID.randomUUID(), this, null, new Date(System.currentTimeMillis()-1000 /* make sure it gets triggered immediately*/));
+ getScheduler().schedule(this, getScheduler().NOW().name(NAME+UUID.randomUUID()));
} catch (Exception e) {
logger.info("triggerAsyncConnectorPing: Could not trigger heartbeat: " + e);
}
diff --git a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java
index c3c55f7..15eee4b 100644
--- a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java
+++ b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java
@@ -22,9 +22,6 @@
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.commons.scheduler.Scheduler;
-import org.apache.sling.commons.scheduler.impl.QuartzScheduler;
-import org.apache.sling.commons.threads.ThreadPoolManager;
-import org.apache.sling.commons.threads.impl.DefaultThreadPoolManager;
import org.apache.sling.discovery.base.commons.BaseDiscoveryService;
import org.apache.sling.discovery.base.commons.ClusterViewService;
import org.apache.sling.discovery.base.commons.ViewChecker;
@@ -34,30 +31,18 @@
import org.apache.sling.discovery.base.connectors.ping.ConnectorRegistryImpl;
import org.apache.sling.discovery.base.its.setup.mock.ArtificialDelay;
import org.apache.sling.discovery.base.its.setup.mock.FailingScheduler;
+import org.apache.sling.discovery.commons.providers.base.DummyScheduler;
import org.apache.sling.discovery.commons.providers.spi.base.DummySlingSettingsService;
import org.apache.sling.settings.SlingSettingsService;
-import junitx.util.PrivateAccessor;
-
public abstract class VirtualInstanceBuilder {
private static Scheduler singletonScheduler = null;
public static Scheduler getSingletonScheduler() throws Exception {
- if (singletonScheduler!=null) {
- return singletonScheduler;
+ if (singletonScheduler == null) {
+ singletonScheduler = new DummyScheduler();
}
- final Scheduler newscheduler = new QuartzScheduler();
- final ThreadPoolManager tpm = new DefaultThreadPoolManager(null, null);
- try {
- PrivateAccessor.invoke(newscheduler, "bindThreadPoolManager",
- new Class[] { ThreadPoolManager.class },
- new Object[] { tpm });
- } catch (Throwable e1) {
- org.junit.Assert.fail(e1.toString());
- }
- OSGiMock.activate(newscheduler);
- singletonScheduler = newscheduler;
return singletonScheduler;
}
diff --git a/src/test/java/org/apache/sling/discovery/base/its/setup/mock/FailingScheduler.java b/src/test/java/org/apache/sling/discovery/base/its/setup/mock/FailingScheduler.java
index 726c713..bdd5893 100644
--- a/src/test/java/org/apache/sling/discovery/base/its/setup/mock/FailingScheduler.java
+++ b/src/test/java/org/apache/sling/discovery/base/its/setup/mock/FailingScheduler.java
@@ -23,10 +23,14 @@
import java.util.Map;
import java.util.NoSuchElementException;
+import org.apache.sling.commons.scheduler.ScheduleOptions;
import org.apache.sling.commons.scheduler.Scheduler;
+import org.mockito.Mockito;
public class FailingScheduler implements Scheduler {
+ private final ScheduleOptions options = Mockito.mock(ScheduleOptions.class);
+
@Override
public void removeJob(String name) throws NoSuchElementException {
// nothing to do here
@@ -69,4 +73,41 @@
boolean canRunConcurrently) throws Exception {
throw new Exception("cos you are really worth it");
}
+
+ @Override
+ public boolean schedule(Object job, ScheduleOptions options) {
+ // fails on purpose
+ return false;
+ }
+
+ @Override
+ public boolean unschedule(String jobName) {
+ // fails on purpose
+ return false;
+ }
+
+ @Override
+ public ScheduleOptions NOW() {
+ return options;
+ }
+
+ @Override
+ public ScheduleOptions NOW(int times, long period) {
+ return options;
+ }
+
+ @Override
+ public ScheduleOptions AT(Date date) {
+ return options;
+ }
+
+ @Override
+ public ScheduleOptions AT(Date date, int times, long period) {
+ return options;
+ }
+
+ @Override
+ public ScheduleOptions EXPR(String expression) {
+ return options;
+ }
}
\ No newline at end of file