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

race condition in SpillableMemoryChannel log print

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 1.7.0
    • None
    • Channel
    • None
    • Patch

    Description

      use SpillableMemoryChannel with http blob handler, and send many request concurrently, As the jetty has a threadpool to handle incoming request, the commit to SpillableMemoryChannel will be concurrent.

      the Following code :

      @Override
      protected void doCommit() throws InterruptedException {
      if (putCalled) {
      putCommit();
      if (LOGGER.isDebugEnabled())

      { LOGGER.debug("Put Committed. Drain Order Queue state : " + drainOrder.dump()); }

      in method - >drainOrder.dump() will iterate its internal queue, in the meantime, has changed by other thread, thus throw a concurrent modification exception. thus will result the channel processor try to rollback, but actually the transaction has commit succefully.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            lqp276 liqiaoping

            Dates

              Created:
              Updated:

              Slack

                Issue deployment