Use second channel for podSubscribers to trigger its removal by cluster go routine #1891
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.
Another continuation of #1876. It takes the idea of #1888 sending a poison pill to the
processPodEvent
function inside the cluster go routine. But instead of using a podEvent that has to queue up, we are using a second channel next to the podEvents channel of cluster.podSubscribers map. The latter is not a map of channels anymore, but a map ofpodSubscriber
struct consisting of two channels.When
waitForPodLabel
is finished with consuming podEvents it will write on the second channel which will trigger the removal of podSubscribers. So a next podEvent should not find the subscriber anymore and not write on a closed channel.fixes: #1867
closes #1876
closes #1888