usaguerrilla opened a new issue #56:
URL: https://github.com/apache/pulsar-dotpulsar/issues/56


   If I add the following exceptions cases into default handler then consumer 
and producer can reconnect. IMHO handler is a dangerous things as if 
implementation or underlying .net changes and new exceptions are thrown we 
might end up with server applications which hang from time to time for no 
apparent reason.
   
   ```
   PersistenceException _ => FaultAction.Retry,
   IOException _ => FaultAction.Retry,
   ```
   
   These exception are throw if channel was sending data to the server at the 
time server went down.
   
   Full code:
   
   ```
   private FaultAction DetermineFaultAction(Exception exception, 
CancellationToken cancellationToken)
       => exception switch
       {
           PersistenceException _ => FaultAction.Retry,
           IOException _ => FaultAction.Retry,
           TooManyRequestsException _ => FaultAction.Retry,
           ChannelNotReadyException _ => FaultAction.Retry,
           ServiceNotReadyException _ => FaultAction.Retry,
           ConnectionDisposedException _ => FaultAction.Retry,
           AsyncLockDisposedException _ => FaultAction.Retry,
           PulsarStreamDisposedException _ => FaultAction.Retry,
           AsyncQueueDisposedException _ => FaultAction.Retry,
           OperationCanceledException _ => 
cancellationToken.IsCancellationRequested ? FaultAction.Rethrow : 
FaultAction.Retry,
           DotPulsarException _ => FaultAction.Rethrow,
           SocketException socketException => socketException.SocketErrorCode 
switch
           {
               SocketError.HostNotFound => FaultAction.Rethrow,
               SocketError.HostUnreachable => FaultAction.Rethrow,
               SocketError.NetworkUnreachable => FaultAction.Rethrow,
               _ => FaultAction.Retry
           },
           _ => FaultAction.Rethrow
       };
   
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to