From: Tomas Cere Date: Tue, 20 Sep 2016 15:44:38 +0000 (+0200) Subject: Do not allow transaction creation with an empty shard map. X-Git-Tag: release/boron-sr1~11 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=fb75a602fddfdbbb97c10596c632b25f79096bb0;hp=9d2575e58dc95a35ea097dd95453b45a3e33063c;p=mdsal.git Do not allow transaction creation with an empty shard map. Change-Id: I445c43a5af430bb0b4838c2e77d155d5318e0bbb Signed-off-by: Tomas Cere (cherry picked from commit 1bd1474746e48cfa86d48b5e2b65046bc21125dc) --- diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ProducerLayout.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ProducerLayout.java index fccf22ddb8..209cdd67f8 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ProducerLayout.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ProducerLayout.java @@ -130,6 +130,8 @@ final class ProducerLayout { } Map createTransactions() { + Preconditions.checkState(!idToProducer.isEmpty(), + "Cannot create transaction since the producer is not mapped to any shard"); return Maps.transformValues(idToProducer, DOMDataTreeShardProducer::createTransaction); } } diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeTest.java index 6e5a41e7d1..3654c12e95 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeTest.java @@ -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);