[jboss-jira] [JBoss JIRA] (JGRP-1573) Non-atomic retrieval of seqnos causes IllegalArgumentException
Radim Vansa (JIRA)
jira-events at lists.jboss.org
Tue Jan 29 08:56:48 EST 2013
Radim Vansa created JGRP-1573:
---------------------------------
Summary: Non-atomic retrieval of seqnos causes IllegalArgumentException
Key: JGRP-1573
URL: https://issues.jboss.org/browse/JGRP-1573
Project: JGroups
Issue Type: Bug
Affects Versions: 3.2.6
Reporter: Radim Vansa
Assignee: Bela Ban
Priority: Minor
In {{UNICAST2.handleDataReceived}} the hr and hd arguments are read non-atomically (out of lock) and neither are {{volatile}}, therefore, the order of reading the values may be interchanged (even if the values were updated in the correct order, reading delivered prior to received does not help currently). This may lead to later {{IllegalArgumentException}}.
This could be fixed by either requesting the seqnos synchronously or in a loop until hd <= hr holds (and set them to be volatile).
{code}
04:39:37,939 ERROR [org.jgroups.protocols.TCP] (OOB-32,null) failed handling incoming message: java.lang.IllegalArgumentException: low (16456815) needs to be <= high (16456814)
at org.jgroups.protocols.UNICAST2$Unicast2Header.createStableHeader(UNICAST2.java:1037) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.UNICAST2.sendStableMessage(UNICAST2.java:611) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.UNICAST2.handleDataReceived(UNICAST2.java:754) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.UNICAST2.up(UNICAST2.java:420) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.pbcast.NAKACK2.up(NAKACK2.java:606) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:143) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.FD.up(FD.java:253) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.MERGE2.up(MERGE2.java:205) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.Discovery.up(Discovery.java:359) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.MPING.up(MPING.java:179) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.TP$ProtocolAdapter.up(TP.java:2642) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.TP.passMessageUp(TP.java:1289) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1852) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1825) [jgroups-3.2.6.Final-redhat-1.jar:3.2.6.Final]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_33]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_33]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_33]
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list