Skip to content

HBASE-29190 Allow disabling regions in FAILED_OPEN state - #6797

Open
junegunn wants to merge 7 commits into
apache:masterfrom
junegunn:HBASE-29190
Open

HBASE-29190 Allow disabling regions in FAILED_OPEN state#6797
junegunn wants to merge 7 commits into
apache:masterfrom
junegunn:HBASE-29190

Conversation

@junegunn

Copy link
Copy Markdown
Member

No description provided.

@junegunn
junegunn marked this pull request as ready for review March 15, 2025 11:44
@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

am.getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());
future = am.getRegionStateStore().updateRegionLocation(regionNode);
FutureUtils.addListener(future, (r, e) -> {
if (e != null) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Failed persisting will lead to master crash I believe, so we do not need to deal with this.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I see, thanks for the clarification. Actually I was unable to test this part, but I was unsure if it's needed so just I added it. Let me remove it.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

// FAILED_OPEN doesn't need further transition, immediately mark the region as closed
AssignmentManager am = env.getAssignmentManager();
am.getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());
future = am.getRegionStateStore().updateRegionLocation(regionNode);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do not need to set the state to CLOSED when the state is FAILED_OPEN? And if the state is CLOSED, do we still need to call udpateRegionLocation?

@junegunnjunegunnMay 23, 2025

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the feedback. Before I answer the questions, please take a look at dd8716f. I added a few more steps so that the intention of this change is clearer.

We do not need to set the state to CLOSED when the state is FAILED_OPEN?

So the question is: "Is regionNode.setState(State.CLOSED, State.FAILED_OPEN) really necessary? Can we just check regionNode.isInState(State.FAILED_OPEN) here?" Am I right?

If we don't change the state,

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java
index 6b5aaf6975..215e1245ed 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java@@ -404,11 +404,13 @@ public class TransitRegionStateProcedure
if (regionNode.isInState(STATES_EXPECTED_ON_CLOSING)) {
// This is the normal case
future = env.getAssignmentManager().regionClosing(regionNode);
- } else if (regionNode.setState(State.CLOSED, State.FAILED_OPEN)) {- // FAILED_OPEN doesn't need further transition, immediately mark the region as closed+ } else if (regionNode.isInState(State.FAILED_OPEN)) {+ // Remove the region from RIT list to suppress periodic "RITs over threshold" messages
AssignmentManager am = env.getAssignmentManager();
am.getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());
- future = am.getRegionStateStore().updateRegionLocation(regionNode);++ // FAILED_OPEN doesn't need further transition+ future = CompletableFuture.allOf();
}
if (future != null) {
ProcedureFutureUtil.suspendIfNecessary(this, this::setFuture, future, env,

we will run into an assertion error in confirmClosed:

privateFlowconfirmClosed(MasterProcedureEnvenv, RegionStateNoderegionNode)
throwsIOException {
if (regionNode.isInState(State.CLOSED)) {
retryCounter = null;
if (lastState == RegionStateTransitionState.REGION_STATE_TRANSITION_CONFIRM_CLOSED) {
// we are the last state, finish
regionNode.unsetProcedure(this);
returnFlow.NO_MORE_STATE;
}
// This means we need to open the region again, should be a move or reopen
setNextState(RegionStateTransitionState.REGION_STATE_TRANSITION_GET_ASSIGN_CANDIDATE);
returnFlow.HAS_MORE_STATE;
}
if (regionNode.isInState(State.CLOSING)) {
// This is possible, think the target RS crashes and restarts immediately, the close region
// operation will return a NotServingRegionException soon, we can only recover after SCP takes
// care of this RS. So here we throw an IOException to let upper layer to retry with backoff.
setNextState(RegionStateTransitionState.REGION_STATE_TRANSITION_CLOSE);
thrownewHBaseIOException("Failed to close region");
}
// abnormally closed, need to reopen it, no matter what is the last state, see the comment in
// confirmOpened for more details that why we need to reopen the region first even if we just
// want to close it.
// The only exception is for non-default replica, where we do not need to deal with recovered
// edits. Notice that the region will remain in ABNORMALLY_CLOSED state, the upper layer need to
// deal with this state. For non-default replica, this is usually the same with CLOSED.
assertregionNode.isInState(State.ABNORMALLY_CLOSED);

Because FAILED_OPEN is not covered in the conditions. If we add FAILED_OPEN here like so:

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java
index 6b5aaf6975..7cf0941f20 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java@@ -422,7 +424,7 @@ public class TransitRegionStateProcedure
private Flow confirmClosed(MasterProcedureEnv env, RegionStateNode regionNode)
throws IOException {
- if (regionNode.isInState(State.CLOSED)) {+ if (regionNode.isInState(State.CLOSED, State.FAILED_OPEN)) {
retryCounter = null;
if (lastState == RegionStateTransitionState.REGION_STATE_TRANSITION_CONFIRM_CLOSED) {
// we are the last state, finish

We can avoid the assertion error, but CloseTableRegionsProcedure will not finish and endlessly retry:

There are still 1 unclosed region(s) for closing regions of table testDisableFailedOpenRegions when executing CloseTableRegionsProcedure, continue...

So we also need to change the implementation of numberOfUnclosedRegions to account for FAILED_OPEN regions.

privateintnumberOfUnclosedRegions(TableNametableName,
Function<RegionStateNode, Boolean> shouldSubmit) {
intunclosed = 0;
for (RegionStateNoderegionNode : regionStates.getTableRegionStateNodes(tableName)) {
regionNode.lock();
try {
if (shouldSubmit.apply(regionNode)) {
if (!regionNode.isInState(State.OFFLINE, State.CLOSED, State.SPLIT)) {
unclosed++;
}
}
} finally {
regionNode.unlock();
}
}
returnunclosed;
}

But I felt this was getting too complicated, and it's simpler to just change the state to CLOSED.

@junegunnjunegunnMay 23, 2025

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And if the state is CLOSED, do we still need to call udpateRegionLocation?

I called the method to persist the in-memory change of regionNode to the meta table. Would it be clearer if I call persistToMeta instead? The result is roughly the same.

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java
index 6b5aaf6975..69c9d1ffca 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java@@ -408,7 +408,7 @@ public class TransitRegionStateProcedure
// FAILED_OPEN doesn't need further transition, immediately mark the region as closed
AssignmentManager am = env.getAssignmentManager();
am.getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());
- future = am.getRegionStateStore().updateRegionLocation(regionNode);+ future = am.persistToMeta(regionNode);
}
if (future != null) {
ProcedureFutureUtil.suspendIfNecessary(this, this::setFuture, future, env,

If the question is about if it's necessary to persist the changed state to meta, it looks like it's not necessary in this case, though we have to change an assertion in the test code.

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java
index 6b5aaf6975..6b7989dd58 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/TransitRegionStateProcedure.java@@ -408,7 +408,7 @@ public class TransitRegionStateProcedure
// FAILED_OPEN doesn't need further transition, immediately mark the region as closed
AssignmentManager am = env.getAssignmentManager();
am.getRegionStates().removeFromFailedOpen(regionNode.getRegionInfo());
- future = am.getRegionStateStore().updateRegionLocation(regionNode);+ future = CompletableFuture.allOf();
}
if (future != null) {
ProcedureFutureUtil.suspendIfNecessary(this, this::setFuture, future, env,
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestTransitRegionStateProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestTransitRegionStateProcedure.java
index 074e7e730c..392993280b 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestTransitRegionStateProcedure.java+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestTransitRegionStateProcedure.java@@ -250,8 +250,8 @@ public class TestTransitRegionStateProcedure {
// The number of RITs should be 0 after disabling the table
assertEquals(0, getTotalRITs());
- // The regions are now in "CLOSED" state- assertEquals(Collections.singleton("CLOSED"), getRegionStates());+ // The regions are still in "FAILED_OPEN" state+ assertEquals(Collections.singleton("FAILED_OPEN"), getRegionStates());
// Fix the error in the table descriptor
tdb = TableDescriptorBuilder.newBuilder(td);

However, I think we should try to keep the in-memory state and persistent meta state synchronized to avoid confusion and any potential issues that might arise.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, in the if condition you call setState, I misread the code, I thought it is isInState.

Then the logic is fine. But better to add more comments to say why here we do not need to treat CLOSED state specially.

And I suggest that we use two ProcedureFutureUtil.suspendIfNecessary calls for these two conditions, so we do not need to add extra check in closeRegionAfterUpdatingMeta, since for the region in FAILED_OPEN state, the only action after updating meta is to change the state.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And I suggest that we use two ProcedureFutureUtil.suspendIfNecessary calls for these two conditions, so we do not need to add extra check in closeRegionAfterUpdatingMeta

Ahh.. I remembered why I organized the code this way. This was not super obvious.

When you disable the table with "FAILED_OPEN" regions,

  1. DisableTableProcedure creates a CloseTableRegionsProcedure,
  2. It results in TRSP with REGION_STATE_TRANSITION_CLOSE as the initial state
    caseUNASSIGN:
    initialState = RegionStateTransitionState.REGION_STATE_TRANSITION_CLOSE;
    lastState = RegionStateTransitionState.REGION_STATE_TRANSITION_CONFIRM_CLOSED;
    break;
  3. Because of the initial condition, it calls TRSP#closeRegion,
    caseREGION_STATE_TRANSITION_CLOSE:
    closeRegion(env, regionNode);
    returnFlow.HAS_MORE_STATE;
  4. which in turn calls closeRegionAfterUpdatingMeta
    privatevoidcloseRegion(MasterProcedureEnvenv, RegionStateNoderegionNode)
    throwsIOException, ProcedureSuspendedException {
    if (
    ProcedureFutureUtil.checkFuture(this, this::getFuture, this::setFuture,
    () -> closeRegionAfterUpdatingMeta(env, regionNode))
    ) {
    return;
    }
  5. So we're entering closeRegionAfterUpdatingMeta for a FAILED_OPEN region and HBase creates a CloseRegionProcedure which is exactly what we tried to avoid.
  6. CloseRegionProcedure is a subclass of RegionRemoteProcedureBase which requires targetServer, but a FAILED_OPEN region lacks it, and the procedure fails and hangs.
    2025-05-23T19:17:19,176 WARN [PEWorker-1 {}] procedure2.ProcedureExecutor$WorkerThread(2184): Worker terminating UNNATURALLY null
    java.lang.NullPointerException: null
    at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos$RegionRemoteProcedureBaseStateData$Builder.setTargetServer(MasterProcedureProtos.java:54339) ~[classes/:?]
    at org.apache.hadoop.hbase.master.assignment.RegionRemoteProcedureBase.serializeStateData(RegionRemoteProcedureBase.java:382) ~[classes/:?]
    at org.apache.hadoop.hbase.master.assignment.CloseRegionProcedure.serializeStateData(CloseRegionProcedure.java:74) ~[classes/:?]
    

So that explains why I had to put the check at the start of closeRegionAfterUpdatingMeta.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, it looks like my analysis was not entirely correct, because at step 4, the initial call to checkFuture { closeRegionAfterUpdatingMeta } will not actually trigger closeRegionAfterUpdatingMeta. But the suspension of the procedure in suspendIfNecessary is what triggers multiple closeRegion calls which leads to a call to closeRegionAfterUpdatingMeta.

@junegunnjunegunnMay 24, 2025

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And I suggest that we use two ProcedureFutureUtil.suspendIfNecessary calls for these two conditions,

Addressed that in 718156e. I also added more comments.

so we do not need to add extra check in closeRegionAfterUpdatingMeta

The extra check is still there for the reason mentioned above.

@junegunnjunegunnMay 24, 2025

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed that in 718156e. I also added more comments.

Apologies for the noise. I reverted the change after realizing that ProcedureFutureUtil.suspendIfNecessary does not guarantee execution of actionAfterDone when its future is suspended. So we may get unpredictable behavior if actionAfterDone of the previous checkFuture and that of suspendIfNecessary are not identical.

  1. checkFuture(null) { closeRegionAfterUpdatingMeta }
  2. suspendIfNecessary(updateRegionLocation) { setNextState }
    1. suspended
      1. closeRegion called again
      2. checkFuture(updateRegionLocation) { closeRegionAfterUpdatingMeta }
      3. closeRegionAfterUpdatingMeta
    2. not suspended
      1. setNextState

So with the latest commit, closeRegionAfterUpdatingMeta serves as the only terminal point of the procedure, regardless of the previous state of the region or whether the future was suspended or not.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@junegunnjunegunn self-assigned this Jun 16, 2025
@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec0m 57sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+0 🆗codespell0m 0scodespell was not available.
+0 🆗detsecrets0m 0sdetect-secrets was not available.
+1 💚@author0m 0sThe patch does not contain any @author tags.
+1 💚hbaseanti0m 0sPatch does not have any anti-patterns.
_ master Compile Tests _
+1 💚mvninstall4m 23smaster passed
+1 💚compile4m 4smaster passed
+1 💚checkstyle0m 46smaster passed
+1 💚spotbugs1m 54smaster passed
+1 💚spotless0m 58sbranch has no errors when running spotless:check.
_ Patch Compile Tests _
+1 💚mvninstall4m 29sthe patch passed
+1 💚compile4m 2sthe patch passed
+1 💚javac4m 2sthe patch passed
+1 💚blanks0m 0sThe patch has no blanks issues.
+1 💚checkstyle0m 44sthe patch passed
+1 💚spotbugs2m 2sthe patch passed
+1 💚hadoopcheck17m 55sPatch does not cause any errors with Hadoop 3.3.6 3.4.0.
+1 💚spotless1m 11spatch has no errors when running spotless:check.
_ Other Tests _
+1 💚asflicense0m 13sThe patch does not generate ASF License warnings.
54m 51s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/8/artifact/yetus-general-check/output/Dockerfile
GITHUB PR#6797
Optional Testsdupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless
unameLinux 61b51f1ff7cc 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / c8ec640
Default JavaEclipse Adoptium-17.0.11+9
Max. process+thread count83 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/8/console
versionsgit=2.34.1 maven=3.9.8 spotbugs=4.7.3
Powered byApache Yetus 0.15.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

💔 -1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec0m 29sDocker mode activated.
-0 ⚠️yetus0m 2sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚mvninstall3m 18smaster passed
+1 💚compile0m 58smaster passed
+1 💚javadoc0m 29smaster passed
+1 💚shadedjars6m 4sbranch has no errors when building our shaded downstream artifacts.
_ Patch Compile Tests _
+1 💚mvninstall3m 7sthe patch passed
+1 💚compile0m 57sthe patch passed
+1 💚javac0m 57sthe patch passed
+1 💚javadoc0m 27sthe patch passed
+1 💚shadedjars6m 1spatch has no errors when building our shaded downstream artifacts.
_ Other Tests _
-1 ❌unit477m 33s/patch-unit-hbase-server.txthbase-server in the patch failed.
504m 33s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/8/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile
GITHUB PR#6797
Optional Testsjavac javadoc unit compile shadedjars
unameLinux 686a4d027502 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / c8ec640
Default JavaEclipse Adoptium-17.0.11+9
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/8/testReport/
Max. process+thread count5011 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/8/console
versionsgit=2.34.1 maven=3.9.8
Powered byApache Yetus 0.15.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec2m 51sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+0 🆗codespell0m 0scodespell was not available.
+0 🆗detsecrets0m 0sdetect-secrets was not available.
+1 💚@author0m 0sThe patch does not contain any @author tags.
+1 💚hbaseanti0m 0sPatch does not have any anti-patterns.
_ master Compile Tests _
+1 💚mvninstall3m 28smaster passed
+1 💚compile3m 31smaster passed
+1 💚checkstyle0m 59smaster passed
+1 💚spotbugs1m 40smaster passed
+1 💚spotless0m 51sbranch has no errors when running spotless:check.
_ Patch Compile Tests _
+1 💚mvninstall3m 7sthe patch passed
+1 💚compile3m 28sthe patch passed
+1 💚javac3m 28sthe patch passed
+1 💚blanks0m 0sThe patch has no blanks issues.
-0 ⚠️checkstyle0m 58s/results-checkstyle-hbase-server.txthbase-server: The patch generated 1 new + 2 unchanged - 0 fixed = 3 total (was 2)
+1 💚spotbugs1m 43sthe patch passed
+1 💚hadoopcheck12m 11sPatch does not cause any errors with Hadoop 3.3.6 3.4.1.
+1 💚spotless0m 46spatch has no errors when running spotless:check.
_ Other Tests _
+1 💚asflicense0m 11sThe patch does not generate ASF License warnings.
43m 24s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/1/artifact/yetus-general-check/output/Dockerfile
GITHUB PR#6797
Optional Testsdupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless
unameLinux e9593dfaa042 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / c8ec640
Default JavaEclipse Adoptium-17.0.11+9
Max. process+thread count84 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/1/console
versionsgit=2.34.1 maven=3.9.8 spotbugs=4.7.3
Powered byApache Yetus 0.15.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

💔 -1 overall

VoteSubsystemRuntimeLogfileComment
+0 🆗reexec0m 14sDocker mode activated.
-0 ⚠️yetus0m 3sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚mvninstall3m 42smaster passed
+1 💚compile1m 5smaster passed
+1 💚javadoc0m 32smaster passed
+1 💚shadedjars7m 4sbranch has no errors when building our shaded downstream artifacts.
_ Patch Compile Tests _
+1 💚mvninstall3m 29sthe patch passed
+1 💚compile1m 5sthe patch passed
+1 💚javac1m 5sthe patch passed
+1 💚javadoc0m 31sthe patch passed
+1 💚shadedjars7m 3spatch has no errors when building our shaded downstream artifacts.
_ Other Tests _
-1 ❌unit263m 12s/patch-unit-hbase-server.txthbase-server in the patch failed.
292m 25s
SubsystemReport/Notes
DockerClientAPI=1.52 ServerAPI=1.52 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/1/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile
GITHUB PR#6797
Optional Testsjavac javadoc unit compile shadedjars
unameLinux 5cce5f229655 6.14.0-1018-aws #18~24.04.1-Ubuntu SMP Mon Nov 24 19:46:27 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / c8ec640
Default JavaEclipse Adoptium-17.0.11+9
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/1/testReport/
Max. process+thread count4396 (vs. ulimit of 30000)
modulesC: hbase-server U: hbase-server
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6797/1/console
versionsgit=2.34.1 maven=3.9.8
Powered byApache Yetus 0.15.0 https://yetus.apache.org

This message was automatically generated.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@junegunn@Apache-HBase@Apache9