From 461e941ad13317dc03bc7974e843aaaa1efb2cfe Mon Sep 17 00:00:00 2001 From: Tomas Cere Date: Thu, 18 Feb 2016 12:40:52 +0100 Subject: [PATCH] Bug 4455 - Inconsistent COMMIT operation handling when no transactions are present Return positive response for commit operation in netconf mdsal northbound even if no candidate transaction is open for session. port of: https://git.opendaylight.org/gerrit/#/c/32938/ Change-Id: I892679d2d4ba50ecb887aefccac5b7d4ef6639f8 Signed-off-by: Tomas Cere --- .../netconf/mdsal/connector/TransactionProvider.java | 5 +++-- .../controller/netconf/mdsal/connector/ops/Commit.java | 2 +- .../mdsal/connector/ops/NetconfMDSalMappingTest.java | 6 ++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/TransactionProvider.java b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/TransactionProvider.java index 86e65abbbe..602d572011 100644 --- a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/TransactionProvider.java +++ b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/TransactionProvider.java @@ -73,8 +73,9 @@ public class TransactionProvider implements AutoCloseable{ public synchronized boolean commitTransaction() throws NetconfDocumentedException { if (!getCandidateTransaction().isPresent()) { - throw new NetconfDocumentedException(NO_TRANSACTION_FOUND_FOR_SESSION + netconfSessionIdForReporting, - ErrorType.application, ErrorTag.operation_failed, ErrorSeverity.error); + //making empty commit without prior opened transaction, just return true + LOG.debug("Making commit without open candidate transaction for session {}", netconfSessionIdForReporting); + return true; } CheckedFuture future = candidateTransaction.submit(); diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/Commit.java b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/Commit.java index 47e8f80585..a8800c8451 100644 --- a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/Commit.java +++ b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/Commit.java @@ -37,7 +37,7 @@ public class Commit extends AbstractSingletonNetconfOperation { protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws NetconfDocumentedException { boolean commitStatus = transactionProvider.commitTransaction(); - LOG.trace("Transaction commited succesfuly {}", commitStatus); + LOG.trace("Commit completed successfully {}", commitStatus); return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); } diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/controller/netconf/mdsal/connector/ops/NetconfMDSalMappingTest.java b/opendaylight/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/controller/netconf/mdsal/connector/ops/NetconfMDSalMappingTest.java index 587375db7a..62ec421e7c 100644 --- a/opendaylight/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/controller/netconf/mdsal/connector/ops/NetconfMDSalMappingTest.java +++ b/opendaylight/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/controller/netconf/mdsal/connector/ops/NetconfMDSalMappingTest.java @@ -162,6 +162,12 @@ public class NetconfMDSalMappingTest { } + @Test + public void testCommitWithoutOpenTransaction() throws Exception { + verifyResponse(commit(), RPC_REPLY_OK); + assertEmptyDatastore(getConfigCandidate()); + } + @Test public void testCandidateTransaction() throws Exception { -- 2.36.6