Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-21564

race condition in WAL rolling resulting in size-based rolling getting stuck

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Patch Available
    • Critical
    • Resolution: Unresolved
    • 3.0.0-alpha-1, 2.2.0
    • None
    • asyncclient, wal
    • None

    Description

      Manifests at least with AsyncFsWriter.
      There's a window after LogRoller replaces the writer in the WAL, but before it sets the rollLog boolean to false in the finally, where the WAL class can request another log roll (it can happen in particular when the logs are getting archived in the LogRoller thread, and there's high write volume causing the logs to roll quickly).
      LogRoller will blindly reset the rollLog flag in finally and "forget" about this request.
      AsyncWAL in turn never requests it again because its own rollRequested field is set and it expects a callback. Logs don't get rolled until a periodic roll is triggered after that.

      The acknowledgment of roll requests by LogRoller should be atomic.

      Attachments

        1. HBASE-21564.06.patch
          22 kB
          Sergey Shelukhin
        2. HBASE-21564.master.001.patch
          18 kB
          Sergey Shelukhin
        3. HBASE-21564.master.002.patch
          17 kB
          Sergey Shelukhin
        4. HBASE-21564.master.003.patch
          19 kB
          Sergey Shelukhin
        5. HBASE-21564.master.004.patch
          20 kB
          Sergey Shelukhin
        6. HBASE-21564.master.005.patch
          21 kB
          Sergey Shelukhin

        Issue Links

          Activity

            People

              sershe Sergey Shelukhin
              sershe Sergey Shelukhin
              Votes:
              1 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

                Created:
                Updated: