Code Review
/
controller.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
BUG-5280: fix NPE during transaction purge
[controller.git]
/
opendaylight
/
md-sal
/
sal-distributed-datastore
/
src
/
main
/
java
/
org
/
opendaylight
/
controller
/
cluster
/
datastore
/
FrontendReadWriteTransaction.java
diff --git
a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java
b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java
index 2c2a287670f2e2676d42721c31641e181569a0e4..f9d9580214e41c2d28430c3a46c68b005ad6e8bc 100644
(file)
--- a/
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java
+++ b/
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java
@@
-32,8
+32,6
@@
import org.opendaylight.controller.cluster.access.commands.TransactionMerge;
import org.opendaylight.controller.cluster.access.commands.TransactionModification;
import org.opendaylight.controller.cluster.access.commands.TransactionPreCommitRequest;
import org.opendaylight.controller.cluster.access.commands.TransactionPreCommitSuccess;
import org.opendaylight.controller.cluster.access.commands.TransactionModification;
import org.opendaylight.controller.cluster.access.commands.TransactionPreCommitRequest;
import org.opendaylight.controller.cluster.access.commands.TransactionPreCommitSuccess;
-import org.opendaylight.controller.cluster.access.commands.TransactionPurgeRequest;
-import org.opendaylight.controller.cluster.access.commands.TransactionPurgeResponse;
import org.opendaylight.controller.cluster.access.commands.TransactionRequest;
import org.opendaylight.controller.cluster.access.commands.TransactionSuccess;
import org.opendaylight.controller.cluster.access.commands.TransactionWrite;
import org.opendaylight.controller.cluster.access.commands.TransactionRequest;
import org.opendaylight.controller.cluster.access.commands.TransactionSuccess;
import org.opendaylight.controller.cluster.access.commands.TransactionWrite;
@@
-103,10
+101,8
@@
final class FrontendReadWriteTransaction extends FrontendTransaction {
handleTransactionDoCommit((TransactionDoCommitRequest) request, envelope, now);
return null;
} else if (request instanceof TransactionAbortRequest) {
handleTransactionDoCommit((TransactionDoCommitRequest) request, envelope, now);
return null;
} else if (request instanceof TransactionAbortRequest) {
- return handleTransactionAbort((TransactionAbortRequest) request, envelope, now);
- } else if (request instanceof TransactionPurgeRequest) {
- // No-op for now
- return new TransactionPurgeResponse(request.getTarget(), request.getSequence());
+ handleTransactionAbort((TransactionAbortRequest) request, envelope, now);
+ return null;
} else {
throw new UnsupportedRequestException(request);
}
} else {
throw new UnsupportedRequestException(request);
}
@@
-145,11
+141,12
@@
final class FrontendReadWriteTransaction extends FrontendTransaction {
});
}
});
}
- private
TransactionSuccess<?>
handleTransactionAbort(final TransactionAbortRequest request,
+ private
void
handleTransactionAbort(final TransactionAbortRequest request,
final RequestEnvelope envelope, final long now) throws RequestException {
if (readyCohort == null) {
final RequestEnvelope envelope, final long now) throws RequestException {
if (readyCohort == null) {
- openTransaction.abort();
- return new TransactionAbortSuccess(getIdentifier(), request.getSequence());
+ openTransaction.abort(() -> recordAndSendSuccess(envelope, now,
+ new TransactionAbortSuccess(getIdentifier(), request.getSequence())));
+ return;
}
readyCohort.abort(new FutureCallback<Void>() {
}
readyCohort.abort(new FutureCallback<Void>() {
@@
-168,7
+165,6
@@
final class FrontendReadWriteTransaction extends FrontendTransaction {
recordAndSendFailure(envelope, now, new RuntimeRequestException("Abort failed", failure));
}
});
recordAndSendFailure(envelope, now, new RuntimeRequestException("Abort failed", failure));
}
});
- return null;
}
private void coordinatedCommit(final RequestEnvelope envelope, final long now) {
}
private void coordinatedCommit(final RequestEnvelope envelope, final long now) {
@@
-298,9
+294,9
@@
final class FrontendReadWriteTransaction extends FrontendTransaction {
switch (maybeProto.get()) {
case ABORT:
switch (maybeProto.get()) {
case ABORT:
- openTransaction.abort();
+ openTransaction.abort(
() -> replyModifySuccess(request.getSequence())
);
openTransaction = null;
openTransaction = null;
- return
replyModifySuccess(request.getSequence())
;
+ return
null
;
case READY:
ensureReady();
return replyModifySuccess(request.getSequence());
case READY:
ensureReady();
return replyModifySuccess(request.getSequence());