HBASE-23680 RegionProcedureStore missing cleaning of hfile archive - #1022
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
| private void compact() { | ||
| try { | ||
| region.compact(true); | ||
| deleteCompactedHFiles(); |
There was a problem hiding this comment.
We just delete archived files? Why even archive them then? Can we delay the delete at least?
There was a problem hiding this comment.
Why we writing hfiles into WAL fs out of interest?
|
Add a TTL config for deleting the archived HFiles. On why we put all things on the WAL filesystem, partly because that I want to put all the data under a single directory, which can hide the internal implementation details about procedure store, and easy to replace the old implementation with another implementation. And another thing is about performance. The WAL filesystem is HDFS, and the HFile storage, if not the same one, is usually S3 or some other object storages, which are very slow, usually. And usually the size of the procedure store will be small, I think the cost is also fine. |
This comment has been minimized.
This comment has been minimized.
|
🎊 +1 overall
This message was automatically generated. |
|
Ping @saintstack |
I like that this goes on the WAL filesystem and I think the justification is good. I went to check the docs to make sure the reasoning is spelled out as well there. Looks like the ref guide does not have details about the new procedure store and still has a bunch of stuff about the old one. Is there a JIRA I can watch to review when those docs are up? |
I checked the ref guide but did not seen anything about the procedure store? It is just about the procedure v2 framework, and these thing are not changed... |
|
|
Filed HBASE-23697 for doc on RegionProcedureStore. |
Oh, it is not under the section of proc-v2? ... |
|
Correct; the docs are a mess. |
|
Added a hbase.procedure.store.region.hfilecleaner.plugins, and add the default config to hbase-default.xml. The default value is org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner. |
|
💔 -1 overall
This message was automatically generated. |
|
🎊 +1 overall
This message was automatically generated. |
|
Ping @busbey @saintstack |
| procedureStore = | ||
| new RegionProcedureStore(this, new MasterProcedureEnv.FsUtilsLeaseRecovery(this)); | ||
| // Create cleaner thread pool | ||
| cleanerPool = new DirScanPool(conf); |
There was a problem hiding this comment.
Strange place to start cleanerPool down here in the procedure startup given it is used cleaning WALs and hfile...
There was a problem hiding this comment.
But we have no choice as we need to use it in the next line...
There was a problem hiding this comment.
I was thinking you'd call it up in the caller's method, in startServiceThreads, rather than down hidden in here in startProcedureExecutor... i.e. move the line up thee lines from where it was.
There was a problem hiding this comment.
The startServiceThreads method is called after createProcedureExecutor, notice that, it is create, not start...
No description provided.