ホームへ戻る

GitHub Repo

Paperclipコミュニティが時刻精度の不一致を報告、エージェントのキャンセル後に一時停止状態から進まない可能性

10月18日のPaperclipコミュニティからの報告によると、データベースとJavaScript間のリース時刻の精度差により、エージェントの一時停止や終了が完了しない可能性があります。報告者はローカルで変更を加えたところ停止状態が解消したと述べていますが、正式な修正版と影響範囲の全容はまだ確認されていません。

Kuebi Armin Kübelbeck · CC BY-SA 3.0 · Image source
zh-Hant

オープンソースのエージェント管理プラットフォームPaperclipで、10月18日にライフサイクル制御に関する問題が報告されました。ネイティブ実行中のタスクをキャンセルした後、期限切れのクリーンアップ調整レコードが残ると、その後のエージェントの一時停止や終了が完了しない状態になる可能性があります。報告された環境は 2026.1012.1-beta.0 で、現時点の根拠はコミュニティから提供されたコードパス、再現手順、ローカルでの変更結果です。問題報告

報告では、原因としてリース有効期限の往復変換が挙げられています。リース更新処理は、データベースの now() にリース期間を加えた時刻を書き込みます。一方、停止チェックでは読み出した値をミリ秒精度のJavaScript Date に変換し、時刻が完全に一致することを条件にレコードを解放します。元の値にそれより細かい小数部分が含まれていると、条件付き更新で行が見つからず、停止チェックが処理の完了を確認できない状態が続く可能性があります。技術分析

この診断は、明確なデータ型の境界に関わります。PostgreSQLの公式ドキュメントによると、タイムゾーン付き・なしのどちらのtimestampも精度は1マイクロ秒で、秒の小数精度は最大6桁です。例として、データベースの .123456 秒が変換後に .123 秒だけ残る場合、その値を使って元の時刻を検索しても、比較対象は同じ値ではありません。これは、ドキュメントと報告された仕組みをもとにした説明例です。PostgreSQLの時間型に関するドキュメント

Paperclipは複数のエージェントを調整し、タスクやコストを追跡するほか、一時停止、再開、終了の制御も提供します。そのため、クリーンアップ状態が正しく収束するかどうかは、コントロールプレーンの実際の信頼性に関わります。ただし、インターフェースが pausing のままであることだけでは、モデルが処理を続けている、あるいは費用が発生し続けているとは証明できません。実行中のプロセスやログと照らし合わせて判断する必要があります。プロジェクトの説明

報告者は、比較の精度を一律にミリ秒へ揃えるか、リース更新時にもJavaScriptの日時値を使うことを提案しています。また、比較処理を変更したところ、停止状態になっていたエージェントは1分以内に一時停止状態を抜けたと述べています。今後、エンジニアリングチームは、修正によってリースの並行実行保護が維持されるか、キャンセル・リース更新・クリーンアップが交錯するケースのテストが行われるかを確認する必要があります。確認時点では、正式な修正版は確認できておらず、すべてのデプロイに影響が及ぶと判断できる十分な証拠もありません。修正案と制約

出典

  1. Agent pause never finishes: finaliser lease release compares a microsecond timestamp with a millisecond Date
  2. PostgreSQL Documentation: Date/Time Types
  3. Paperclip 官方儲存庫與架構說明