[ 
https://issues.apache.org/jira/browse/HDDS-17288?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Siyao Meng updated HDDS-17288:
------------------------------
    Description: 
{code:title=acceptance (tools), ozonesecure-ha/test-repair-tools.sh}
Ratis-Transaction-Repair :: Test recovering from OM crash due to t... | PASS |
Waiting for container 'ozonesecure-ha-om1-1' to stop...
Timeout: Container 'ozonesecure-ha-om1-1' did not stop within 60 seconds.
ERROR: Test execution of ozonesecure-ha/test-repair-tools.sh is FAILED!!!!
{code}

h3. Root cause

{{repair/ratis-transaction-repair.robot}} uses Byteman to make 
{{OMBucketCreateRequest#validateAndUpdateCache}} throw, so each OM terminates 
from its apply transaction thread. The OM shutdown hook then blocks in 
{{omRatisServer.stop()}} until the shutdown hook timeout 
({{ozone.service.shutdown.timeout}}, default 60s) fires. This happens on every 
run, also on green {{master}} runs:

{code}
20:36:42,114 [om1-OMStateMachineApplyTransactionThread - 0] ERROR 
ratis.OzoneManagerStateMachine: Terminating with exit status 1: ...
20:36:46,182 [shutdown-hook-0] INFO server.GrpcServicesImpl: om1: Shutdown 
GrpcServerProtocolService successfully
20:37:42,125 [Thread-17] WARN util.ShutdownHookManager: ShutdownHook 
'OzoneManagerStarter$OMStarterHelper$$Lambda...' timeout, 
java.util.concurrent.TimeoutException
{code}

So each OM container needs a bit over 60s to exit after the crash, while 
{{repair_and_restart_om}} in {{test-repair-tools.sh}} waits at most 60s. The 
test passes only when the wait starts a few seconds after the crash. In the 
failed run, JVM pauses on the runner made om1's hook time out 62s after the 
crash, and the wait expired first.

h3. Fix

Set {{ozone.service.shutdown.timeout}} to 20s for the OMs in 
{{ozonesecure-ha/debug-tools.yaml}}, so a crashed OM exits well within the 
existing 60s wait. The blocked hook is idle until the timeout fires, so the 
shorter timeout only shortens that wait.

- https://github.com/apache/ozone/actions/runs/39665766133/job/119456369743

  was:
{code:title=acceptance (tools), ozonesecure-ha/test-repair-tools.sh}
Ratis-Transaction-Repair :: Test recovering from OM crash due to t... | PASS |
Waiting for container 'ozonesecure-ha-om1-1' to stop...
Timeout: Container 'ozonesecure-ha-om1-1' did not stop within 60 seconds.
ERROR: Test execution of ozonesecure-ha/test-repair-tools.sh is FAILED!!!!
{code}

h3. Root cause

{{repair/ratis-transaction-repair.robot}} uses Byteman to make 
{{OMBucketCreateRequest#validateAndUpdateCache}} throw, so each OM terminates 
from its apply transaction thread. The OM shutdown hook then blocks in 
{{omRatisServer.stop()}} until the shutdown hook timeout 
({{ozone.service.shutdown.timeout}}, default 60s) fires. This happens on every 
run, also on green {{master}} runs:

{code}
20:36:42,114 [om1-OMStateMachineApplyTransactionThread - 0] ERROR 
ratis.OzoneManagerStateMachine: Terminating with exit status 1: ...
20:36:46,182 [shutdown-hook-0] INFO server.GrpcServicesImpl: om1: Shutdown 
GrpcServerProtocolService successfully
20:37:42,125 [Thread-17] WARN util.ShutdownHookManager: ShutdownHook 
'OzoneManagerStarter$OMStarterHelper$$Lambda...' timeout, 
java.util.concurrent.TimeoutException
{code}

So each OM container needs a bit over 60s to exit after the crash, while 
{{repair_and_restart_om}} in {{test-repair-tools.sh}} waits at most 60s. The 
test passes only when the wait starts a few seconds after the crash. In the 
failed run, JVM pauses on the runner made om1's hook time out 62s after the 
crash, and the wait expired first.

h3. Fix

Wait up to 120s for the OM container to stop, so the wait covers the 60s 
shutdown hook timeout.

- https://github.com/apache/ozone/actions/runs/39665766133/job/119456369743


> Intermittent failure in test-repair-tools.sh waiting for OM container to stop
> -----------------------------------------------------------------------------
>
>                 Key: HDDS-17288
>                 URL: https://issues.apache.org/jira/browse/HDDS-17288
>             Project: Apache Ozone
>          Issue Type: Sub-task
>          Components: test, Tools
>            Reporter: Siyao Meng
>            Assignee: Siyao Meng
>            Priority: Major
>              Labels: pull-request-available
>
> {code:title=acceptance (tools), ozonesecure-ha/test-repair-tools.sh}
> Ratis-Transaction-Repair :: Test recovering from OM crash due to t... | PASS |
> Waiting for container 'ozonesecure-ha-om1-1' to stop...
> Timeout: Container 'ozonesecure-ha-om1-1' did not stop within 60 seconds.
> ERROR: Test execution of ozonesecure-ha/test-repair-tools.sh is FAILED!!!!
> {code}
> h3. Root cause
> {{repair/ratis-transaction-repair.robot}} uses Byteman to make 
> {{OMBucketCreateRequest#validateAndUpdateCache}} throw, so each OM terminates 
> from its apply transaction thread. The OM shutdown hook then blocks in 
> {{omRatisServer.stop()}} until the shutdown hook timeout 
> ({{ozone.service.shutdown.timeout}}, default 60s) fires. This happens on 
> every run, also on green {{master}} runs:
> {code}
> 20:36:42,114 [om1-OMStateMachineApplyTransactionThread - 0] ERROR 
> ratis.OzoneManagerStateMachine: Terminating with exit status 1: ...
> 20:36:46,182 [shutdown-hook-0] INFO server.GrpcServicesImpl: om1: Shutdown 
> GrpcServerProtocolService successfully
> 20:37:42,125 [Thread-17] WARN util.ShutdownHookManager: ShutdownHook 
> 'OzoneManagerStarter$OMStarterHelper$$Lambda...' timeout, 
> java.util.concurrent.TimeoutException
> {code}
> So each OM container needs a bit over 60s to exit after the crash, while 
> {{repair_and_restart_om}} in {{test-repair-tools.sh}} waits at most 60s. The 
> test passes only when the wait starts a few seconds after the crash. In the 
> failed run, JVM pauses on the runner made om1's hook time out 62s after the 
> crash, and the wait expired first.
> h3. Fix
> Set {{ozone.service.shutdown.timeout}} to 20s for the OMs in 
> {{ozonesecure-ha/debug-tools.yaml}}, so a crashed OM exits well within the 
> existing 60s wait. The blocked hook is idle until the timeout fires, so the 
> shorter timeout only shortens that wait.
> - https://github.com/apache/ozone/actions/runs/39665766133/job/119456369743



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to