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

race condition in SpillableMemoryChannel log print

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Duplicate
    • 1.7.0
    • None
    • Channel
    • None

    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

            People

              Unassigned Unassigned
              lqp276 liqiaoping
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: