Do not allow transaction creation with an empty shard map. 68/46368/2
authorTomas Cere <tcere@cisco.com>
Tue, 20 Sep 2016 15:44:38 +0000 (17:44 +0200)
committerRobert Varga <nite@hq.sk>
Mon, 3 Oct 2016 13:49:39 +0000 (13:49 +0000)
Change-Id: I445c43a5af430bb0b4838c2e77d155d5318e0bbb
Signed-off-by: Tomas Cere <tcere@cisco.com>
(cherry picked from commit 1bd1474746e48cfa86d48b5e2b65046bc21125dc)

dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ProducerLayout.java
dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeTest.java

index fccf22ddb8d6d6ded0ccddce39eaa343d42abf8b..209cdd67f8f82a7fffd279e1ef286f5bebe62f8e 100644 (file)
@@ -130,6 +130,8 @@ final class ProducerLayout {
     }
 
     Map<DOMDataTreeIdentifier, DOMDataTreeShardWriteTransaction> createTransactions() {
+        Preconditions.checkState(!idToProducer.isEmpty(),
+                "Cannot create transaction since the producer is not mapped to any shard");
         return Maps.transformValues(idToProducer, DOMDataTreeShardProducer::createTransaction);
     }
 }
index 6e5a41e7d17f442c6085790657a1a9d38610da7a..3654c12e95bdf53779f948c31daccb99ec99c778 100644 (file)
@@ -152,6 +152,13 @@ public class ShardedDOMDataTreeTest {
         newRootShardReg.close();
     }
 
+    @Test(expected = IllegalStateException.class)
+    public void testEmptyShardMapProducer() throws Exception {
+        final ShardedDOMDataTree dataTree = new ShardedDOMDataTree();
+        final DOMDataTreeProducer producer = dataTree.createProducer(Collections.singletonList(ROOT_ID));
+        producer.createTransaction(false);
+    }
+
     @Test
     public void testSingleShardWrite() throws Exception {
         final DOMDataTreeListener mockedDataTreeListener = Mockito.mock(DOMDataTreeListener.class);