BUG-8858: rework singleton group locking 20/61420/19
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 9 Aug 2017 11:54:12 +0000 (13:54 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 5 Sep 2017 08:43:07 +0000 (10:43 +0200)
commitcb1f6ccf2ae60b8405a42e583f190858924b2d41
tree27b70bd54cc33e2705c1f0feeb1910534081f4c4
parente84146b5ec8af70ef632ec9855f003243b859376
BUG-8858: rework singleton group locking

Group locking relied on a single semaphore held for long periods
of time, with undeterministic locking in face of timing variance.

This patch reworks the logic to properly lock and manage object
lifecycle. It also expands the test suite to cover cleanup scenarios,
while removing test duplication.

The test suite is expanded slightly to assert that asynchronous
service group cleanup does not interfere with user's ability to
reuse the same group.

Change-Id: I68eb6d0b59b2ab0e1cf98dc374e029fad3d19734
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
12 files changed:
singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/AbstractClusterSingletonServiceProviderImpl.java
singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/AbstractClusterSingletonServiceRegistration.java [new file with mode: 0644]
singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/ClusterSingletonServiceGroup.java
singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/ClusterSingletonServiceGroupImpl.java
singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/ClusterSingletonServiceRegistrationDelegator.java [deleted file]
singleton-service/mdsal-singleton-dom-impl/src/main/java/org/opendaylight/mdsal/singleton/dom/impl/PlaceholderGroup.java [new file with mode: 0644]
singleton-service/mdsal-singleton-dom-impl/src/test/java/org/opendaylight/mdsal/singleton/dom/impl/AbstractDOMClusterServiceProviderTest.java [new file with mode: 0644]
singleton-service/mdsal-singleton-dom-impl/src/test/java/org/opendaylight/mdsal/singleton/dom/impl/ClusterSingletonServiceGroupImplTest.java
singleton-service/mdsal-singleton-dom-impl/src/test/java/org/opendaylight/mdsal/singleton/dom/impl/ClusterSingletonServiceRegistrationDelegatorTest.java [deleted file]
singleton-service/mdsal-singleton-dom-impl/src/test/java/org/opendaylight/mdsal/singleton/dom/impl/DOMClusterSingletonServiceProviderAsyncImplTest.java
singleton-service/mdsal-singleton-dom-impl/src/test/java/org/opendaylight/mdsal/singleton/dom/impl/DOMClusterSingletonServiceProviderImplTest.java
singleton-service/mdsal-singleton-dom-impl/src/test/resources/simplelogger.properties [new file with mode: 0644]