Under a 1 GiB container limit the default image exhausts its 256 MB heap on the first publish, poisons its H2 store and keeps running while answering 401 to every login
メンテナーはふだん 1 日以内に返信
関連するプルリクエストがすでにマージされています。
- #8311 @d-velev による — マージ済み
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 78/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- docker, java
調査の方向性
まず build/application/Dockerfile と build/application-java/Dockerfile の ENTRYPOINT 定義を確認し、それぞれのイメージが報告された 1 GiB および 768 MiB の制限下でどのように動作するかを比較します。Issue では、ヒープサイズの調整とメモリ不足時に終了するオプションが期待される変更として挙げられています。イメージがコンテナに合わせてヒープサイズを調整し、ヒープが枯渇したら終了することで、報告された publish と login のフローでコンテナが失敗状態のまま実行され続けなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
- Image:
dirigiblelabs/dirigible:15.1.0-java(sha256:dac354be94f21f222e88b81fd7fc6e68d9616ee7b4e12bcb1e9eef0465bd213f) - Reference:
dirigiblelabs/dirigible:15.1.0(sha256:449b8c948738a2bd7a4294a7bec1000a08bc1da1cd20f312f0e54383a7af325d)
The default image fails. The Java edition holds the same sequence only because it is lighter: both Dockerfiles share the same ENTRYPOINT.
Steps
docker run -d --name m1 -p 8080:8080 --memory=1g dirigiblelabs/dirigible:15.1.0
# ready after 79 s; JVM ergonomics: MaxHeapSize 268435456 (25% of the limit), the Dockerfile sets no -Xmx / MaxRAMPercentage
POST /services/ide/workspaces/QA-m -> 201
POST /services/ide/transport/project/QA-m (sample-intent-money zip, the IntentSliceSampleIT project) -> 200
POST /services/ide/publisher/QA-m/sample-intent-money -> 200
GET /services/java/sample-intent-money/gen/money/api/invoiceline/InvoiceLineController?$limit=1 (admin:admin)
Observed
- The log shows
Exception in thread "Lucene Merge Thread #0" java.lang.OutOfMemoryError: Java heap space, thenorg.h2.mvstore.MVStoreException: java.lang.OutOfMemoryError: Java heap spacein the Quartz JobStoreTX and in Hibernate, thenMVStoreException: Transaction was illegally transitioned from CLOSED to COMMITTED, and Flowable acquire-jobs ERRORs on every cycle. That is 587OutOfMemoryErrorlines. - Every basic-auth request answers 401 from then on (the controller,
/services/core/versionand/actuator/health): the admin user can no longer be loaded. - The JVM keeps running and the container stays
Up(OOMKilled=false), so nothing restarts it. --memory=768m: 15.1.0 is ready after 226 s, the publish answers 200, and the controller answers 401 for 90 s, with 313OutOfMemoryErrorlines.- The same steps on
15.1.0-java: 1 GiB gives controller 200 after 15 s, no OOM, RSS 754 MiB. 768 MiB gives ready after 144 s, controller 200, no OOM.
Expected
A 1 GiB container is a common size. The image should size the heap for its container (-XX:MaxRAMPercentage=... in the ENTRYPOINT, as the default 25% leaves ~750 MB unused). It should also exit on heap exhaustion (-XX:+ExitOnOutOfMemoryError), so the orchestrator restarts it instead of serving 401s from a poisoned H2 store.
Where
build/application/Dockerfile and build/application-java/Dockerfile: ENTRYPOINT ["java", ... "-jar", "/dirigible.jar"] without heap sizing or an OOM exit flag.
- 主要言語
- Java
- スター
- 278
- フォーク
- 97
- 平均マージ
- 15時間 33分
- マージ済み PR(30日)
- 310
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
eclipse-dirigible/dirigible のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
eclipse-dirigible/dirigible#8354 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
eclipse-dirigible/dirigible#8291 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
eclipse-dirigible/dirigible#8240 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
eclipse-dirigible/dirigible#8238 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
eclipse-dirigible/dirigible#8232 ·
メンテナーはふだん 1 日以内に返信
eclipse-dirigible/dirigible の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
breaking change bug needs human review not ready priority medium size S
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
martin-francois/symphony-trello#1193 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
Mend: dependency security vulnerability
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100