BUG-3219: guard from wron-use entry commit 07/20707/1
authorRobert Varga <rovarga@cisco.com>
Tue, 19 May 2015 09:32:34 +0000 (11:32 +0200)
committerRobert Varga <rovarga@cisco.com>
Tue, 19 May 2015 09:32:34 +0000 (11:32 +0200)
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 <rovarga@cisco.com>
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/OutboundQueueImpl.java

index 921b4290a43e952d9e7faa90ef5c52e75846e521..ebf2a94dc6bf4f3b7c9d045552c4be5c728d6918 100644 (file)
@@ -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;
             }