Regeneration of DISABLE operations when setting instance operations
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- java
調査の方向性
getActiveInstanceOperation() と getInstanceOperation() から始め、setInstanceOperation API を介して 2 つの EVACUATE リクエストを再現し、ZooKeeper のインスタンス設定を調査します。レガシーフィールドで HELIX_ENABLED=false の場合に EVACUATE が新しい DISABLE 操作を引き起こす理由を追跡します。繰り返し実行した EVACUATE 操作によって DISABLE タイムスタンプや LEGACY_DISABLED_TYPE エントリが再生成されなくなり、インスタンスの遷移が正常に進むことを確認できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
There is a bug in the instance operation handling logic that causes an infinite cycle of regenerated DISABLE operations when applying operations like EVACUATE to an instance with HELIX_ENABLED=false in legacy fields. This prevents proper instance lifecycle transitions and causes unexpected behavior in instance swapping scenarios.
To Reproduce
- Create an instance in the cluster.
- Set DISABLE operation with USER source:
Apply to InstanceConf...
curl -X POST "http://<host>:<port>/admin/v2/clusters/<cluster>/instances/<instance>?command=setInstanceOperation&instanceOperationSource=USER&instanceOperation=DISABLE" - Set EVACUATE operation with AUTOMATION source:
Apply to InstanceConf...
curl -X POST "http://<host>:<port>/admin/v2/clusters/<cluster>/instances/<instance>?command=setInstanceOperation&instanceOperationSource=AUTOMATION&instanceOperation=EVACUATE" - Set EVACUATE operation again with AUTOMATION source
- Check the instance configuration in ZooKeeper
After the second EVACUATE operation, a new DISABLE operation is generated with:
- Updated timestamp (more recent than the EVACUATE timestamp)
- Added LEGACY_DISABLED_TYPE field
- The cycle repeats with each subsequent evacuate operation
Expected behavior
The DISABLE operation should not be regenerated with new timestamps when setting a different operation. Instance operations should be updated consistently without creating an infinite cycle.
Additional context
RCA:
The regeneration happens because:
- getActiveInstanceOperation() returns the last operation (EVACUATE)
- EVACUATE is in INSTANCE_DISABLED_OVERRIDABLE_OPERATIONS
- This causes getInstanceOperation() to override it with a newly generated DISABLE operation
- 主要言語
- Java
- スター
- 505
- フォーク
- 258
- 平均マージ
- 4日 20時間
- マージ済み PR(30日)
- 3
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/helix のほかの issue
-
Four TestConstraintBasedAlgorithm tests pass when nothing is thrown対応中かも @sharanggupta が今日担当しました。 オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 85/100
-
Helix ZkClient times out after successful ZooKeeper SASL DIGEST-MD5 authentication対応中かも @adityaanikam が 43 日前に担当しました。 オープンbug
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
-
NPE in canCompleteSwap if path doesn't exists対応中かも @waterWang が 106 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 50/100
-
Legacy IZkStateListenerI0ItecImpl causes zombie participants by discarding session IDs対応中かも @LZD-PratyushBhatt が 457 日前に担当しました。 オープンbug
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
似ている issue
-
bug documentation good first issue help wanted priority low size XS
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
martin-francois/symphony-trello#1351 ·
メンテナーはふだん 1 日以内に返信
-
Add test coverage for ConvertUtil.parseDate() with NULL input対応中かも @mirajul-mollah7 が今日担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
eclipse-sw360/sw360#4792 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
aws/aws-emulator#30 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 4 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100