From: Robert Varga Date: Tue, 19 May 2015 09:32:34 +0000 (+0200) Subject: BUG-3219: guard from wron-use entry commit X-Git-Tag: release/beryllium~51 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=c36521263ffcaf6a65ede1c45a487adcf40818d0;p=openflowjava.git BUG-3219: guard from wron-use entry commit Debugging has revealed that OFP may be crossing channels and ends up committing an unreserved offset. Add a guard to check for that. Change-Id: I445e07df6e628a4abccd4a6daa347e1de12e8eba Signed-off-by: Robert Varga (cherry picked from commit 5430767b0b533d1db017b2c4fce88150ac25f50c) --- diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/OutboundQueueImpl.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/OutboundQueueImpl.java index 921b4290..ebf2a94d 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/OutboundQueueImpl.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/OutboundQueueImpl.java @@ -87,9 +87,12 @@ final class OutboundQueueImpl implements OutboundQueue { Preconditions.checkArgument(xid.equals(message.getXid()), "Message %s has wrong XID %s, expected %s", message, message.getXid(), xid); } + final int ro = reserveOffset; + Preconditions.checkArgument(offset < ro, "Unexpected commit to offset {} reserved {} message {}", offset, ro, message); + final OutboundQueueEntry entry = queue[offset]; entry.commit(message, callback); - LOG.debug("Queue {} XID {} at offset {} (of {}) committed", this, xid, offset, reserveOffset); + LOG.debug("Queue {} XID {} at offset {} (of {}) committed", this, xid, offset, ro); if (entry.isBarrier()) { int my = offset; @@ -218,7 +221,7 @@ final class OutboundQueueImpl implements OutboundQueue { for (;;) { // No message ready if (isEmpty()) { - LOG.trace("Flushed all reserved entries up to ", flushOffset); + LOG.trace("Flushed all reserved entries up to {}", flushOffset); return null; }