跳到主要內容

arc drain

arc drain 是一個常駐處理程序,盯著工作臺帳(work ledger),把就緒的工作派給一個空閒 peer,直到就緒集合清空為止。

arc drain 是一個真實的 CLI 處理程序,不是一次對話輪次——殺掉啟動它的那個工作階段不會讓它停下來,只有殺掉這個處理程序本身才行。它訂閱 /dev/code-agents(或者你用 --subscribe-path 傳的路徑),每次被喚醒時就從工作臺帳裡認領就緒的工作,然後執行 /dev/code-agents/.actions/run 處理認領到的工作。就緒集合為空時以 0 退出;arc drain 自己從不創建臺帳行,只消費它們。

用法

bash
arc drain --cwd <dir> [options]
  • --cwd <dir>(必填,沒有預設值):傳給 /dev/code-agents/.actions/run 的工作目錄。不能是 daemon 自己的專案 checkout
  • --work-root <path>:工作集合的根,也就是哪個 AFS 路徑存工作記錄(預設 /work
  • --subscribe-path <path>:訂閱喚醒事件的 AFS 路徑字首,比如 /dev/code-agents/settled(預設 /dev/code-agents
  • --engine <id>:只派給這個 engine id(預設:第一個空閒的 dispatch target)
  • --peer <id>:只派給這個 peer id(預設:第一個空閒線上的 peer)

全域選項(見 總覽):--json--view--instance / -i(作用在哪個本地 ARC 例項;省略即 default),以及 --home(例項根;要指定作用在哪個例項,用 --instance)。--standalone 也是全域的(ad-hoc 模式:從當前目錄的本地配置載入 AFS,而不是連線正在跑的 daemon)。實踐中 drain 通常就作用在預設例項上,除非你傳 --instance

arc drain 期望目標例項的 daemon 已經在跑(比如先 arc service start)。讓 drain 自己去自動起,走的是一條更精簡的 AFS 引導路徑,不帶預設的 /work 掛載,於是還沒碰到臺帳就先報錯:No module found for path: /work in namespace 'default'

示例(空的就緒集合,daemon 已經在跑)

bash
$ arc drain --cwd /path/to/a/work/tree
ready set empty

按 Ctrl-C(SIGINT)或者發 SIGTERM 可以停止 drain;兩者都會乾淨地中止當前的等待。

示例(缺少必填選項)

bash
$ arc drain
ERROR: --cwd is required (no default — must not be the daemon's own project checkout)