Skip to content

Commit 86c6368

Browse files
committed
Bug 38107522 - [38062325->22.06.14] NPE at PacketReceiver
[git-p4: depot-paths = "//dev/coherence-ce/release/coherence-ce-v22.06/": change = 117025]
1 parent 6e12c07 commit 86c6368

File tree

1 file changed

+32
-23
lines changed
  • prj/coherence-core-components/src/main/java/com/tangosol/coherence/component/util/daemon/queueProcessor/packetProcessor

1 file changed

+32
-23
lines changed

prj/coherence-core-components/src/main/java/com/tangosol/coherence/component/util/daemon/queueProcessor/packetProcessor/PacketReceiver.java

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
package com.tangosol.coherence.component.util.daemon.queueProcessor.packetProcessor;
1212

13+
import com.oracle.coherence.common.io.BufferManager;
14+
1315
import com.tangosol.coherence.component.net.Member;
1416
import com.tangosol.coherence.component.net.Message;
1517
import com.tangosol.coherence.component.net.Packet;
@@ -21,8 +23,6 @@
2123
import com.tangosol.coherence.component.net.packet.notifyPacket.Ack;
2224
import com.tangosol.coherence.component.net.packet.notifyPacket.Request;
2325
import com.tangosol.coherence.component.util.WindowedArray;
24-
import com.tangosol.coherence.component.util.daemon.queueProcessor.packetProcessor.PacketPublisher;
25-
import com.oracle.coherence.common.io.BufferManager;
2626
import com.tangosol.coherence.config.Config;
2727
import com.tangosol.io.nio.ByteBufferReadBuffer;
2828
import com.tangosol.net.internal.PacketComparator;
@@ -31,6 +31,8 @@
3131
import com.tangosol.util.ClassHelper;
3232
import com.tangosol.util.LongArray;
3333
import com.tangosol.util.SimpleLongArray;
34+
import com.tangosol.util.SparseArray;
35+
3436
import java.io.IOException;
3537
import java.net.SocketAddress;
3638
import java.nio.ByteBuffer;
@@ -334,40 +336,47 @@ protected void cleanup(com.tangosol.coherence.component.net.Member member)
334336
// import java.util.Iterator;
335337

336338
BufferManager mgr = getBufferManager();
337-
338-
for (Iterator iter = member.getMessagePile().iterator(); iter.hasNext();)
339+
340+
SparseArray messagePile = member.getMessagePile();
341+
if (messagePile != null)
339342
{
340-
Object o = iter.next();
341-
if (o instanceof LongArray) // all we have are sequel packets
343+
for (Iterator iter = member.getMessagePile().iterator(); iter.hasNext(); )
342344
{
343-
for (Iterator iterPacket = ((LongArray) o).iterator(); iterPacket.hasNext(); )
345+
Object o = iter.next();
346+
if (o instanceof LongArray) // all we have are sequel packets
344347
{
345-
mgr.release(((MessagePacket) iterPacket.next()).getByteBuffer());
348+
for (Iterator iterPacket = ((LongArray) o).iterator(); iterPacket.hasNext(); )
349+
{
350+
mgr.release(((MessagePacket) iterPacket.next()).getByteBuffer());
351+
}
346352
}
353+
// else o instanceof Message; handled below
347354
}
348-
// else o instanceof Message; handled below
355+
member.setMessagePile(null);
349356
}
350-
member.setMessagePile(null);
351357

352358
WindowedArray la = member.getMessageIncoming();
353-
for (long li = la.getFirstIndex(), le = la.getLastIndex(); li <= le; li = la.getFirstIndex())
359+
if (la != null)
354360
{
355-
Message msg = (Message) la.remove(li);
356-
if (msg == null)
361+
for (long li = la.getFirstIndex(), le = la.getLastIndex(); li <= le; li = la.getFirstIndex())
357362
{
358-
break; // signifies that the remainder or the indexes must be null
359-
}
360-
361-
for (int i = 0, c = msg.getMessagePartCount(); i < c; ++i)
362-
{
363-
MessagePacket packet = msg.getPacket(i);
364-
if (packet != null)
363+
Message msg = (Message) la.remove(li);
364+
if (msg == null)
365365
{
366-
mgr.release(packet.getByteBuffer());
366+
break; // signifies that the remainder or the indexes must be null
367+
}
368+
369+
for (int i = 0, c = msg.getMessagePartCount(); i < c; ++i)
370+
{
371+
MessagePacket packet = msg.getPacket(i);
372+
if (packet != null)
373+
{
374+
mgr.release(packet.getByteBuffer());
375+
}
367376
}
368377
}
378+
member.setMessageIncoming(null);
369379
}
370-
member.setMessageIncoming(null);
371380
}
372381

373382
/**
@@ -1104,7 +1113,7 @@ protected void onPacketDirected(com.tangosol.coherence.component.net.Member memb
11041113
// sequel Packets can "find their way home"
11051114
laPile.set(lFromMsgId, msg);
11061115
}
1107-
1116+
11081117
// check for completed Messages in the array
11091118
if (lToMsgId == lMsgFirst)
11101119
{

0 commit comments

Comments
 (0)