fix: Broadcast of post to sse blocks execution #11
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.
It seems some issues around the Broadcast functionality was blocking my entire post db writer causing the feed to go stale as no posts were being written.
Two fixes have been implemented for this. First the Broadcast receiver function no longer requests a mutex lock. If it tries to send a post to a closed or nil channel, we don't really care. Locking for every post coming in would likely lead to situations where multiple calls to Broadcast would be waiting for the previous to complete sending channel events.
Secondly the Broadcast call is called in a go routine (i.e. go server.Broadcast(post)). This should allow the post subscriber in the serve command to quickly process the posts regardless of how long the broadcast function uses to loop over SSE clients.
Fixes #10