[
https://issues.apache.org/jira/browse/HDDS-16712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18125834#comment-18125834
]
Adweta Ojha commented on HDDS-16712:
------------------------------------
Hi, I’m interested in working on this issue.
I went through the failure path and the discussion above. My understanding is
that the Kubernetes timing change would only hide the underlying problem, and
that the fix should address how SCM handles this transient pipeline churn
during datanode re-registration.
I’d like to investigate the SCM-side behavior, particularly the case where
{{WritableRatisContainerProvider}} is waiting on ALLOCATED pipeline IDs that
are subsequently removed while replacement pipelines are being created.
Is this issue available for me to pick up? Also, should I focus on a bounded
SCM-side recovery/re-evaluation here, or would you prefer the
{{KEY_ALLOCATION_ERROR}} / client-retry direction mentioned above?
> Key creation fails intermittently in k8s after datanodes restart
> ----------------------------------------------------------------
>
> Key: HDDS-16712
> URL: https://issues.apache.org/jira/browse/HDDS-16712
> Project: Apache Ozone
> Issue Type: Bug
> Components: Ozone Client, Ozone Manager, SCM
> Reporter: Attila Doroszlai
> Priority: Major
>
> Intermittent failure of key generator after datanodes are restarted in
> {{kubernetes}}:
> {code}
> Ozone Client Key Generator | FAIL |
> 255 != 0
> {code}
> {code}
> 2026-10-04 10:57:23 INFO BaseFreonGenerator:317 - Executing test with prefix
> ockgpost and number-of-tests 1
> 2026-10-04 10:57:23 INFO ProgressBar:167 - Progress: 0.00 % (0 out of 1)
> 2026-10-04 10:57:24 ERROR BaseFreonGenerator:231 - Error on executing task 0
> INTERNAL_ERROR org.apache.hadoop.ozone.om.exceptions.OMException: Unable to
> allocate a container to the block of size: 268435456, replicationConfig:
> RATIS/THREE. Waiting for one of pipelines to be OPEN failed. The input
> pipeline IDs 521df264-010e-43d8-a0e2-dbbe8ac0f757 cannot be found
> at
> org.apache.hadoop.ozone.om.protocolPB.OzoneManagerProtocolClientSideTranslatorPB.handleError(OzoneManagerProtocolClientSideTranslatorPB.java:805)
> at
> org.apache.hadoop.ozone.om.protocolPB.OzoneManagerProtocolClientSideTranslatorPB.handleSubmitRequestAndSCMSafeModeRetry(OzoneManagerProtocolClientSideTranslatorPB.java:2531)
> at
> org.apache.hadoop.ozone.om.protocolPB.OzoneManagerProtocolClientSideTranslatorPB.openKey(OzoneManagerProtocolClientSideTranslatorPB.java:792)
> at
> org.apache.hadoop.ozone.client.rpc.RpcClient.openOutputStream(RpcClient.java:1520)
> at
> org.apache.hadoop.ozone.client.rpc.RpcClient.createKey(RpcClient.java:1435)
> at
> org.apache.hadoop.ozone.client.rpc.RpcClient.createKey(RpcClient.java:1420)
> at
> org.apache.hadoop.ozone.client.OzoneBucket.createKey(OzoneBucket.java:500)
> at
> org.apache.hadoop.ozone.client.OzoneBucket.createKey(OzoneBucket.java:480)
> at
> org.apache.hadoop.ozone.freon.OzoneClientKeyGenerator.lambda$createKeyWithData$0(OzoneClientKeyGenerator.java:136)
> at com.codahale.metrics.Timer.time(Timer.java:101)
> at
> org.apache.hadoop.ozone.freon.OzoneClientKeyGenerator.createKeyWithData(OzoneClientKeyGenerator.java:135)
> at
> org.apache.hadoop.ozone.freon.OzoneClientKeyGenerator.createKey(OzoneClientKeyGenerator.java:129)
> at
> org.apache.hadoop.ozone.freon.BaseFreonGenerator.tryNextTask(BaseFreonGenerator.java:225)
> at
> org.apache.hadoop.ozone.freon.BaseFreonGenerator.runTaskLoop(BaseFreonGenerator.java:206)
> at
> org.apache.hadoop.ozone.freon.BaseFreonGenerator.taskLoop(BaseFreonGenerator.java:180)
> at
> org.apache.hadoop.ozone.freon.BaseFreonGenerator.lambda$startTaskRunners$0(BaseFreonGenerator.java:171)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
> at java.base/java.lang.Thread.run(Thread.java:1474)
> 2026-10-04 10:57:24 INFO ProgressBar:167 - Progress: 100.00 % (1 out of 1)
> One or more freon test is failed.
> 2026-10-04 10:57:24 INFO metrics:373 - type=TIMER, name=key-create, count=1,
> min=137.43811, max=137.43811, mean=137.43811, stddev=0.0, median=137.43811,
> p75=137.43811, p95=137.43811, p98=137.43811, p99=137.43811, p999=137.43811,
> mean_rate=4.5610858427462215, m1=0.0, m5=0.0, m15=0.0,
> rate_unit=events/second, duration_unit=milliseconds
> 2026-10-04 10:57:24 INFO BaseFreonGenerator:75 - Total execution time (sec):
> 1
> 2026-10-04 10:57:24 INFO BaseFreonGenerator:75 - Failures: 1
> {code}
> - Datanodes register after the restart one by one, triggering pipeline
> creation and closure. State becomes stable after the third DN is updated.
> - If there are no candidate containers, WritableRatisContainerProvider checks
> if any pipelines are in ALLOCATED state, and waits for them to become OPEN.
> If they are then closed, new ones will be allocated. If they are closed in
> the meantime, SCM gives up.
> - Client only retries write, but not {{openKey}}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]