summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-12-05 17:30:06 +0000
committerKeith Wall <kwall@apache.org>2014-12-05 17:30:06 +0000
commit5c48af8564229bb56f45bb47b015be325b8855da (patch)
tree3ead817b10a7ba18da4eb39a7d427c506fc30e07 /qpid/java
parenta0cdd525f55c8386e2b3e86cdd683c69d181c209 (diff)
downloadqpid-python-5c48af8564229bb56f45bb47b015be325b8855da.tar.gz
Bug fix: Stop 0-8 protocol layer wrapping the same byte array
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/QPID-6262-JavaBrokerNIO@1643363 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java18
-rw-r--r--qpid/java/systests/src/test/java/org/apache/qpid/client/AMQQueueDeferredOrderingTest.java17
2 files changed, 14 insertions, 21 deletions
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
index 4212505d75..169b269629 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQProtocolEngine.java
@@ -514,20 +514,10 @@ public class AMQProtocolEngine implements ServerProtocolEngine,
throw new ServerScopedRuntimeException(e);
}
- final ByteBuffer buf;
-
- if(size <= REUSABLE_BYTE_BUFFER_CAPACITY)
- {
- buf = _reusableByteBuffer;
- buf.position(0);
- }
- else
- {
- buf = ByteBuffer.wrap(data);
- }
- buf.limit(_reusableDataOutput.length());
-
- return buf;
+ final ByteBuffer copy = ByteBuffer.allocate(_reusableDataOutput.length());
+ copy.put(data, 0, _reusableDataOutput.length());
+ copy.flip();
+ return copy;
}
diff --git a/qpid/java/systests/src/test/java/org/apache/qpid/client/AMQQueueDeferredOrderingTest.java b/qpid/java/systests/src/test/java/org/apache/qpid/client/AMQQueueDeferredOrderingTest.java
index 3025414e4a..cdd5e13870 100644
--- a/qpid/java/systests/src/test/java/org/apache/qpid/client/AMQQueueDeferredOrderingTest.java
+++ b/qpid/java/systests/src/test/java/org/apache/qpid/client/AMQQueueDeferredOrderingTest.java
@@ -39,7 +39,7 @@ public class AMQQueueDeferredOrderingTest extends QpidBrokerTestCase
private Session session;
private AMQQueue queue;
private MessageConsumer consumer;
- private int numMessages;
+ private int _numMessages;
private static final Logger _logger = LoggerFactory.getLogger(AMQQueueDeferredOrderingTest.class);
@@ -86,7 +86,7 @@ public class AMQQueueDeferredOrderingTest extends QpidBrokerTestCase
{
super.setUp();
- numMessages = isBrokerStorePersistent() ? 300 : 1000;
+ _numMessages = isBrokerStorePersistent() ? 300 : 1000;
_logger.info("Create Connection");
con = getConnection();
@@ -106,30 +106,33 @@ public class AMQQueueDeferredOrderingTest extends QpidBrokerTestCase
// Setup initial messages
_logger.info("Creating first producer thread");
- producerThread = new ASyncProducer(queue, 0, numMessages / 2);
+ producerThread = new ASyncProducer(queue, 0, _numMessages / 2);
producerThread.start();
// Wait for them to be done
producerThread.join();
// Setup second set of messages to produce while we consume
_logger.info("Creating second producer thread");
- producerThread = new ASyncProducer(queue, numMessages / 2, numMessages);
+ producerThread = new ASyncProducer(queue, _numMessages / 2, _numMessages);
producerThread.start();
// Start consuming and checking they're in order
_logger.info("Consuming messages");
- for (int i = 0; i < numMessages; i++)
+ for (int i = 0; i < _numMessages; i++)
{
Message msg = consumer.receive(3000);
+
+ _logger.debug("KWDEBUG got " + msg);
+
assertNotNull("Message " + i + " should not be null", msg);
assertTrue("Message " + i + " should be a text message", msg instanceof TextMessage);
- assertEquals("Message content " + i + "does not match expected", Integer.toString(i), ((TextMessage) msg).getText());
+ assertEquals("Message content " + i + " does not match expected", Integer.toString(i), ((TextMessage) msg).getText());
}
}
protected void tearDown() throws Exception
{
- _logger.info("Interuptting producer thread");
+ _logger.info("Interrupting producer thread");
producerThread.interrupt();
_logger.info("Closing connection");
con.close();