BUG-8858: remove sleeps from test driver
[controller.git] / opendaylight / md-sal / samples / clustering-test-app / provider / src / main / java / org / opendaylight / controller / clustering / it / provider / impl / FlappingSingletonService.java
index 5ca33ad51d63e268ce905a6cb87c44b9fb84dc81..cbc9a102000b7983b3cd349d85cbae24c67a642f 100644 (file)
@@ -10,9 +10,6 @@ package org.opendaylight.controller.clustering.it.provider.impl;
 
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
@@ -29,14 +26,11 @@ public class FlappingSingletonService implements ClusterSingletonService {
             ServiceGroupIdentifier.create("flapping-singleton-service");
 
     private final ClusterSingletonServiceProvider singletonServiceProvider;
+    private final AtomicBoolean active = new AtomicBoolean(true);
 
     private volatile long flapCount = 0;
-    private AtomicBoolean active = new AtomicBoolean(true);
-
     private volatile ClusterSingletonServiceRegistration registration;
 
-    private static ScheduledExecutorService EXECUTOR = Executors.newSingleThreadScheduledExecutor();
-
     public FlappingSingletonService(final ClusterSingletonServiceProvider singletonServiceProvider) {
         LOG.debug("Registering flapping-singleton-service.");
 
@@ -47,19 +41,14 @@ public class FlappingSingletonService implements ClusterSingletonService {
     @Override
     public void instantiateServiceInstance() {
         LOG.debug("Instantiating flapping-singleton-service.");
-
-        // TODO direct registration/close seem to trigger a bug in singleton state transitions,
-        // remove the whole executor shenanigans after it's fixed.
-        EXECUTOR.submit(() -> {
-            try {
-                registration.close();
-                registration = null;
-            } catch (final Exception e) {
-                LOG.warn("There was a problem closing flapping singleton service.", e);
-                setInactive();
-                flapCount = -flapCount;
-            }
-        });
+        try {
+            registration.close();
+            registration = null;
+        } catch (final Exception e) {
+            LOG.warn("There was a problem closing flapping singleton service.", e);
+            setInactive();
+            flapCount = -flapCount;
+        }
     }
 
     @Override
@@ -68,21 +57,14 @@ public class FlappingSingletonService implements ClusterSingletonService {
 
         flapCount++;
         if (active.get()) {
-            // TODO direct registration/close seem to trigger a bug in singleton state transitions,
-            // remove  whole executor shenanigans after it's fixed.
-            // Needs to be delayed slightly otherwise it's triggered as well.
-            EXECUTOR.schedule(() -> {
-                LOG.debug("Running re-registration");
-                try {
-                    registration =
-                            singletonServiceProvider.registerClusterSingletonService(this);
-                } catch (final Exception e) {
-                    LOG.warn("There was a problem re-registering flapping singleton service.", e);
-                    setInactive();
-                    flapCount = -flapCount - 1;
-                }
-
-            }, 200, TimeUnit.MILLISECONDS);
+            LOG.debug("Running re-registration");
+            try {
+                registration = singletonServiceProvider.registerClusterSingletonService(this);
+            } catch (final Exception e) {
+                LOG.warn("There was a problem re-registering flapping singleton service.", e);
+                setInactive();
+                flapCount = -flapCount - 1;
+            }
         }
 
         return Futures.immediateFuture(null);