What's new in v25.2LTS


Note

v25.1LTSのパッチ(v25.1LTS-patch20251008、v25.1LTS-patch20251215、v25.1LTS-patch20260210)が含まれています。

General changes

  • Redis接続時の認証ロジックを変更しました。起動パラメータredis_userおよびredis_authで認証情報を設定可能です。
パラメータ名 デフォルト 説明
redis_user None Redis ACL認証のユーザ名を指定します。
redis_auth None Redisの認証パスワードを指定します。

redis_userおよびredis_authの設定状況に応じて、以下の挙動でRedisへの接続を行います。

ケース 挙動
redis_userredis_authを指定 ACL認証ありで接続を試行し、失敗した場合は認証なしで再試行します。
redis_authのみ指定 パスワード認証ありで接続を試行し、失敗した場合は認証なしで再試行します。
いずれも未指定 認証なしで接続します。

Warning

フォールバック後の認証なし接続も失敗した場合、アプリケーションは起動したままですが正常に動作しません。

  • クラス登録時のシンタックスエラーのハンドリングを改善しました。シンタックスエラーを含むmethodをclassに登録した際に、エラー箇所の詳細を含む400レスポンスを返すように変更しました。(Issue#115)
# シンタックスエラーを含むmethodの例
async def test(cls):
    print("test")
    invalid_statement = {
        "hoge": "huga" # This is a syntax error
        "hoge2": "huga2"
    }
    return "test"
# レスポンス例
Bad Request (400)
{
    "index": 0,
    "cause": "
    \"hoge2\": \"huga2\"
    ^
    SyntaxError: invalid syntax"
}

Bug fixes

  • v25.1LTSのgraphene-sqlalchemy majorバージョンアップに伴い、GraphQL APIでリレーションのcollectionが取得できなくなっていた問題を修正しました。
  • DAGのskipped判定ロジックを修正しました。
    修正前はtaskをskipすると、skipしたtaskを含め下流のtaskが全てpassedに遷移していました。修正後はskipしたtaskはskippedに遷移し、下流のtaskは実行可能な状態になります。

修正前:
修正後:

  • PUT /accountsでsuperuserのアカウントを更新しようとした際に正しく400エラーを返すように修正しました。また、起動時にsuperuserと同名の一般アカウントがDBに存在する場合、起動を中断するバリデーションを追加しました。(Issue#176)
# PUT /accounts レスポンス例
400
{"cause":"Could not allowed superuser password."}
# 起動時バリデーションのログ例
# superuserと同名の一般アカウントがDBに存在する場合のバリデーションログ
axis       | [C 251110 02:37:42 context:3817] Superuser name already exists as a general account in DB.
axis       | [W 251110 02:37:42 context:730] [1] Stop all job and consumer (shutdown=False)...
axis       | [C 251110 02:37:42 context:3984]
axis       |     !=================================================================!
axis       |     !   ╔═╗╦ ╦┌┬┐  ┌─┐┌─┐  ╔═╗┌─┐┬─┐┬  ┬┬┌─┐┌─┐  ┌─┐┌┬┐┌─┐┌┬┐┬ ┬┌─┐   !
axis       |     !   ║ ║║ ║ │   │ │├┤   ╚═╗├┤ ├┬┘└┐┌┘││  ├┤   └─┐ │ ├─┤ │ │ │└─┐   !
axis       |     !   ╚═╝╚═╝ ┴   └─┘└    ╚═╝└─┘┴└─ └┘ ┴└─┘└─┘  └─┘ ┴ ┴ ┴ ┴ └─┘└─┘   !
axis       |     !=================================================================!
axis       |     PID:          1
axis       |     MASTER:       None:None
  • POST/PUT/PATCH /accountsでexpire_days=0を指定した際に、対象アカウントの有効期限が誤って無期限に設定される問題を修正しました。修正後はexpire_days=0を指定した場合、有効期限が即時切れとなります。(Issue#177)
  • number型カウンター割り当てにmutexを追加しました。並行実行時のカウンター重複割り当てを防止します。(Issue#111)
  • monkey patch内でimportエラーが発生した際にエラーが無視されログに出力されない問題を修正しました。修正後はimportエラー発生時にトレースバック情報をログに出力します。
  • v23.2LTS-patch20251111で修正したaccount情報を取得する際に稀に正しいアカウント情報が返却されない問題への修正を取り込みました。
  • v23.2LTS-patch20260115で修正したtry-exceptブロック外でraiseした際にAPIレスポンスにPythonのトレースバック情報が含まれる問題への修正を取り込みました。
  • v23.2LTS-patch20260205で修正したapprovalRequiredなDAGタスクを実行する場合にrunConditionがFalseにもかかわらずapprovalPendingに遷移してしまう問題への修正を取り込みました。

Modules

脆弱性対応

  • コードの脆弱性を改修しました。

依存moduleの更新

  • 以下の依存moduleのバージョンが変更となります。
aiobotocore 2.5.0 -> 3.2.0
aiohttp 3.11.11 -> 3.13.3
aiomysql 0.1.1 -> 0.3.0
cffi 1.17.1 -> 2.0.0
cryptography 44.0.1 -> 46.0.5
gcloud-aio-auth 5.3.2 -> 5.4.2
kubernetes-asyncio 28.2.0 -> 35.0.0
multidict 5.1.0 -> 6.7.1
PyNaCl 1.5.0 -> 1.6.2
requests 2.32.3 -> 2.32.4

kubernetesサポートについて

  • v25.2LTSではk8s v1.35までの対応を仕様確認済みです。
  • Core 内部で使用しているバージョンは下記の通りです。
    異なるAPIバージョンを使用しているk8sバージョンでは一部機能(SDKRunner, closedloop)が使用できません。
kind version group
Affinity v1 core
ConfigMap v1 core
ConfigMapVolumeSource v1 core
Container v1 core
DeleteOptions v1 meta
Job v1 batch
JobSpec v1 batch
NodeAffinity v1 core
NodeSelector v1 core
NodeSelectorRequirement v1 core
NodeSelectorTerm v1 core
ObjectMeta v1 meta
Pod v1 core
PodFailurePolicy v1 batch
PodFailurePolicyOnPodConditionsPattern v1 batch
PodFailurePolicyRule v1 batch
PodSpec v1 core
PodTemplateSpec v1 core
ResourceRequirements v1 core
Secret v1 core
SecretVolumeSource v1 core
Toleration v1 core
Volume v1 core
VolumeMount v1 core
  • kubernetesリソースをKube組み込みオブジェクトを利用してユーザー側でCRUDする場合は対象kubernetesクラスタのkubernetesバージョンに依存します。
    kubernetesバージョンに紐づくAPI仕様に基づいて操作してください。