[
https://issues.apache.org/jira/browse/HBASE-29044?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17909480#comment-17909480
]
qazwsx commented on HBASE-29044:
--------------------------------
If we add a processing condition in this line of code, can we handle this
scenario?
private void persistAndWake(MasterProcedureEnv env, RegionStateNode
regionNode) {
synchronized (this) {
if (getState() == ProcedureState.ROLLEDBACK || getState() ==
ProcedureState.INITIALIZING) {
LOG.warn("Procedure {} has already been rolled back, skip persistent",
this);
return;
}
env.getMasterServices().getMasterProcedureExecutor().getStore().update(this);
}
regionNode.getProcedureEvent().wake(env.getProcedureScheduler());
}
> Race between RegionRemoteProcedureBase and ServerCrashProcedure ->
> RegionRemoteProcedureBase.serverCrashed operation could lead to INITIALIZING
> state be persisent to procedure store
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-29044
> URL: https://issues.apache.org/jira/browse/HBASE-29044
> Project: HBase
> Issue Type: Bug
> Affects Versions: 2.4.14
> Reporter: qazwsx
> Priority: Major
> Attachments: image-2025-01-02-16-50-49-740.png,
> image-2025-01-02-16-58-21-371.png
>
>
> when create RegionRemoteProcedureBase procedure,
> ServerCrashProcedure runs to RegionRemoteProcedureBase.serverCrashed, could
> lead to INITIALIZING state be persisent to procedure store, lead the next
> HMaster starting will abort.
>
> !image-2025-01-02-16-58-21-371.png!
--
This message was sent by Atlassian Jira
(v8.20.10#820010)