[C#] fix: When streaming operation failed the exception is suppressed. #2122
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Linked issues
closes: #minor
Details
Exceptions thrown in
DrainQueue()
are being supressed as the method runs on a worker thread and the correspondingTask
is never resolved by the main thread.With the fix, when
this._queueSync
is awaited inEndStream()
, an exception will be thrown if the correspondingTask
is faulted (i.e. an exception is thrown fromDrainQueue()
.Change details
this._queueSync
to null when queue is empty. This means thatthis._queueSync
can be either null or assigned a Task at any given time.this._queueSync
is not null then an additional checkthis._queueSync.isTaskCompleted
is made to check whetherDrainQueue
Task has completed or not.If streaming operation fails, the exception will be thrown:
Attestation Checklist
My code follows the style guidelines of this project
I have checked for/fixed spelling, linting, and other errors
I have commented my code for clarity
I have made corresponding changes to the documentation (updating the doc strings in the code is sufficient)
My changes generate no new warnings
I have added tests that validates my changes, and provides sufficient test coverage. I have tested with:
New and existing unit tests pass locally with my changes