4.23.0.0: restartVPC cleanup=true with public IPs on two VLANs fails with UnsupportedOperationException and leaves the VPC without a backup router
メンテナーはふだん 1 日以内に返信
@bernardodemarco がすでに取り組んでいます。
2026年10月28日 から。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 78/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- java
調査の方向性
NetworkHelperImpl.javaの761行目付近を読み、次にpublicConfigの値を165行目付近のVpcNetworkHelperImpl.reallocateRouterNetworksまで追ってください。2つのVLANの設定とrestartVPC cleanup=trueを再現するか、変更可能なリストの動作を対象とした回帰テストを追加してください。ルーターのネットワーク再割り当てが両方のVLANを受け入れ、ローリング再起動がバックアップルーターを伴って完了すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
problem
NetworkHelperImpl.java line 761 (4.23.0.0 and main) is:
publicConfig.put(publicNetworks.get(0), List.of(defaultNic));
List.of returns an immutable list. VpcNetworkHelperImpl.reallocateRouterNetworks (line 165) then calls addAll on it and throws UnsupportedOperationException (ImmutableCollections.addAll), through NetworkHelperImpl.deployRouterWithTemplates (line 542) and VpcManagerImpl.rollingRestartVpc (line 4046). 4.22.0.0 used new ArrayList(Arrays.asList(defaultNic)).
The API answers "Internal Server Error". The rolling restart has already destroyed the backup router, and the new router stays Stopped.
Related: #12621 (fixed by #12622 in 4.22) has the same setup but a different error ("cidr is not formatted correctly"). This one is a separate bug.
versions
CloudStack 4.23.0.0 and main. 4.22.0.0 is not affected. KVM.
The steps to reproduce the bug
- A zone with public IP ranges on two VLANs.
- A redundant VPC with its source NAT IP on the first VLAN.
- Acquire a second public IP from the second VLAN and enable static NAT on it to a VM in the VPC. (A bare IP with no NAT or rule does not reach this code path; see VpcManagerImpl.isIpAllocatedToVpc.)
- restartVPC cleanup=true.
What to do about it?
Use a mutable list again, for example:
publicConfig.put(publicNetworks.get(0), new ArrayList<>(List.of(defaultNic)));
We carry this one-line change. With it, the new routers get NICs on both VLANs and the restart succeeds.
- 主要言語
- Java
- スター
- 3.1k
- フォーク
- 1.4k
- 平均マージ
- 10日 9時間
- マージ済み PR(30日)
- 20
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/cloudstack のほかの issue
-
Remote access VPN users are disconnected on every LB, ACL, port forward or firewall change (xl2tpd restarted on every iptables pass)対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/cloudstack#14545 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/cloudstack#14530 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug status:has-work-around
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/cloudstack#14465 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
apache/cloudstack#14427 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[UI] "canceled - Unable to reach the management server" notification when switching from project to default view on Instances page (4.20.3)対応中かも @Damans227 が 20 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
apache/cloudstack#14381 · コメント 1 件 · リアクション 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
apache/cloudstack の issue をすべて見る
似ている issue
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
Shweit/EtherealPortals#30 ·
-
Typo in jakartaee-bom 12.0.0-SNAPSHOT with cdi対応中かも @ElectLive が今日担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 80/100
jakartaee/jakartaee-api#205 · コメント 1 件 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
liberation-data/drivine4j#547 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
BindingServiceProperties.bindings regressed to a non-thread-safe TreeMap in GH-3158: concurrent first use of binding names corrupts it対応中かも @AkashB23 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
spring-cloud/spring-cloud-stream#3321 ·
メンテナーはふだん 1 日以内に返信