From cf434f30a13bde72c33799e33de39fae5e62a773 Mon Sep 17 00:00:00 2001 From: Gary Wu Date: Wed, 7 Oct 2015 13:54:41 -0700 Subject: [PATCH] Fix Eclipse compilation warnings. Fix compilation warnings in DistributedDataStoreTest that DistributedDataStores were never closed. Also fix NPEs on closing DistributedDataStores when the MXBeans are uninitialized. Change-Id: I5dcaa389e1e69f934e9016933b00be3adaf4529f Signed-off-by: Gary Wu --- .../datastore/DistributedDataStore.java | 8 ++- .../datastore/DistributedDataStoreTest.java | 71 ++++++++++--------- 2 files changed, 43 insertions(+), 36 deletions(-) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java index 34d5ed0268..455b36c151 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java @@ -186,8 +186,12 @@ public class DistributedDataStore implements DOMStore, SchemaContextListener, @Override public void close() { - datastoreConfigMXBean.unregisterMBean(); - datastoreInfoMXBean.unregisterMBean(); + if (datastoreConfigMXBean != null) { + datastoreConfigMXBean.unregisterMBean(); + } + if (datastoreInfoMXBean != null) { + datastoreInfoMXBean.unregisterMBean(); + } if (closeable != null) { try { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreTest.java index a53f4b4ae3..d3bdc6a6c0 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreTest.java @@ -50,32 +50,34 @@ public class DistributedDataStoreTest extends AbstractActorTest { @Test public void testRateLimitingUsedInReadWriteTxCreation(){ - DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext); + try (DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext)) { - distributedDataStore.newReadWriteTransaction(); + distributedDataStore.newReadWriteTransaction(); - verify(actorContext, times(1)).acquireTxCreationPermit(); + verify(actorContext, times(1)).acquireTxCreationPermit(); + } } @Test public void testRateLimitingUsedInWriteOnlyTxCreation(){ - DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext); + try (DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext)) { - distributedDataStore.newWriteOnlyTransaction(); + distributedDataStore.newWriteOnlyTransaction(); - verify(actorContext, times(1)).acquireTxCreationPermit(); + verify(actorContext, times(1)).acquireTxCreationPermit(); + } } - @Test public void testRateLimitingNotUsedInReadOnlyTxCreation(){ - DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext); + try (DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext)) { - distributedDataStore.newReadOnlyTransaction(); - distributedDataStore.newReadOnlyTransaction(); - distributedDataStore.newReadOnlyTransaction(); + distributedDataStore.newReadOnlyTransaction(); + distributedDataStore.newReadOnlyTransaction(); + distributedDataStore.newReadOnlyTransaction(); - verify(actorContext, times(0)).acquireTxCreationPermit(); + verify(actorContext, times(0)).acquireTxCreationPermit(); + } } @Test @@ -83,40 +85,41 @@ public class DistributedDataStoreTest extends AbstractActorTest { doReturn(datastoreContext).when(actorContext).getDatastoreContext(); doReturn(shardElectionTimeout).when(datastoreContext).getShardLeaderElectionTimeout(); doReturn(FiniteDuration.apply(50, TimeUnit.MILLISECONDS)).when(shardElectionTimeout).duration(); - DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext); + try (DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext)) { - long start = System.currentTimeMillis(); + long start = System.currentTimeMillis(); - distributedDataStore.waitTillReady(); + distributedDataStore.waitTillReady(); - long end = System.currentTimeMillis(); + long end = System.currentTimeMillis(); - assertTrue("Expected to be blocked for 50 millis", (end-start) >= 50); + assertTrue("Expected to be blocked for 50 millis", (end - start) >= 50); + } } @Test public void testWaitTillReadyCountDown(){ - final DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext); - doReturn(datastoreContext).when(actorContext).getDatastoreContext(); - doReturn(shardElectionTimeout).when(datastoreContext).getShardLeaderElectionTimeout(); - doReturn(FiniteDuration.apply(5000, TimeUnit.MILLISECONDS)).when(shardElectionTimeout).duration(); - - Executors.newSingleThreadExecutor().submit(new Runnable() { - @Override - public void run() { - Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS); - distributedDataStore.getWaitTillReadyCountDownLatch().countDown(); - } - }); + try (final DistributedDataStore distributedDataStore = new DistributedDataStore(actorContext)) { + doReturn(datastoreContext).when(actorContext).getDatastoreContext(); + doReturn(shardElectionTimeout).when(datastoreContext).getShardLeaderElectionTimeout(); + doReturn(FiniteDuration.apply(5000, TimeUnit.MILLISECONDS)).when(shardElectionTimeout).duration(); - long start = System.currentTimeMillis(); + Executors.newSingleThreadExecutor().submit(new Runnable() { + @Override + public void run() { + Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS); + distributedDataStore.getWaitTillReadyCountDownLatch().countDown(); + } + }); - distributedDataStore.waitTillReady(); + long start = System.currentTimeMillis(); - long end = System.currentTimeMillis(); + distributedDataStore.waitTillReady(); - assertTrue("Expected to be released in 500 millis", (end-start) < 5000); + long end = System.currentTimeMillis(); + assertTrue("Expected to be released in 500 millis", (end - start) < 5000); + } } -} \ No newline at end of file +} -- 2.36.6