[FLUSS-1855][server] Add Null Safety for TimerTaskEntry Removal #1872
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.
Purpose
Linked Issue: Close #1855
Per Issue #1855, this pull request addresses a potential issue that could arise during the
remove()operation forTimerTaskEntrythat could result in a null pointer exception being thrown. This was possible as the underlying object to support the internal list was volatile and subject to operations from other threads.Brief change log
Update the logic within the
TimerTaskEntry.remove()operation to use a more concurrency-safe single-read snapshot pattern to avoid separate reads (e.g., reading during iteration and within the body as well). These changes were originally reproduced via a newly added unit test and retained to ensure the issue was resolved as expected.Tests
Added a new
TimerTaskEntryTestclass along with an associatedTimerTaskEntryTest.testRemoveEnsuresCurrentListNullSafetycase that originally reproduced this issue (via concurrent, oscillating add/removals across separate threads) which was eventually updated after the fix was applied to confirm the exception will no longer be thrown.API and Format
N/A
Documentation
N/A