fix: config traversal, timer rethrow, stack-trace reset, lock scope (MAPCO-11323) - #258
Open
shimoncohen wants to merge 1 commit into
Open
fix: config traversal, timer rethrow, stack-trace reset, lock scope (MAPCO-11323)#258shimoncohen wants to merge 1 commit into
shimoncohen wants to merge 1 commit into
Conversation
…MAPCO-11323) Four independent correctness fixes in MergerLogic. - ConfigurationManager.GetChildren: the traversal loop read from the root config each iteration instead of the accumulated section, and its bounds re-applied the last key. Correct for 2-part paths (the only current caller) but wrong for 1- and 3+-part paths. Walk the accumulated section instead. - HeartbeatClient.Send (Timer.Elapsed handler): rethrew on failure. The Timer discards it and an unhandled exception on the timer thread can tear down the process. Log and let the next tick retry. - S3Client: `throw e;` reset the exception stack trace on the non-key error paths; use `throw;` to preserve it. - Gpkg/Fs/S3: the batch _locker was static, so every instance serialized its paging against every other instance. Make it per-instance — the state it guards is per-instance — which also unblocks parallelism for SVC-1. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
shimoncohen
marked this pull request as ready for review
August 5, 2026 09:55
shimoncohen
requested review from
CL-SHLOMIKONCHA,
almog8k,
asafmas-rnd,
razbroc and
syncush
August 5, 2026 09:55
syncush
approved these changes
Aug 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
LOGIC-4 of MAPCO-11317. Four independent correctness fixes.
Fixes
ConfigurationManager.GetChildrenwalked from the root section on every loop iteration (not the accumulated section) and its bounds re-applied the final key. Works for 2-part paths — which is the only current caller,GetChildren("TASK","types")— but silently wrong for 1-part and 3+-part paths. Now traverses the accumulated section.HeartbeatClient.Sendis aTimer.Elapsedhandler that rethrew on failure.System.Timers.Timerdiscards it, and an unhandled exception on the timer thread can tear down the process. Now logs and lets the next tick retry.S3Clientusedthrow e;on its non-key error paths, resetting the exception's stack trace. Changed tothrow;.Gpkg/Fs/S3held their batch_lockerasstatic, so every data-source instance serialized paging against every other instance. The guarded state is per-instance, so the lock is now per-instance. Also unblocks parallelism for SVC-1 (MAPCO-11325).Testing
Full suite: 1141 passed, 0 failed. Fixes 1 and 4 preserve current behavior for existing call sites (2-part config path; single-instance paging) while correcting the latent/ cross-instance cases; 2 and 3 change only failure-path behavior.
ConfigurationManagerbuilds itsIConfigurationfrom files in its ctor and isn't injectable, soGetChildrenhas no isolated unit test; the fix is exercised via theTaskRunnerpath.🤖 Generated with Claude Code