Uploaded image for project: 'Apache Ozone'
  1. Apache Ozone
  2. HDDS-7593 Supporting HSync and lease recovery
  3. HDDS-11073

[hsync] Improve BlockOutputStream's BufferPool to support variable buffer allocation from concurrent hsync

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Resolved
    • Blocker
    • Resolution: Implemented
    • None
    • None
    • None
    • None

    Description

      Since HDDS-9844, multiple threads can now invoke hsync to flush current changes in the BlockOutputStream. Each hsync call requires a ChunkBuffer in the BufferPool to be reserved until the flush is committed.

      The current BufferPool implementation imposes a hard limit and will crash when this limit is crossed. This is when BlockOutputStream is used by a single thread at a time. But when a variable number of threads call hsync on a single BlockOutputStream, this limit is easy to cause a crash.
      We need to improve the BufferPool/BlockOutputStream so that it does not crash when there are more ChunkBuffer allocation requests than the configured BufferPool limit. Instead, the calling thread can wait until an available buffer is released.

      Attachments

        Issue Links

          Activity

            People

              duongnguyen Duong
              duongnguyen Duong
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: