[ https://issues.apache.org/jira/browse/HBASE-28934?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Wellington Chevreuil updated HBASE-28934: ----------------------------------------- Description: When persistent bucket cache is enabled, bucket cache needs to read and load the persistent cache file contents during region server starting time. This cache initialisation is currently asynchronous. The server restart completes after spawning a thread to initialise the cache. When the subsequent HFile readers are created, the current implementation is such that the constructor of the hfile (HFilePreadReader) waits until the cache is initialised. Due to this wait, all client requests to these regions would fail during the whole cache initialisation period, as these regions are not yet online. The correct way to handle this is that, the constructors of HFile readers should not wait for cache initialisation. Only the prefetch threads should wait for the cache initialisation. Subsequently, any client requests should be served by accessing the underlying file system if the cache is not yet initialised, and a cache miss should be computed in the cache stats. Thanks, Janardhan was: The bucket cache is initialised from the persistent cache file during server restarts. This cache initialisation is asynchronous to the server restarts. The server restart completes after spawning a thread to initialise the cache. When the subsequent HFile readers are created, the current implementation is such that the constructor of the hfile (HFilePreadReader) waits until the cache is initialised. Due to this wait, all requests to these regions are blocked due to cache initialisation. Even the errors related to "regions are not online" is returned to the client. The correct way to handle this is that, the constructors of HFile readers should not wait for cache initialisation. Only the prefetch threads should wait for the cache initialisation. Subsequently, any client requests should be served by accessing the data main storage (cloud storage) if the cache is not yet initialised. Thanks, Janardhan > The HFile Reader creation should not be blocked due to waits for cache > initialisation. > -------------------------------------------------------------------------------------- > > Key: HBASE-28934 > URL: https://issues.apache.org/jira/browse/HBASE-28934 > Project: HBase > Issue Type: Bug > Components: BucketCache > Reporter: Janardhan Hungund > Assignee: Janardhan Hungund > Priority: Major > > When persistent bucket cache is enabled, bucket cache needs to read and load > the persistent cache file contents during region server starting time. This > cache initialisation is currently asynchronous. The server restart completes > after spawning a thread to initialise the cache. > When the subsequent HFile readers are created, the current implementation is > such that the constructor of the hfile (HFilePreadReader) waits until the > cache is initialised. Due to this wait, all client requests to these regions > would fail during the whole cache initialisation period, as these regions are > not yet online. > The correct way to handle this is that, the constructors of HFile readers > should not wait for cache initialisation. Only the prefetch threads should > wait for the cache initialisation. > Subsequently, any client requests should be served by accessing the > underlying file system if the cache is not yet initialised, and a cache miss > should be computed in the cache stats. > Thanks, > Janardhan -- This message was sent by Atlassian Jira (v8.20.10#820010)