X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsamples%2Fclustering-test-app%2Fprovider%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fclustering%2Fit%2Fprovider%2Fimpl%2FFlappingSingletonService.java;h=90ce618f3d14a403146e44a1c4ed07401eea2f17;hb=2611e6a728e586ea34dd891f30a473bf54d6cbd8;hp=3ca46b128fdacf6dea475d47d2d6c5f4ec554fc5;hpb=6cd5778f454ba882d0e15361dfa6a5cd06721d97;p=controller.git diff --git a/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/impl/FlappingSingletonService.java b/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/impl/FlappingSingletonService.java index 3ca46b128f..90ce618f3d 100644 --- a/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/impl/FlappingSingletonService.java +++ b/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/impl/FlappingSingletonService.java @@ -10,8 +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.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService; @@ -28,8 +26,6 @@ public class FlappingSingletonService implements ClusterSingletonService { private static final ServiceGroupIdentifier SERVICE_GROUP_IDENTIFIER = ServiceGroupIdentifier.create("flapping-singleton-service"); - private static final ScheduledExecutorService EXECUTOR = FinalizableScheduledExecutorService.newSingleThread(); - private final ClusterSingletonServiceProvider singletonServiceProvider; private final AtomicBoolean active = new AtomicBoolean(true); @@ -47,21 +43,16 @@ public class FlappingSingletonService implements ClusterSingletonService { @SuppressWarnings("checkstyle:IllegalCatch") 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 (Exception e) { - LOG.warn("There was a problem closing flapping singleton service.", e); - setInactive(); - - final long count = flapCount.get(); - flapCount.compareAndSet(count, -count); - } - }); + try { + registration.close(); + registration = null; + } catch (Exception e) { + LOG.warn("There was a problem closing flapping singleton service.", e); + setInactive(); + + final long count = flapCount.get(); + flapCount.compareAndSet(count, -count); + } } @Override @@ -71,22 +62,16 @@ public class FlappingSingletonService implements ClusterSingletonService { flapCount.incrementAndGet(); 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 (RuntimeException e) { - LOG.warn("There was a problem re-registering flapping singleton service.", e); - setInactive(); - - final long count = flapCount.get(); - flapCount.compareAndSet(count, -count - 1); - } - - }, 200, TimeUnit.MILLISECONDS); + LOG.debug("Running re-registration"); + try { + registration = singletonServiceProvider.registerClusterSingletonService(this); + } catch (RuntimeException e) { + LOG.warn("There was a problem re-registering flapping singleton service.", e); + setInactive(); + + final long count = flapCount.get(); + flapCount.compareAndSet(count, -count - 1); + } } return Futures.immediateFuture(null);