Android: Fix crash in handleDroppedPeers #270
Merged
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.
Fixes synonymdev/bitkit#2133
(Android-only) Fix to avoid
ConcurrentModificationException
whileaddedPeers
list is modified from other thread.Former setup:
TimerTask
which creates a different thread each time it's invokedaddedPeers
from react-native, there was a chance to get into this issue especially at app start, when both the react-native code as well as the native LDKModule code would mutate the same list.Fix:
Use a thread-safe mutable list implementation, I picked
ConcurrentLinkedQueue
because it's less resource-consuming than other options.Extra:
Rewrote the implementation of the scheduled repeating task, to use more performant and adequate APIs which actually wait for the scheduled work to finish, then delay the next execution with 3 seconds.