[
https://issues.apache.org/jira/browse/HBASE-26144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Duo Zhang resolved HBASE-26144.
-------------------------------
Fix Version/s: 3.0.0-alpha-2
2.5.0
Hadoop Flags: Reviewed
Resolution: Fixed
Pushed to master and branch-2.
Thanks [~niuyulin] for reviewing.
> The HStore.snapshot method is never called in main code
> -------------------------------------------------------
>
> Key: HBASE-26144
> URL: https://issues.apache.org/jira/browse/HBASE-26144
> Project: HBase
> Issue Type: Improvement
> Components: regionserver
> Reporter: Duo Zhang
> Assignee: Duo Zhang
> Priority: Major
> Fix For: 2.5.0, 3.0.0-alpha-2
>
>
> In the comment of HStore.flushCache, we say that HStore.snapshot method must
> be called first. But actually, we will call memstore.snapshot directly from
> StoreFlusherImpl.prepare, without holding the write lock. The reason we do
> not need to hold the write lock is that, we hold HRegion.updatesLock in the
> upper layer, so it is OK.
> See HBASE-10087 for more discussion about this.
> So in general, I think we could remove the snapshot method in HStore. And I
> do not think we need to hold the write lock when calling clearSnapshot then.
> As in the HRegion layer, we need to guarantee that there is only one ongoing
> flush of the region, so before we finish the region, it is already safe to
> operate on the snapshot of the memstore, especially that the clearSnapshot
> method itself is thread safe.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)