Bug 1043853 - Concurrent message headers modification causes that message is never sent
Summary: Concurrent message headers modification causes that message is never sent
Keywords:
Status: VERIFIED
Alias: None
Product: JBoss Data Grid 6
Classification: JBoss
Component: JGroups
Version: 6.2.0
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: CR1
: 6.2.1
Assignee: Tristan Tarrant
QA Contact: Martin Gencur
URL:
Whiteboard:
Depends On:
Blocks: 1059774
TreeView+ depends on / blocked
 
Reported: 2013-12-17 10:55 UTC by Radim Vansa
Modified: 2018-12-05 16:47 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Sending a message through JGroups may fail under some race conditions with ArrayOutOfBoundException. The reliability mechanism will try to resend this message again, but all these subsequent attempts will fail with NullPointerException. </para> <para> Therefore, the message will be never received on the receiver node and will be held in unacknowledged messages buffer on the sender node. If this message is ordered within JGroups, no more ordered messages from this node will be delivered on the receiver node. Some following messages may be buffered as well, eventually leading to OutOfMemoryException. </para> <para> It is recommended to use UNICAST3 as this dramatically reduces the chance of this bug to happen (it was observed with UNICAST2).
Clone Of:
Environment:
Last Closed:
Type: Bug


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker JGRP-1752 0 Major Resolved Concurrent message headers modification causes that message is never sent 2016-08-23 05:50:48 UTC

Description Radim Vansa 2013-12-17 10:55:30 UTC
Under some circumstances the TP protocol may try to add the TP header to message twice concurrently.
This happens for example when the stable message triggers retransmission while the message has been sent right now.
This may result in ArrayOutOfBoundException in Headers._putHeader and/or subsequent NullPointerException in Headers.size(). The retransmission attempt always fails, the message is never delivered. Moreover, keeping this (and possibly following) messages in the transmission table can lead to OOME.

Comment 1 Radim Vansa 2013-12-17 10:56:35 UTC
JDG 6.2 has to use JGroups 3.4.2 or later where this bug is fixed.


Note You need to log in before you can comment on or make changes to this bug.