X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=singleton-service%2Fmdsal-singleton-dom-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fsingleton%2Fdom%2Fimpl%2FAbstractClusterSingletonServiceProviderImpl.java;h=ab0a1ba4db86aa8eeab1447d16e8e406b8522d79;hb=e0db53ceec4f4e1524507b8d258a45db8909836b;hp=c65fb7e45b27819a473db7c3f69c48f4f015c8a6;hpb=37543ee77d4629d253c41eeab536d474d3c2a680;p=mdsal.git diff --git a/singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/AbstractClusterSingletonServiceProviderImpl.java b/singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/AbstractClusterSingletonServiceProviderImpl.java index c65fb7e45b..ab0a1ba4db 100644 --- a/singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/AbstractClusterSingletonServiceProviderImpl.java +++ b/singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/AbstractClusterSingletonServiceProviderImpl.java @@ -150,18 +150,20 @@ public abstract class AbstractClusterSingletonServiceProviderImpl

future; synchronized (this) { final ClusterSingletonServiceGroup lookup = verifyNotNull(serviceGroupMap.get(serviceIdentifier)); - if (!lookup.unregisterService(reg)) { + future = lookup.unregisterService(reg); + if (future == null) { return; } // Close the group and replace it with a placeholder LOG.debug("Closing service group {}", serviceIdentifier); - future = lookup.closeClusterSingletonGroup(); placeHolder = new PlaceholderGroup<>(lookup, future); final String identifier = reg.getInstance().getIdentifier().getValue(); verify(serviceGroupMap.replace(identifier, lookup, placeHolder)); LOG.debug("Replaced group {} with {}", serviceIdentifier, placeHolder); + + lookup.closeClusterSingletonGroup(); } future.addListener(() -> finishShutdown(placeHolder), MoreExecutors.directExecutor());