-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Refactor task execution system: improve call stack management #7035
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor task execution system: improve call stack management #7035
Conversation
consoleErrorSpy.mockRestore() | ||
}) | ||
|
||
test("should clean up all resources in correct order", () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider adding tests to verify that additional cleanup operations (e.g. unsubscribing from task bridge, releasing terminals, closing browsers, and disposing of controllers) are being invoked. This would further ensure that dispose fully prevents resource leaks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your contribution! I've reviewed the changes and found that while the memory leak fix in the dispose() method is excellent, the recursive-to-iterative refactoring needs some adjustments to fully achieve its goal.
a988451
to
e60e90b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @catrielmuller!
e60e90b
to
42f6cf0
Compare
* main: (70 commits) fix: use native Ollama API instead of OpenAI compatibility layer (RooCodeInc#7137) feat: add support for OpenAI gpt-5-chat-latest model (RooCodeInc#7058) Make enhance with task history default to true (RooCodeInc#7140) Bump cloud version to 0.16.0 (RooCodeInc#7135) Release: v1.51.0 (RooCodeInc#7130) Add an API for resuming tasks by ID (RooCodeInc#7122) Add support for task page event population (RooCodeInc#7117) fix: add type check before calling .match() on diffItem.content (RooCodeInc#6905) (RooCodeInc#6906) Fix: Enable save button for provider dropdown and checkbox changes (RooCodeInc#7113) fix: Use cline.cwd as primary source for workspace path in codebaseSearchTool (RooCodeInc#6902) Hotfix multiple folder workspace checkpoint (RooCodeInc#6903) fix: prevent XML entity decoding in diff tools (RooCodeInc#7107) (RooCodeInc#7108) Refactor task execution system: improve call stack management (RooCodeInc#7035) Changeset version bump (RooCodeInc#7104) feat(web): fill missing SEO-related values (RooCodeInc#7096) Update contributors list (RooCodeInc#6883) Release v3.25.15 (RooCodeInc#7103) fix: add /evals page to sitemap generation (RooCodeInc#7102) feat: implement sitemap generation in TypeScript and remove XML file (RooCodeInc#6206) fix: reset condensing state when switching tasks (RooCodeInc#6922) ...
Related GitHub Issue
Related: #5601
Description
Refactors the recursive recursivelyMakeClineRequests method to use an iterative stack-based approach to prevent potential stack overflow issues and memory leaks.
On some scenarios like a long task continue execution, a deep call stack can cause performance degradation and unnecessary open functions that prevent the run of the GC properly.
Implementation
Test Procedure
#5601
Pre-Submission Checklist
Screenshots / Videos
Documentation Updates
Does this PR necessitate updates to user-facing documentation?
Additional Notes
Get in Touch
Discord: catrielmuller
Important
Refactor task execution system to use an iterative approach, enhance memory management, and add Nix flake configuration for development.
recursivelyMakeClineRequests()
inTask.ts
from recursive to iterative to prevent stack overflow.Task.dispose()
inTask.ts
to remove all event listeners, preventing memory leaks.flake.nix
,flake.lock
,.envrc
) for development environment setup.Task.dispose.test.ts
to testTask.dispose()
method for proper resource cleanup and error handling.This description was created by
for a988451. You can customize this summary. It will automatically update as commits are pushed.