Upgrade Jackson 2 to Jackson 3 in sdk/cosmos

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

メンテナーはふだん 1 日以内に返信

@FabianMeiswinkel がすでに取り組んでいます。

2026年6月30日 から。

評価

この issue はまだ評価されていません。

説明

azure-spring-cosmos Client Cosmos needs-team-attention Service Attention

Summary

Upgrade Jackson from major version 2 (com.fasterxml.jackson) to major version 3 (tools.jackson) across all modules under sdk/cosmos.

Context

As part of aligning with Spring Boot 4, the sdk/spring modules were migrated from Jackson 2 to Jackson 3 (see #49538 and #49550). During that work, the Cosmos modules (azure-spring-data-cosmos and, transitively, azure-cosmos) were intentionally left out of scope because they cannot be migrated in isolation.

This issue tracks the follow-up work to bring sdk/cosmos to Jackson 3 so that azure-spring-data-cosmos and the Spring Cloud Azure Cosmos starter can fully move off Jackson 2.

Why Cosmos could not be upgraded together with sdk/spring

azure-cosmos exposes Jackson 2 types as part of its public API, not just internally. Around 65 public (non-implementation) classes import com.fasterxml.jackson, for example:

  • CosmosItemSerializer (public abstract extension point whose signatures use ObjectNode / JsonNode)
  • CosmosItemResponse, CosmosBulkItemResponse, CosmosBatchOperationResult
  • Most com.azure.cosmos.models.* properties classes (CosmosContainerProperties, IndexingPolicy, SqlQuerySpec, ...)

Because JsonNode is part of the public contract, switching to Jackson 3 is a breaking API change for azure-cosmos. That change cascades to every module that depends on it.

Affected modules

Modules under sdk/cosmos that depend on azure-cosmos and/or use Jackson 2 directly (approximate Jackson 2 file counts):

Module Jackson 2 files
azure-cosmos 221
azure-cosmos-tests 103
azure-cosmos-spark_3 (+ all spark variants) 52+
azure-cosmos-kafka-connect 20
azure-cosmos-encryption 14
azure-cosmos-benchmark 9
azure-cosmos-test —

Roughly 440+ source files reference Jackson 2 across the tree.

Considerations

  • azure-cosmos is a GA data-plane library; a 2 -> 3 migration that changes the public API is a breaking change and requires the appropriate API review / approval.
  • Options to evaluate:
    • Additive Jackson 3 support in azure-cosmos (keep the Jackson 2 public API, add Jackson 3) to avoid an immediate break for downstream consumers.
    • A full migration across all sdk/cosmos modules in lockstep.
  • The Jackson 2 annotations namespace (com.fasterxml.jackson.annotation) is unchanged in Jackson 3 and can be retained.

Related

  • #49538
  • #49550
主要言語
Java
スター
2.6k
フォーク
2.2k
平均マージ
2日 2時間
マージ済み PR(30日)
257

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

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

Azure/azure-sdk-for-java のほかの issue

Azure/azure-sdk-for-java の issue をすべて見る

似ている issue

Java の issue をもっと見る

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

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