[ https://issues.apache.org/jira/browse/CASSANDRA-2755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13056503#comment-13056503 ]
Hudson commented on CASSANDRA-2755: ----------------------------------- Integrated in Cassandra-0.7 #515 (See [https://builds.apache.org/job/Cassandra-0.7/515/]) fix race that could result in Hadoopwriter failing to throw exception for encountered error patch by Mck SembWever and jbellis for CASSANDRA-2755 jbellis : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1140565 Files : * /cassandra/branches/cassandra-0.7/CHANGES.txt * /cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordWriter.java > ColumnFamilyRecordWriter fails to throw a write exception encountered after > the user begins to close the writer > --------------------------------------------------------------------------------------------------------------- > > Key: CASSANDRA-2755 > URL: https://issues.apache.org/jira/browse/CASSANDRA-2755 > Project: Cassandra > Issue Type: Bug > Components: Hadoop > Affects Versions: 0.7.0 > Reporter: Greg Katz > Assignee: Mck SembWever > Priority: Minor > Fix For: 0.7.7, 0.8.2 > > Attachments: 2755-v2.txt, CASSANDRA-2755.patch > > > There appears to be a race condition in {{ColumnFamilyRecordWriter}} that can > result in the loss of an exception. Here is how it can happen (W stands for > the {{RangeClient}}'s worker thread; U stands for the > {{ColumnFamilyRecordWriter}} user's thread): > # W: {{RangeClient}}'s {{run}} method catches an exception originating in the > Thrift client/socket, but doesn't get a chance to set it on the > {{lastException}} field before it the thread is preempted. > # U: The user calls {{close}} which calls {{stopNicely}}. Because the > {{lastException}} field is null, {{stopNicely}} does not throw anything. > {{close}} then joins on the worker thread. > # W: The {{RangeClient}}'s {{run}} method sets the {{lastException}} field > and exits. > # U: Although the thread in {{close}} is waiting for the worker thread to > exit, it has already checked the {{lastException}} field so it doesn't detect > the presence of the last exception. Instead, {{close}} returns without > throwing anything. > This race condition means that intermittently write failures will go > undetected. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira