[
https://issues.apache.org/jira/browse/HDDS-15052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tsz-wo Sze updated HDDS-15052:
------------------------------
Description:
HDDS-14040 changed ContainerStateMachine.writeStateMachineData(..) from
throwing an exception to returning a ContainerCommandResponseProto. As a
result, if there is an exception such as disk-out-of-space, the underlying
problem is ignored. Also, failed transactions can be returned success to
clients.
HDDS-12151 is a related JIRA having a similar change, although it may or may
not cause the same problem.
The correct fix is to change applyTransaction(..) to detect if
writeStateMachineData(..) has succeeded. If writeStateMachineData(..) has
failed, applyTransaction(..) should
# stop committing it to rocksdb,
# complete the future exceptionally such that the exception will be returned
to client, and
# shut down the server/pipeline if the failure cannot be recovered.
was:
HDDS-14040 changed ContainerStateMachine.writeStateMachineData(..) from
throwing an exception to returning a ContainerCommandResponseProto. As a
result, if there is an exception such as disk-out-of-space, the underlying
problem is ignored. Also, failed transactions can be returned success to
clients.
HDDS-12151 is a related JIRA having a similar change, although it may or may
not cause data loss.
The correct fix is to change applyTransaction(..) to detect if
writeStateMachineData(..) has succeeded. If writeStateMachineData(..) has
failed, applyTransaction(..) should
# stop committing it to rocksdb,
# complete the future exceptionally such that the exception will be returned
to client, and
# shut down the server/pipeline if the failure cannot be recovered.
> HDDS-14040 may break majority commit contract
> ---------------------------------------------
>
> Key: HDDS-15052
> URL: https://issues.apache.org/jira/browse/HDDS-15052
> Project: Apache Ozone
> Issue Type: Bug
> Components: Ozone Datanode
> Reporter: Tsz-wo Sze
> Assignee: Sumit Agrawal
> Priority: Major
>
> HDDS-14040 changed ContainerStateMachine.writeStateMachineData(..) from
> throwing an exception to returning a ContainerCommandResponseProto. As a
> result, if there is an exception such as disk-out-of-space, the underlying
> problem is ignored. Also, failed transactions can be returned success to
> clients.
> HDDS-12151 is a related JIRA having a similar change, although it may or may
> not cause the same problem.
> The correct fix is to change applyTransaction(..) to detect if
> writeStateMachineData(..) has succeeded. If writeStateMachineData(..) has
> failed, applyTransaction(..) should
> # stop committing it to rocksdb,
> # complete the future exceptionally such that the exception will be returned
> to client, and
> # shut down the server/pipeline if the failure cannot be recovered.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]