jvmdc opened a new pull request, #108: URL: https://github.com/apache/pulsar-dotpulsar/pull/108
Currently if an exception happens in the Producer, the stack trace will look like this: ``` System.Net.Sockets.SocketException (11001): No such host is known. at DotPulsar.Internal.Producer`1.ChoosePartitions(MessageMetadata metadata, CancellationToken cancellationToken) at DotPulsar.Internal.Producer`1.Send(MessageMetadata metadata, TMessage message, CancellationToken cancellationToken) [... My own code here...] ``` There is no functionality in the ChoosePartitions method that generates a SocketException, making the stack trace a bit useless. This PR throws the exception stored in the `_throw` variable using ExceptionDispatchInfo thus retaining the original stack trace. In the case of the SocketException above, this becomes: ``` System.Net.Sockets.SocketException (11001): No such host is known. at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c.<.cctor>b__4_0(Object state) --- End of stack trace from previous location --- at System.Net.Sockets.TcpClient.CompleteConnectAsync(Task task) at DotPulsar.Internal.Connector.GetStream(String host, Int32 port) at DotPulsar.Internal.Connector.Connect(Uri serviceUrl) at DotPulsar.Internal.ConnectionPool.EstablishNewConnection(PulsarUrl url, CancellationToken cancellationToken) at DotPulsar.Internal.ConnectionPool.GetConnection(PulsarUrl url, CancellationToken cancellationToken) at DotPulsar.Internal.ConnectionPool.GetConnection(Uri serviceUrl, CancellationToken cancellationToken) at DotPulsar.Internal.ConnectionPool.FindConnectionForTopic(String topic, CancellationToken cancellationToken) at DotPulsar.Internal.Producer`1.GetNumberOfPartitions(String topic, CancellationToken cancellationToken) at DotPulsar.Internal.Producer`1.Monitor() at DotPulsar.Internal.Executor.Execute(Func`1 func, CancellationToken cancellationToken) at DotPulsar.Internal.Executor.Execute(Func`1 func, CancellationToken cancellationToken) at DotPulsar.Internal.Producer`1.Setup() at DotPulsar.Internal.Producer`1.ChoosePartitions(MessageMetadata metadata, CancellationToken cancellationToken) at DotPulsar.Internal.Producer`1.Send(MessageMetadata metadata, TMessage message, CancellationToken cancellationToken) [... My own code here...] ``` which points to where the error actually happens :) -- 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. To unsubscribe, e-mail: dev-unsubscr...@pulsar.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org