Uploaded image for project: 'Flume'
  1. Flume
  2. FLUME-1219

Race conditions in BucketWriter / HDFSEventSink

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.2.0
    • Component/s: None
    • Labels:
      None

      Description

      BucketWriter has several race conditions that came up during my performance testing over the weekend. One issue that caused data loss was the lack of atomic close() and open() semantics related to the "retry" mechanism after the abort() call in HDFSEventSink.process().

      Another issue is the lack of clearly delineated responsibilities for calling open(), flush(), close(), etc. For example, HDFSEventSink.start() calls open(), HDFSEventSink.process() calls and abort() which calls open(), and BucketWriter.append() also calls close() and open().

      There is another race condition related to the JVM shutdown hooks, which cause .tmp files not to be renamed.

      These APIs need to be refactored and their responsibilities need to be clarified.

        Attachments

        1. FLUME-1219-3.patch
          34 kB
          Mike Percy
        2. FLUME-1219-1.patch
          29 kB
          Mike Percy

          Issue Links

            Activity

              People

              • Assignee:
                mpercy Mike Percy
                Reporter:
                mpercy Mike Percy
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: