[ 
https://issues.apache.org/jira/browse/HDDS-11073?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Duong updated HDDS-11073:
-------------------------
    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.



  was:
Since HDDS-9844, multiple threads can now invoke hsync to flush current changes 
in the BlockOutputStream. Each hsync call requires a buffer 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 there're a variable number of threads calling hsync, 
it's easy to exceed this limit as explained above.
 We need to improve the BufferPool/B


> [hsync] Improve BlockOutputStream's BufferPool to support variable buffer 
> allocation from concurrent hsync
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HDDS-11073
>                 URL: https://issues.apache.org/jira/browse/HDDS-11073
>             Project: Apache Ozone
>          Issue Type: Sub-task
>            Reporter: Duong
>            Priority: Major
>
> 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.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to