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.
The
Racecar::Producer.shutdown!
method was not actually closing the underlying rdkafka producer, because it was looking for a class instance variable named@internal_producer
which did not exist. I suspect this stemmed from confusion over the use of both the class variable@@init_internal_producer
as well as the instance variable (not class instance variable)@internal_producer
.I've fixed the bug in
Racecar::Producer.shutdown!
and tried to simplify things somewhat. Now the class variable@@internal_producer
holds the reference to the shared rdkafka producer. Instead of maintaining a duplicate instance variable referencing the same object, the privateRacecar::Producer#internal_producer
instance method simply returns the class variable. I also modified the test logic so that it no longer directly manipulates private implementation details.I also added a new
Racecar::Producer.reset!
method, which closes the rdkafka producer and then nils out any references to it, to allow the producer to be recreated again later. This logic is specifically to support contexts where we need to produce messages within a forked process. The newreset!
method implements best practices around forking in rdkafka-ruby.