X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-spi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcore%2Fspi%2Fdata%2FSnapshotBackedWriteTransaction.java;h=eaabb3a21fbb802e82e90fcd70a2ef1e41c46e39;hp=a5b7ea6253c0a6c15fcd745965b8052536246761;hb=7292faba613ab556babd7bbcdd78984f5668bf9b;hpb=7ab6f974861e01daa16ff56658eeb1be163cbfec diff --git a/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/sal/core/spi/data/SnapshotBackedWriteTransaction.java b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/sal/core/spi/data/SnapshotBackedWriteTransaction.java index a5b7ea6253..eaabb3a21f 100644 --- a/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/sal/core/spi/data/SnapshotBackedWriteTransaction.java +++ b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/sal/core/spi/data/SnapshotBackedWriteTransaction.java @@ -15,6 +15,7 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Throwables; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; +import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; @@ -138,8 +139,13 @@ public class SnapshotBackedWriteTransaction extends AbstractDOMStoreTransacti final DataTreeModification tree = mutableTree; TREE_UPDATER.lazySet(this, null); - tree.ready(); - return wasReady.transactionReady(this, tree); + try { + tree.ready(); + return wasReady.transactionReady(this, tree, null); + } catch (RuntimeException e) { + LOG.debug("Store transaction: {}: unexpected failure when readying", getIdentifier(), e); + return wasReady.transactionReady(this, tree, e); + } } @Override @@ -185,8 +191,12 @@ public class SnapshotBackedWriteTransaction extends AbstractDOMStoreTransacti * Transaction on which ready was invoked. * @param tree * Modified data tree which has been constructed. + * @param readyError + * Any error that has already happened when readying. * @return DOMStoreThreePhaseCommitCohort associated with transaction */ - protected abstract DOMStoreThreePhaseCommitCohort transactionReady(SnapshotBackedWriteTransaction tx, DataTreeModification tree); + protected abstract DOMStoreThreePhaseCommitCohort transactionReady(SnapshotBackedWriteTransaction tx, + DataTreeModification tree, + @Nullable Exception readyError); } }