You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2016/10/06 06:29:52 UTC

svn commit: r1763499 - /qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java

Author: kwall
Date: Thu Oct  6 06:29:52 2016
New Revision: 1763499

URL: http://svn.apache.org/viewvc?rev=1763499&view=rev
Log:
QPID-7447: [Java Broker] Avoid empty iterator creation on SSL write path when no application data due to be written

Modified:
    qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java

Modified: qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java?rev=1763499&r1=1763498&r2=1763499&view=diff
==============================================================================
--- qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java (original)
+++ qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java Thu Oct  6 06:29:52 2016
@@ -52,6 +52,7 @@ public class QpidByteBuffer
             QpidByteBuffer.class,
             "_disposed");
     private static final ThreadLocal<QpidByteBuffer> _cachedBuffer = new ThreadLocal<>();
+    private static final ByteBuffer[] EMPTY_BYTE_BUFFER_ARRAY = new ByteBuffer[0];
     private volatile static boolean _isPoolInitialized;
     private volatile static BufferPool _bufferPool;
     private volatile static int _pooledBufferSize;
@@ -647,11 +648,19 @@ public class QpidByteBuffer
                                              final Collection<QpidByteBuffer> buffers,
                                              QpidByteBuffer dest) throws SSLException
     {
-        final ByteBuffer[] src = new ByteBuffer[buffers.size()];
-        Iterator<QpidByteBuffer> iterator = buffers.iterator();
-        for (int i = 0; i < src.length; i++)
+        final ByteBuffer[] src;
+        if (buffers.isEmpty())
         {
-            src[i] = iterator.next().getUnderlyingBuffer();
+            src = EMPTY_BYTE_BUFFER_ARRAY;
+        }
+        else
+        {
+            src = new ByteBuffer[buffers.size()];
+            Iterator<QpidByteBuffer> iterator = buffers.iterator();
+            for (int i = 0; i < src.length; i++)
+            {
+                src[i] = iterator.next().getUnderlyingBuffer();
+            }
         }
         return engine.wrap(src, dest.getUnderlyingBuffer());
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org