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

race condition in SpillableMemoryChannel log print

    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

        1. SpillableMemoryChannel.java
          28 kB
          liqiaoping

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated: