harden get_critical_path against recursion/complexity DoS#6
Open
harden get_critical_path against recursion/complexity DoS#6
Conversation
|
Hi @jkowall, thanks for your contribution! To ensure quality reviews, we limit how many concurrent PRs new contributors can open:
This PR is currently on hold. We will automatically move this into the review queue once your existing PRs are merged or closed. Please see our Contributing Guidelines for details on our tiered quota policy. |
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.
Motivation
Description
computeCriticalPathwith an iterative traversal loop to avoid deep recursion and repeated rescans (filecriticalpath/criticalpath.go).childSelectorcache that pre-sorts each parent's children by end time and advances via an index to avoid full sibling rescans (functionsnewChildSelector,findLastFinishingChild, andsortedChildrenByEndTimeDesc).returningChildStartTimewhile eliminating quadratic behavior.TestComputeCriticalPath_FlatTraceLargeFanoutto exercise flat traces with many siblings (filecriticalpath/criticalpath_test.go).Testing
make fmtcompleted successfully in this environment.go test ./cmd/jaeger/internal/extension/jaegermcp/internal/criticalpathand passed.make lintand the repository-widemake testwere started but the long-running lint/test jobs did not complete within this environment, so full-repo linting and test-suite confirmation could not be completed here.Codex Task