Changed the default converters to use local instead of class variables #1110
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.
Fix as indicated in #1103
The value returned by a converter must not be a reference to a static variable. Instead, in this project the default converters use a class variable (
self.dict_result
) to process the received message, and return it at the end.So if 2 different messages are queued in
__converted_data_queue
while__send_to_storage
thread is in its 0.2s sleep, when it wakes up it found a queue of size 2 but both elements have the same reference, whose value is both times the last value assigned to that variable (the last converted message).The solution is to use a local variable inside the convert function (
dict_result
instead ofself.dict_result
).