Network settings config upgrade in start script is brittle
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
start の 393~437 行付近にある upgrade_soroban_config 関数と、672~718 行付近にあるネットワークアップグレードのフローを読み、リンクされた障害と関連する issue #906 および #555 を調査します。アップグレード経路を再現し、get-settings-upgrade-txs の出力、curl による送信、メトリクスのポーリングがどのように連携するかを追跡します。各意図されたトランザクションをフローが確認し、グローバルカウンター、固定された行数、またはパイプされた stdout の解析に依存しなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
What problem does your feature solve?
The network settings config upgrade logic in the start script is brittle. The upgrade_soroban_config function uses stellar-core get-settings-upgrade-txs to generate transactions, submits them via curl to core's HTTP endpoint, and confirms they were applied by polling the global ledger.transaction.count metric.
For example:
https://github.com/stellar/quickstart/blob/6357b286e43c856c68b2b6b7690f8a520d1b7f5d/start#L672-L718
The script reads transactions and transaction IDs from stdout line-by-line, submits each via curl, then waits for the global transaction count metric to increment:
while [ "`curl -s http://localhost:11626/metrics | jq -r '.metrics."ledger.transaction.count".count'`" != "$TX_COUNT" ]; do sleep 1; done
This is brittle in several ways:
- Transaction confirmation by global counter: It does not verify that the specific transaction succeeded, only that the total transaction count increased. If any other transaction occurs, or if a transaction fails but is still counted, the logic breaks.
- Output format coupling: The script checks
if [ $line_count = 9 ]vs 7 lines to detect whether a restore operation is included in the output, coupling it tightly to the exact output format ofstellar-core get-settings-upgrade-txswhich can change between versions. - Pipe-based parsing of stdout: The entire flow reads tx blobs and tx IDs via
readfrom a piped subshell, which is fragile and hard to debug when something goes wrong.
@sisuresh and I have noticed some recent flaky build failures that may be related to this brittleness:
Related: #906, #555
What would you like to see?
Replace the brittle shell-based transaction submission and confirmation logic with something more robust. This could be part of a small Rust CLI tool (#906) that handles transaction submission and confirmation directly, or another approach that avoids relying on polling global metrics and parsing stdout line counts.
What alternatives are there?
- Improve the shell script: Add retries, check transaction results directly via the
/txendpoint response, and make the output parsing more resilient. This improves reliability but still leaves the fundamental brittleness of doing this in bash. - Use stellar-cli: Ship
stellar-cliwith quickstart and use it for transaction submission. Downside is thatstellar-cliis further downstream and harder to keep in sync with unreleased stellar-core changes. - Build into a small Rust CLI: As proposed in #906, a minimal Rust tool could handle this logic more robustly with proper error handling and transaction result checking.
- 主要言語
- Shell
- スター
- 225
- フォーク
- 236
- 平均マージ
- 2日 4時間
- マージ済み PR(30日)
- 10
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
stellar/quickstart のほかの issue
-
feature request
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
stellar/quickstart#998 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
DockerHub README workflow fails with 403 Forbidden対応中かも @leighmcculloch が 20 日前に担当しました。 オープンbug
stellar/quickstart#988 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
stellar/quickstart#932 · コメント 18 件 · リアクション 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 58/100
stellar/quickstart#923 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
stellar/quickstart#911 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
stellar/quickstart の issue をすべて見る
似ている issue
-
bug good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
scarif-labs/horus#61 ·
メンテナーはふだん 1 日以内に返信
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
IntersectMBO/developer-experience#362 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
registrystack/registry-stack#2168 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
メンテナーはふだん 2 日以内に返信
-
Bug triage/confirmed
難易度 2/5 半日 初心者へのやさしさ 85/100
agentscope-ai/agentscope#3355 ·
メンテナーはふだん 2 日以内に返信