[
https://issues.apache.org/jira/browse/HDDS-5529?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jie Yao updated HDDS-5529:
--------------------------
Summary: For any IOexception from @Replicated method we should throw it
(was: HDDS-5529. For any IOexception from @Replicated method we should throw it)
> For any IOexception from @Replicated method we should throw it
> --------------------------------------------------------------
>
> Key: HDDS-5529
> URL: https://issues.apache.org/jira/browse/HDDS-5529
> Project: Apache Ozone
> Issue Type: Sub-task
> Reporter: Jie Yao
> Assignee: Jie Yao
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.3.0
>
>
> when HA is enabled , if an exception is thrown when applying transaction,
> scm will be termainated , so that DBs of different scms will not diverge.
> {code:java}
> public CompletableFuture<Message> applyTransaction(
> final TransactionContext trx) {
> final CompletableFuture<Message> applyTransactionFuture =
> new CompletableFuture<>();
> try {
> final SCMRatisRequest request = SCMRatisRequest.decode(
> Message.valueOf(trx.getStateMachineLogEntry().getLogData()));
> applyTransactionFuture.complete(process(request));
> // After previous term transactions are applied, still in safe mode,
> // perform refreshAndValidate to update the safemode rule state.
> if (scm.isInSafeMode() && refreshedAfterLeaderReady.get()) {
> scm.getScmSafeModeManager().refreshAndValidate();
> }
> transactionBuffer.updateLatestTrxInfo(TransactionInfo.builder()
> .setCurrentTerm(trx.getLogEntry().getTerm())
> .setTransactionIndex(trx.getLogEntry().getIndex())
> .build());
> } catch (Exception ex) {
> applyTransactionFuture.completeExceptionally(ex);
> ExitUtils.terminate(1, ex.getMessage(), ex, StateMachine.LOG);
> }
> return applyTransactionFuture;
> }
> {code}
> so , we should make sure if HA is enabled , all the exception will be throw
> out at `@Replicate` functions
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]