You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flume.apache.org by "ashok Kumar (JIRA)" <ji...@apache.org> on 2014/07/10 18:36:04 UTC

[jira] [Created] (FLUME-2419) Bucket writer was closed due to idling exception

ashok Kumar created FLUME-2419:
----------------------------------

             Summary: Bucket writer was closed due to idling exception
                 Key: FLUME-2419
                 URL: https://issues.apache.org/jira/browse/FLUME-2419
             Project: Flume
          Issue Type: Bug
    Affects Versions: v1.4.0
            Reporter: ashok Kumar
            Priority: Minor


We have flume collecting the daily log and sinks into hdfs with the configuration, 

activity.sinks.eventhdfssink_1.hdfs.rollSize = 66060288
activity.sinks.eventhdfssink_1.hdfs.rollCount = 0
activity.sinks.eventhdfssink_1.hdfs.rollInterval = 0
activity.sinks.eventhdfssink_1.hdfs.idleTimeout = 180

We have the default configuration for maxopenfile and the writing data went into endless loop with the following exception:

"java.io.IOException: This bucket writer was closed due to idling and this handle is thus no longer valid"


I looked over the source code (BucketWriter.java) and I establish the exceptions occurs only at the time the file is closed and also due to idle time out. 

if (!isOpen) {
      if(idleClosed) {
        throw new IOException("This bucket writer was closed due to idling and this handle " +
            "is thus no longer valid");
      }
      open();
    }

However the idlecallback has been called out during the flush() from BucketWriter.java,

                if(onIdleCallback != null)
                  onIdleCallback.run(onIdleCallbackPath);

the idlecallback from HDFSEventSink.java,

WriterCallback idleCallback = null;
          if(idleTimeout != 0) {
            idleCallback = new WriterCallback() {
              @Override
              public void run(String bucketPath) {
                sfWriters.remove(bucketPath);
              }
            };

Here, we remove the entry from sfWriters map, thus forcing a recreation of the writer during subsequent calls. Thus, I do not see a case where we can have the file handle closed as well as idleClosed be true without removing the necessary references. FWIW, we are seeing logs that indicate that onIdleCallback has been triggered. Are there any other cases in which this exception can hit?

If it is of help, we saw this exception when our application (wrongly) started pumping old events (older than 2 weeks). Is there a possibility of writer handles created earlier being closed, but not being visible to the BucketWriter.java code?

Any pointers to potential configuration issues is also appreciated.




--
This message was sent by Atlassian JIRA
(v6.2#6252)