killbill-memoizeit

See #355

8/20/2015 9:25:03 PM

Details

diff --git a/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidation.java b/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidation.java
index 776e6b1..6b3a2bb 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidation.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/api/TenantCacheInvalidation.java
@@ -42,6 +42,7 @@ import org.killbill.billing.tenant.glue.DefaultTenantModule;
 import org.killbill.billing.util.config.TenantConfig;
 import org.killbill.bus.api.PersistentBus;
 import org.killbill.bus.api.PersistentBus.EventBusException;
+import org.killbill.commons.concurrent.Executors;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -67,22 +68,21 @@ public class TenantCacheInvalidation {
 
     private final Map<TenantKey, CacheInvalidationCallback> cache;
     private final TenantBroadcastDao broadcastDao;
-    private final ScheduledExecutorService tenantExecutor;
     private final TenantConfig tenantConfig;
     private final PersistentBus eventBus;
     private final TenantDao tenantDao;
     private AtomicLong latestRecordIdProcessed;
     private volatile boolean isStopped;
 
+    private ScheduledExecutorService tenantExecutor;
+
     @Inject
     public TenantCacheInvalidation(@Named(DefaultTenantModule.NO_CACHING_TENANT) final TenantBroadcastDao broadcastDao,
-                                   @Named(DefaultTenantModule.TENANT_EXECUTOR_NAMED) final ScheduledExecutorService tenantExecutor,
                                    @Named(DefaultTenantModule.NO_CACHING_TENANT) final TenantDao tenantDao,
                                    final PersistentBus eventBus,
                                    final TenantConfig tenantConfig) {
         this.cache = new HashMap<TenantKey, CacheInvalidationCallback>();
         this.broadcastDao = broadcastDao;
-        this.tenantExecutor = tenantExecutor;
         this.tenantConfig = tenantConfig;
         this.tenantDao = tenantDao;
         this.eventBus = eventBus;
@@ -92,14 +92,11 @@ public class TenantCacheInvalidation {
     public void initialize() {
         final TenantBroadcastModelDao entry = broadcastDao.getLatestEntry();
         this.latestRecordIdProcessed = entry != null ? new AtomicLong(entry.getRecordId()) : new AtomicLong(0L);
-
+        this.tenantExecutor = Executors.newSingleThreadScheduledExecutor("TenantExecutor");
+        this.isStopped = false;
     }
 
     public void start() {
-        if (isStopped) {
-            logger.warn("TenantExecutor is in a stopped state, abort start sequence");
-            return;
-        }
         final TimeUnit pendingRateUnit = tenantConfig.getTenantBroadcastServiceRunningRate().getUnit();
         final long pendingPeriod = tenantConfig.getTenantBroadcastServiceRunningRate().getPeriod();
         tenantExecutor.scheduleAtFixedRate(new TenantCacheInvalidationRunnable(this, broadcastDao, tenantDao), pendingPeriod, pendingPeriod, pendingRateUnit);
diff --git a/tenant/src/main/java/org/killbill/billing/tenant/glue/DefaultTenantModule.java b/tenant/src/main/java/org/killbill/billing/tenant/glue/DefaultTenantModule.java
index 6770c67..af1c9f7 100644
--- a/tenant/src/main/java/org/killbill/billing/tenant/glue/DefaultTenantModule.java
+++ b/tenant/src/main/java/org/killbill/billing/tenant/glue/DefaultTenantModule.java
@@ -18,8 +18,6 @@
 
 package org.killbill.billing.tenant.glue;
 
-import java.util.concurrent.ScheduledExecutorService;
-
 import org.killbill.billing.glue.TenantModule;
 import org.killbill.billing.platform.api.KillbillConfigSource;
 import org.killbill.billing.tenant.api.DefaultTenantInternalApi;
@@ -46,8 +44,6 @@ public class DefaultTenantModule extends KillBillModule implements TenantModule 
 
     public static final String NO_CACHING_TENANT = "NoCachingTenant";
 
-    public static final String TENANT_EXECUTOR_NAMED = "TenantExecutor";
-
     public DefaultTenantModule(final KillbillConfigSource configSource) {
         super(configSource);
     }
@@ -79,11 +75,6 @@ public class DefaultTenantModule extends KillBillModule implements TenantModule 
         bind(TenantCacheInvalidation.class).asEagerSingleton();
     }
 
-    protected void installExecutor() {
-        final ScheduledExecutorService tenantExecutor = org.killbill.commons.concurrent.Executors.newSingleThreadScheduledExecutor("TenantExecutor");
-        bind(ScheduledExecutorService.class).annotatedWith(Names.named(TENANT_EXECUTOR_NAMED)).toInstance(tenantExecutor);
-    }
-
     @Override
     protected void configure() {
         installConfig();
@@ -91,6 +82,5 @@ public class DefaultTenantModule extends KillBillModule implements TenantModule 
         installTenantService();
         installTenantUserApi();
         installTenantCacheInvalidation();
-        installExecutor();
     }
 }