agentscope-ai / agentscope-ai/agentscope-java

[Enhancement]: LocalFilesystemWithShell.execute — bound capture during drain, Future-based teardown, dual-stream test

Đang mở
#2,850 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
enhancement
Ngôn ngữ chính
Java
Star
5.6k
Fork
1.3k
Merge trung bình
4 ngày 12 giờ
Pull request đã merge (30 ngày)
77

Mô tả

Follow-ups from the review of #2839 (which fixed the pipe deadlock by draining stdout/stderr concurrently with `waitFor`):

1. **Bound memory while draining, not after.** `maxOutputBytes` is applied post-hoc to the assembled string, so a huge output can OOM before truncation runs. Cap `buf.write` once the buffer hits `maxOutputBytes`, keep reading-and-discarding so the OS pipe stays drained, and mark the result `truncated` when bytes were dropped.

2. **Align reader teardown with `ShellCommandTool`.** `join(timeout)` may return while the drainer thread is still alive, and `ByteArrayOutputStream` is not thread-safe, so `toString()` can race with `write`. Prefer `Future.get(timeout)` + `cancel(true)` (discarding the untrusted buffer), or interrupt the drainer when it is still alive after join.

3. **Add a stderr / dual-stream regression test** alongside the stdout one added in #2839.

Happy to send the PR(s) once #2839 is merged.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.