fix(plugins): cài SDK từ bản chép riêng để hai plugin cấp phát song song không giẫm build/ - #121
Merged
Merged
Conversation
…ong không giẫm build/
setuptools dựng wheel ngay trong cây nguồn pip được giao
(<src>/build/bdist.*, <src>/*.egg-info). Mọi venv cài từ cùng một
resources/sdk, nên hai plugin cấp phát cùng lúc (chuỗi tuần tự hoá theo
từng id cho phép điều đó) va nhau:
"[Errno 17] File exists: 'build/bdist.../wheel/oneflow_sdk-0.2.23.dist-info'".
Lỗi có sẵn trên main; E4 của local-cpu-plugins đỏ 2/2.
Hướng chọn: mỗi lượt cài chép nguồn SDK sang một thư mục tạm riêng
(bỏ build/, dist/, *.egg-info, .venv, cache ở gốc; __pycache__ mọi cấp),
cài từ đó, rồi xoá. Vì sao không chọn hai hướng kia:
- khoá trong tiến trình không che được người ghi thứ hai ở tiến trình
khác: engine headless (sdk/tongflow/engine/plugins.py) cài từ cùng
checkout, và dev server có thể chạy nhiều worker;
- dựng một wheel chung trước vẫn cần chỗ dựng, tức vẫn là cuộc đua đó,
cộng thêm khoá liên tiến trình và cache phải vô hiệu hoá.
Bản chép đúng qua ranh giới tiến trình mà không cần phối hợp, và cây
chung không còn bị ghi. Giá: chép ~1 MB, chỉ khi trượt cache. Không chạm
sdk/** (E5 giữ xanh).
Giới hạn còn lại: hai tiến trình engine headless chạy đồng thời vẫn có
thể va nhau trong SDK_ROOT; sửa phía đó là thay đổi sdk/** (T3).
Chiều đỏ trước: test mới "parallel provisioning" dùng một python giả
chiếm <src>/build bằng mkdir, đỏ tất định trên mã cũ
("resources/sdk/build: File exists"), xanh sau khi sửa; có đối chứng
dương rằng hai lượt cài thật sự chồng thời gian.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Đây là sửa THƯỚC, không đổi điều E4 đo: vẫn hai plugin ghim hai bản six khác nhau, cấp phát đồng thời, mỗi bên phải ra đúng bản của mình, và phản chứng venv chung vẫn phải mất một pin. - fail() gọi rmSync(work) khi pip con của plugin kia còn ghi trong work, văng ENOTEMPTY; stack trace đó in đè sau dòng FAIL thật. Giờ dọn dẹp không bao giờ văng (chỉ in một dòng note), và FAIL in cuối cùng. - Promise.all từ chối ngay ở lỗi đầu tiên trong khi pip bên kia còn chạy, nên lỗi thứ hai không bao giờ được báo. Đổi sang Promise.allSettled: đợi cả hai xong, báo mọi lỗi cấp phát. Kiểm trên mã sản xuất cũ: đỏ 2/2, dòng FAIL và "[Errno 17] File exists" đều hiện, 0 lần ENOTEMPTY. Trên mã đã sửa: xanh 3/3. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bản sửa cài SDK song song chạm src/lib/plugins/plugin-python-env.*, nằm trong phạm vi của hai hồ sơ T3 này, nên bằng chứng của chúng cũ đi và E20 của local-cpu-plugins (check-resign-wave) đỏ. Owner cho ghim hai hồ sơ này trước, local-cpu-plugins sau. Làn repin-lane --write tại af00e47: suite 9/9 exit 0; conformance-l0 15/15 eval, hai-duong-chay-mot-venv 16/16 eval; recheck-evidence xanh cả hai. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…DK song song Thay pin suite-only bằng pin có evals_exit. Làn repin-lane --write tại 5778124: suite 9/9 exit 0; 25/25 eval máy xanh, trong đó E4 (hai plugin ghim hai bản six cấp phát đồng thời) và E20 (không hồ sơ nào khác mang bằng chứng cũ) xanh; recheck-evidence xanh. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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.
Summary
Sửa lỗi cấp phát môi trường Python khi hai plugin được cấp phát cùng lúc: bước cài SDK của một plugin thất bại.
Nguyên nhân: mọi venv chạy
pip install --upgrade <resources/sdk>trên cùng một cây nguồn, và setuptools dựng wheel ngay trong cây đó (build/bdist.*,*.egg-info). Chuỗi tuần tự hoá theo từng plugin id cho phép hai plugin cài song song, nên hai lượt giẫm lênbuild/của nhau. Lỗi có sẵn trênmainvà làm E4 của hồ sơlocal-cpu-pluginsđỏ 2/2.Bản sửa (
plugin-python-env.server.ts): mỗi lượt cài chép nguồn SDK (~1 MB) sang một thư mục tạm riêng, cài từ bản chép, rồi xoá.build/,dist/,*.egg-info,.venvvà các thư mục cache ở gốc;__pycache__bị bỏ ở mọi cấp.Vì sao không chọn hai hướng kia:
sdk/tongflow/engine/plugins.py) cài từ cùng checkout, và dev server có thể chạy nhiều worker.Không chạm
sdk/**(E5 củalocal-cpu-pluginsgiữ xanh).Giới hạn còn lại: hai tiến trình engine headless chạy đồng thời vẫn có thể va nhau trong
SDK_ROOT. Sửa phía đó là thay đổisdk/**(T3), nằm ngoài PR này.Type of change
Checklist
mainpnpm typecheckpassespnpm lint(orpnpm lint:check) passes where applicable.envfilespnpm test(971 test) vàpnpm buildcũng xanh. Không chạmsdk/nên không chạy pytest.Notes for reviewers
Đo đỏ trước, xanh sau
plugin-python-env.test.tsdùng một python giả chiếm<src>/buildbằngmkdir, đúng như setuptools làm.resources/sdk/build: File exists).sh.scripts/plugins/check-venv-isolation.sh): đỏ 2/2 trên mã cũ, xanh 3/3 sau khi sửa. Không nới điều E4 đo.Sửa thước (commit riêng
af00e47,check-venv-isolation.ts): script vẫn đo đúng điều cũ; chỉ sửa cách nó dọn dẹp và báo lỗi.fail()gọirmSync(work)trong lúc pip con của plugin kia còn ghi, nên văngENOTEMPTY, và stack trace đó che mất dòng FAIL thật. Giờ dọn dẹp không văng lỗi, và dòng FAIL in sau cùng.Promise.allđổi sangPromise.allSettled: script đợi cả hai lượt cài xong rồi báo mọi lỗi.[Errno 17]đều hiện, 0 lầnENOTEMPTY.Hồ sơ nghiệm thu
local-cpu-plugins, không mở hồ sơ mới: kế hoạch đang băng, guard F1 chặn hồ sơ ngoài kế hoạch.src/lib/plugins/, nằm trong phạm vi của hai hồ sơ T3conformance-l0vàhai-duong-chay-mot-venv. Bằng chứng của hai hồ sơ đó vì vậy cũ đi, làm E20 củalocal-cpu-pluginsđỏ.local-cpu-pluginssau. Cả hai làn đều chạy bằngrepin-lane.mjs --write, không viết tay dòng repin:5778124: 9/9 lệnh suite exit 0;conformance-l0xanh 15/15 eval,hai-duong-chay-mot-venvxanh 16/16; recheck-evidence xanh.f963f1b:local-cpu-pluginsxanh 25/25 eval máy, gồm E4 và E20; recheck-evidence xanh.pnpm plan:checkkhông báo vi phạm (★ 5/16 · 30% · còn băng).🤖 Generated with Claude Code