Upgrade Jackson 2 to Jackson 3 in sdk/cosmos

Aperta
#49,551 4 commenti 0 reazioni 4 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@FabianMeiswinkel ci sta già lavorando.

Dal 30/6/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

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
Lingua principale
Java
Stelle
2.6k
Fork
2.2k
Merge medio
1g 22h
PR unite (30g)
245

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Azure/azure-sdk-for-java

Tutte le issue di Azure/azure-sdk-for-java

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.