auditd: Give up writing error if channel full. #87
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.
Prior to this change, I noticed TestAuditd_Read_AuditEventWriterError would occasionally fail with the error: "panic: test timed out after 10m0s". This can be seen in the linked GitHub CI run. [1]
I was able to reproduce this failure by re-running the test several times locally. [2] I am not entirely sure what the failure is caused by, as adding logging caused the issue to stop occurring). Looking at the CI log, it seems like the ReassemblyComplete method was called by two different Go routines. The Go routines became blocked trying to write to the errors channel. [1]
I noticed that the reassemblerCB callback does not bound the errors channel write with any other event. As a result, a blocked write will cause a deadlock.
There are at least two ways to deal with this:
I opted for the second option because it is the simplest.
References: