Version parsing not supporting semver pre-release tag for suspend/resume system

オープン
#669 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
74/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
helm, java
領域
api, backend

調査の方向性

helm list の chart フィールドが解析される MyLabController.suspendOrResume() から開始し、SemVer の検証について HelmInstallService.installChart() を調べてください。chart の名前とバージョンがどのように取得されるかを追跡し、そのうえで suspend と resume が 0.1.0-abc1234 のような完全な pre-release バージョンを Helm upgrade コマンドに渡していることを確認してください。

索引モデルが issue の本文から書いたものです。

説明

Scope
https://github.com/InseeFrLab/onyxia-api

Describe the bug
Suspend/Resume on a user service fails with IllegalArgumentException: Invalid release version ... must be a SemVer 2 string when the Helm chart version contains a hyphen (e.g. a SemVer pre-release tag).

To Reproduce

  1. Install a service whose chart version contains a hyphen, e.g. 0.1.0-abc1234.
  2. Call POST /my-lab/app/suspend or /my-lab/app/resume with the service ID.
  3. API returns 500 with Invalid release version abc1234, must be a SemVer 2 string.

Root cause
MyLabController.suspendOrResume() extracts the chart version by splitting the chart field from helm list on lastIndexOf('-'):

String chart = userService.getChart();       // "chartname-1.2.3-prerelease"
int split = chart.lastIndexOf('-');
String chartName = chart.substring(0, split);   // "chartname-1.2.3" ← wrong
String version = chart.substring(split + 1);    // "prerelease" ← wrong

If the version itself contains a hyphen (valid SemVer 2.0 pre-release), the split grabs only the part after the last hyphen, which lacks MAJOR.MINOR.PATCH and fails the strict SemVer regex in HelmInstallService.installChart().

Expected behavior
The full SemVer version (pre-release tag included) should be passed to the Helm upgrade command. A workaround on the client side is to never use hyphens in chart versions, but the API should handle this correctly.

Suggested fix
Replace lastIndexOf('-') with a more robust parsing approach. The chart name is known from the catalog metadata or the Onyxia secret — it shouldn't need to be re-extracted from the helm list chart field. Alternatively, use indexOf('-') and validate against known chart names.

Environment

  • onyxia-api v4.11.0
  • Charts with versions using SemVer pre-release tags (e.g. MAJOR.MINOR.PATCH-prerelease)

This comment was generated by pi-agent.

主要言語
Java
スター
34
フォーク
34
平均マージ
9分
マージ済み PR(30日)
4

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

InseeFrLab/onyxia-api のほかの issue

InseeFrLab/onyxia-api の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。