[ 
https://issues.apache.org/jira/browse/FLUME-1610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13463435#comment-13463435
 ] 

Hudson commented on FLUME-1610:
-------------------------------

Integrated in flume-trunk #309 (See 
[https://builds.apache.org/job/flume-trunk/309/])
    FLUME-1610: HDDSEventSink and bucket writer have a race condition (Revision 
d1137017866f9c666f47b55452531e01a27fbdd8)

     Result = SUCCESS
brock : 
http://git-wip-us.apache.org/repos/asf/flume/repo?p=flume.git&a=commit&h=d1137017866f9c666f47b55452531e01a27fbdd8
Files : 
* 
flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSEventSink.java
* 
flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/BucketWriter.java
* 
flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestBucketWriter.java

                
> HDFSEventSink and bucket writer have a race condition
> -----------------------------------------------------
>
>                 Key: FLUME-1610
>                 URL: https://issues.apache.org/jira/browse/FLUME-1610
>             Project: Flume
>          Issue Type: Bug
>          Components: Sinks+Sources
>    Affects Versions: v1.2.0
>            Reporter: Brock Noland
>            Assignee: Mike Percy
>             Fix For: v1.3.0
>
>         Attachments: FLUME-1610-0.patch, FLUME-1610-3.patch
>
>
> I have seen a scenerio where an exception was thrown during 
> HDFSEventSink.process when the flush on the bucket writer was called but the 
> BucketWriter was already closed.
> Assumptions:
> 1) In HDFSEventSink.process when done, we flush all buckets written to once 
> channel returns null or batch size is exceeded
> 2) The BucketWriter.flush method does not check the isOpen flag.
> 3) Our time roll interval code assumes the next call to the bucket writer 
> will be append as such the isOpen flag will be checked and the underlying 
> writer re-opened.
> As such, I think what is happening is this:
> 1) In HDFSEventSink.process the bucket writer is written to
> 2) In BucketWriter the time based roll trips
> 3) In HDFSEventSink.process the channel returns null or batch size is exceeded
> 4) In HDFSEventSink.process bucket writer flush is called throwing the 
> exception logged above.

--
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

Reply via email to