[ 
https://issues.apache.org/jira/browse/HDDS-5529?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17437119#comment-17437119
 ] 

Xu Shao Hong commented on HDDS-5529:
------------------------------------

I met a similar issue that the SCM leader had an IO error of sequenceId  and 
could not allocate blocks among SCMs,which blocks the new file to be written in 
the cluster. The leader SCM wouldn't crash and keep unserviceable.

> For any exception from addToBuffer or removeFromBuffer we should throw 
> exception
> --------------------------------------------------------------------------------
>
>                 Key: HDDS-5529
>                 URL: https://issues.apache.org/jira/browse/HDDS-5529
>             Project: Apache Ozone
>          Issue Type: Sub-task
>            Reporter: Jackson Yao
>            Assignee: Jackson Yao
>            Priority: Major
>
> 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.3.4#803005)

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

Reply via email to