You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am having the following setup: I am using async-sink that targets azuretablestorage-sink. All nice and good until azuretablestorage starts throwing some timeout exceptions (for whatever reasons).
The thing is that when a timeout occurs (or any other exception) in the target sink,
the entire worker thread crashes (BackgroundWorkerSink.Pump()) and events from the queue are no longer dequeued and emitted trough the pipeline, so the queue quickly reaches max capacity and then drops out incoming events. Basically all logging mechanism is dead because of a single timeout.
I was wondering if wouldn't be nice to catch exceptions from the target sink and write them to selflog and let the worker thread continue pumping the rest of the events in the queue?
Eventually failed events could be stored and retried later.
Or exceptions like this should be treated in the target sink? what do you think?
The text was updated successfully, but these errors were encountered:
silviucotilici
changed the title
BackgroundWorkerSink crashes if next sink in the pipeline throws an exception
BackgroundWorkerSink crashes if target sink throws an exception
Jun 6, 2019
Hello guys,
I am having the following setup: I am using async-sink that targets azuretablestorage-sink. All nice and good until azuretablestorage starts throwing some timeout exceptions (for whatever reasons).
The thing is that when a timeout occurs (or any other exception) in the target sink,
the entire worker thread crashes (
BackgroundWorkerSink.Pump()
) and events from the queue are no longer dequeued and emitted trough the pipeline, so the queue quickly reaches max capacity and then drops out incoming events. Basically all logging mechanism is dead because of a single timeout.I was wondering if wouldn't be nice to catch exceptions from the target sink and write them to selflog and let the worker thread continue pumping the rest of the events in the queue?
Eventually failed events could be stored and retried later.
Or exceptions like this should be treated in the target sink? what do you think?
The text was updated successfully, but these errors were encountered: