다음을 통해 공유


ActorRemotingExceptionHandler Class

public class ActorRemotingExceptionHandler extends ServiceRemotingExceptionHandler

This class provide handling of exceptions encountered in communicating with service fabric actors over remoted actor interfaces.

Remarks: This exception handler handles exceptions related to the following scenarios:

    <li>
    
      <p>&lt;cite&gt;Duplicate Messages:&lt;/cite&gt; </p>
    
      <p>Operations performed on the actor are retried from the client based on the exception handling logic. These exceptions represent various error condition including service failover. Therefore it is possible for the actors to receive duplicate messages. If a duplicate message is received while previous message is being processed by the actor, runtime return an internal exception to the client. The client then retries the operation to get the result back from the actor. From the actor's perspective duplicate operation will be performed by the clients and it should handle it in the similar manner as if the operation was already processed and then a duplicate message arrived. </p>
    
      <p></p>
    
      <p></p>
    
    </li>
    
    <li>
    
      <p>&lt;cite&gt;<xref uid="microsoft.servicefabric.actors.ActorConcurrencyLockTimeoutException" data-throw-if-not-resolved="false" data-raw-source="ActorConcurrencyLockTimeoutException"></xref>:&lt;/cite&gt; </p>
    
      <p>Operations on the actors are performed using a turn based concurrency lock ( <xref uid="" data-throw-if-not-resolved="false" data-raw-source="ActorConcurrencySettings"></xref>) that supports logical call context based reentrancy. In case of the long running actor operations it is possible for acquisition of this lock to time out. The acquisition of the lock can also time out in case of the deadlock situations (actor A and actor B calling each other almost at the same time). </p>
    
      <p></p>
    
      <p>The exception related to concurrency lock timeout is handled by returning <xref uid="" data-throw-if-not-resolved="false" data-raw-source="ExceptionHandlingRetryResult"></xref> from the <xref uid="microsoft.servicefabric.services.communication.client.ExceptionHandler.handleException(ExceptionInformation,OperationRetrySettings)" data-throw-if-not-resolved="false" data-raw-source="ExceptionHandler#handleException(ExceptionInformation, OperationRetrySettings)"></xref> method if the client performing the operation is not another actor. The <xref uid="" data-throw-if-not-resolved="false" data-raw-source="ExceptionHandlingRetryResult#isTransient"></xref> property of the <xref uid="" data-throw-if-not-resolved="false" data-raw-source="ExceptionHandlingRetryResult"></xref> is set to true, the <xref uid="" data-throw-if-not-resolved="false" data-raw-source="ExceptionHandlingRetryResult"></xref>'s retryDelay property is set to a random value up to <xref uid="" data-throw-if-not-resolved="false" data-raw-source="OperationRetrySettings"></xref>'s MaxRetryBackoffIntervalOnTransientErrors and <xref uid="" data-throw-if-not-resolved="false" data-raw-source="ExceptionHandlingRetryResult"></xref>'s MaxRetryCount property is set to <xref uid="" data-throw-if-not-resolved="false" data-raw-source="Integer#MAX_VALUE"></xref>. </p>
    
      <p></p>
    
      <p>The exception related to concurrency lock timeout is handled by returning <xref uid="" data-throw-if-not-resolved="false" data-raw-source="ExceptionHandlingThrowResult"></xref> from the <xref uid="microsoft.servicefabric.services.communication.client.ExceptionHandler.handleException(ExceptionInformation,OperationRetrySettings)" data-throw-if-not-resolved="false" data-raw-source="ExceptionHandler#handleException(ExceptionInformation, OperationRetrySettings)"></xref> method, if the client performing the operation is another actor. In the deadlock situations this allows the call chain to unwind all the way back to the original client and the operation is then retried from there. </p>
    
      <p></p>
    
    </li>
    

Constructor Summary

Constructor Description
ActorRemotingExceptionHandler(String traceId)

Constructs a ActorRemotingExceptionHandler with a specified trace id.

Method Summary

Modifier and Type Method and Description
ExceptionHandlingResult handleException(ExceptionInformation exceptionInformation, OperationRetrySettings retrySettings)

Method that examines the exception and determines how that exception can be handled.

Inherited Members

Constructor Details

ActorRemotingExceptionHandler

public ActorRemotingExceptionHandler(String traceId)

Constructs a ActorRemotingExceptionHandler with a specified trace id.

Parameters:

traceId - Id to use in diagnostics traces from this component.

Method Details

handleException

public ExceptionHandlingResult handleException(ExceptionInformation exceptionInformation, OperationRetrySettings retrySettings)

Method that examines the exception and determines how that exception can be handled.

Overrides:

ActorRemotingExceptionHandler.handleException(ExceptionInformation exceptionInformation, OperationRetrySettings retrySettings)

Parameters:

exceptionInformation - Information about the exception.
retrySettings - The operation retry preferences.

Returns:

Result of the exception handling.

Applies to