Home / Cardano Foundation / cardano-rosetta-java
Apr 14, 4-5 PM (0)
Apr 14, 5-6 PM (0)
Apr 14, 6-7 PM (0)
Apr 14, 7-8 PM (0)
Apr 14, 8-9 PM (0)
Apr 14, 9-10 PM (0)
Apr 14, 10-11 PM (0)
Apr 14, 11-12 AM (0)
Apr 15, 12-1 AM (0)
Apr 15, 1-2 AM (0)
Apr 15, 2-3 AM (0)
Apr 15, 3-4 AM (0)
Apr 15, 4-5 AM (0)
Apr 15, 5-6 AM (0)
Apr 15, 6-7 AM (0)
Apr 15, 7-8 AM (0)
Apr 15, 8-9 AM (0)
Apr 15, 9-10 AM (0)
Apr 15, 10-11 AM (0)
Apr 15, 11-12 PM (0)
Apr 15, 12-1 PM (0)
Apr 15, 1-2 PM (0)
Apr 15, 2-3 PM (0)
Apr 15, 3-4 PM (0)
Apr 15, 4-5 PM (0)
Apr 15, 5-6 PM (0)
Apr 15, 6-7 PM (0)
Apr 15, 7-8 PM (1)
Apr 15, 8-9 PM (0)
Apr 15, 9-10 PM (0)
Apr 15, 10-11 PM (0)
Apr 15, 11-12 AM (0)
Apr 16, 12-1 AM (0)
Apr 16, 1-2 AM (0)
Apr 16, 2-3 AM (0)
Apr 16, 3-4 AM (0)
Apr 16, 4-5 AM (0)
Apr 16, 5-6 AM (0)
Apr 16, 6-7 AM (0)
Apr 16, 7-8 AM (0)
Apr 16, 8-9 AM (0)
Apr 16, 9-10 AM (0)
Apr 16, 10-11 AM (0)
Apr 16, 11-12 PM (3)
Apr 16, 12-1 PM (0)
Apr 16, 1-2 PM (0)
Apr 16, 2-3 PM (0)
Apr 16, 3-4 PM (0)
Apr 16, 4-5 PM (0)
Apr 16, 5-6 PM (0)
Apr 16, 6-7 PM (0)
Apr 16, 7-8 PM (0)
Apr 16, 8-9 PM (0)
Apr 16, 9-10 PM (0)
Apr 16, 10-11 PM (0)
Apr 16, 11-12 AM (0)
Apr 17, 12-1 AM (0)
Apr 17, 1-2 AM (0)
Apr 17, 2-3 AM (0)
Apr 17, 3-4 AM (0)
Apr 17, 4-5 AM (0)
Apr 17, 5-6 AM (0)
Apr 17, 6-7 AM (2)
Apr 17, 7-8 AM (0)
Apr 17, 8-9 AM (0)
Apr 17, 9-10 AM (0)
Apr 17, 10-11 AM (0)
Apr 17, 11-12 PM (0)
Apr 17, 12-1 PM (0)
Apr 17, 1-2 PM (0)
Apr 17, 2-3 PM (1)
Apr 17, 3-4 PM (1)
Apr 17, 4-5 PM (0)
Apr 17, 5-6 PM (1)
Apr 17, 6-7 PM (0)
Apr 17, 7-8 PM (0)
Apr 17, 8-9 PM (0)
Apr 17, 9-10 PM (0)
Apr 17, 10-11 PM (0)
Apr 17, 11-12 AM (0)
Apr 18, 12-1 AM (0)
Apr 18, 1-2 AM (0)
Apr 18, 2-3 AM (0)
Apr 18, 3-4 AM (0)
Apr 18, 4-5 AM (0)
Apr 18, 5-6 AM (0)
Apr 18, 6-7 AM (0)
Apr 18, 7-8 AM (0)
Apr 18, 8-9 AM (0)
Apr 18, 9-10 AM (0)
Apr 18, 10-11 AM (0)
Apr 18, 11-12 PM (0)
Apr 18, 12-1 PM (0)
Apr 18, 1-2 PM (0)
Apr 18, 2-3 PM (0)
Apr 18, 3-4 PM (0)
Apr 18, 4-5 PM (0)
Apr 18, 5-6 PM (0)
Apr 18, 6-7 PM (0)
Apr 18, 7-8 PM (0)
Apr 18, 8-9 PM (0)
Apr 18, 9-10 PM (0)
Apr 18, 10-11 PM (0)
Apr 18, 11-12 AM (0)
Apr 19, 12-1 AM (0)
Apr 19, 1-2 AM (0)
Apr 19, 2-3 AM (0)
Apr 19, 3-4 AM (0)
Apr 19, 4-5 AM (0)
Apr 19, 5-6 AM (0)
Apr 19, 6-7 AM (0)
Apr 19, 7-8 AM (0)
Apr 19, 8-9 AM (0)
Apr 19, 9-10 AM (0)
Apr 19, 10-11 AM (0)
Apr 19, 11-12 PM (0)
Apr 19, 12-1 PM (0)
Apr 19, 1-2 PM (0)
Apr 19, 2-3 PM (0)
Apr 19, 3-4 PM (0)
Apr 19, 4-5 PM (0)
Apr 19, 5-6 PM (0)
Apr 19, 6-7 PM (0)
Apr 19, 7-8 PM (0)
Apr 19, 8-9 PM (0)
Apr 19, 9-10 PM (0)
Apr 19, 10-11 PM (0)
Apr 19, 11-12 AM (0)
Apr 20, 12-1 AM (0)
Apr 20, 1-2 AM (0)
Apr 20, 2-3 AM (0)
Apr 20, 3-4 AM (0)
Apr 20, 4-5 AM (0)
Apr 20, 5-6 AM (0)
Apr 20, 6-7 AM (1)
Apr 20, 7-8 AM (0)
Apr 20, 8-9 AM (6)
Apr 20, 9-10 AM (3)
Apr 20, 10-11 AM (0)
Apr 20, 11-12 PM (0)
Apr 20, 12-1 PM (0)
Apr 20, 1-2 PM (0)
Apr 20, 2-3 PM (0)
Apr 20, 3-4 PM (1)
Apr 20, 4-5 PM (0)
Apr 20, 5-6 PM (0)
Apr 20, 6-7 PM (1)
Apr 20, 7-8 PM (0)
Apr 20, 8-9 PM (0)
Apr 20, 9-10 PM (2)
Apr 20, 10-11 PM (0)
Apr 20, 11-12 AM (0)
Apr 21, 12-1 AM (0)
Apr 21, 1-2 AM (0)
Apr 21, 2-3 AM (0)
Apr 21, 3-4 AM (0)
Apr 21, 4-5 AM (0)
Apr 21, 5-6 AM (0)
Apr 21, 6-7 AM (1)
Apr 21, 7-8 AM (3)
Apr 21, 8-9 AM (0)
Apr 21, 9-10 AM (0)
Apr 21, 10-11 AM (0)
Apr 21, 11-12 PM (0)
Apr 21, 12-1 PM (0)
Apr 21, 1-2 PM (0)
Apr 21, 2-3 PM (0)
Apr 21, 3-4 PM (0)
Apr 21, 4-5 PM (0)
27 commits this week Apr 14, 2026 - Apr 21, 2026
chore: prepare 2.1.2 (#744)
## Summary

Hotfix release **2.1.2** bundling a yaci upgrade and improved gateway
logging.

## Commits

-
**[#742](https://github.com/cardano-foundation/cardano-rosetta-java/pull/742)
— fix: raise `SYNC_GRACE_SLOTS_COUNT` default to 200 and enrich gateway
error logs**
- Bumps the default sync grace window from 100 to 200 slots across env
files, Spring config, Helm values, and docs. The previous value caused
the `synced` flag on `/network/status` to flap when the HTTP link
between `rosetta-api` and `yaci-indexer` was briefly unstable.
- Enriches logs in `YaciHttpGatewayImpl` for both
`getStakeAccountRewards` and `getDiscoveredPeers`: non-2xx branches now
include the target URL and response body alongside the status code;
`IOException`/`InterruptedException` branches include the URL plus the
full cause chain so SSL and connection errors are visible.
-
**[#743](https://github.com/cardano-foundation/cardano-rosetta-java/pull/743)
— fix: bump yaci to 0.4.1 to fix chain sync on blocks with >23 txs**
- Picks up upstream [yaci
v0.4.1](https://github.com/bloxbean/yaci/releases/tag/v0.4.1), which
fixes a CBOR parsing error for blocks encoded with definite-length
arrays (>23 txs) that broke chain sync on preview. Also adds
configurable `TipFinder` timeouts.
fix: raise SYNC_GRACE_SLOTS_COUNT default to 200 and enrich gateway error logs (#742)
Bumps the default sync grace window from 100 to 200 slots across env files,
Spring config, Helm values, and docs. The previous value caused the synced
flag on /network/status to flap when the HTTP link between rosetta-api and
yaci-indexer was briefly unstable.

Enriches the logs in YaciHttpGatewayImpl for both getStakeAccountRewards
and getDiscoveredPeers: non-2xx branches now include the target URL and
response body alongside the status code, and IOException/InterruptedException
branches include the URL plus the exception (full cause chain) so SSL and
connection errors are visible in the logs.

Co-authored-by: Mateusz Czeladka <[email protected]>
Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
refactor: add @EqualsAndHashCode by ID to assets-ext JPA entities
Aligns MetadataReferenceNftEntity, TokenLogoEntity and TokenMetadataEntity
with the JPA entity convention used across the codebase: identity is
defined by @Id fields only, using Lombok's
@EqualsAndHashCode(onlyExplicitlyIncluded = true) plus @EqualsAndHashCode.Include
on each @Id. This avoids proxy/lazy-loading pitfalls and matches the
upstream yaci-store style.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
fix: raise SYNC_GRACE_SLOTS_COUNT default to 200 and enrich gateway error logs
Bumps the default sync grace window from 100 to 200 slots across env files,
Spring config, Helm values, and docs. The previous value caused the synced
flag on /network/status to flap when the HTTP link between rosetta-api and
yaci-indexer was briefly unstable.

Enriches the logs in YaciHttpGatewayImpl for both getStakeAccountRewards
and getDiscoveredPeers: non-2xx branches now include the target URL and
response body alongside the status code, and IOException/InterruptedException
branches include the URL plus the exception (full cause chain) so SSL and
connection errors are visible in the logs.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
fix: update PeerSnapshotServiceImpl for
  cardano-node 10.7.x peer-snapshot format

  cardano-node 10.7.x dropped the legacy
  "domain" relay field — all relay
  addresses (both hostnames and IPs) now use
  the "address" key. The port
  field is also optional in the new format.

  - Detect relay type (domain/IPv4/IPv6) by
  inspecting the address value
    instead of checking for a non-null
  "domain" field
  - Default port to 3001 when the relay entry
  omits the port field
  - Retain "domain" field handling for
  backwards compatibility with
    older snapshot formats
build(docker): harden apt against transient Ubuntu-mirror failures
Drops an /etc/apt/apt.conf.d/99-retries file into every ubuntu:24.04
stage before the first apt call:

  Acquire::Retries "5";
  Acquire::http::Timeout "30";
  Acquire::https::Timeout "30";
  Acquire::http::No-Cache "true";

Motivation: docker compose builds on shared hosts have been hitting
"File has unexpected size" errors from security.ubuntu.com when a
mirror edge is mid-sync. Retries + No-Cache let apt transparently
re-fetch from a fresh mirror instance instead of failing the whole
build. Does not help when the mirror is serving a permanently-wrong
file (nothing does), but cleans up the common transient case.

Applied to:
- api/Dockerfile                          (build-common)
- yaci-indexer/Dockerfile                 (build-common)
- docker/dockerfiles/mithril/Dockerfile   (cardano-builder + mithril-runner)
- docker/dockerfiles/node/Dockerfile      (cardano-builder + node-runner)
- docker/dockerfiles/postgres/Dockerfile

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
build(docker): harden apt against transient Ubuntu-mirror failures
Drops an /etc/apt/apt.conf.d/99-retries file into every ubuntu:24.04
stage before the first apt call:

  Acquire::Retries "5";
  Acquire::http::Timeout "30";
  Acquire::https::Timeout "30";
  Acquire::http::No-Cache "true";

Motivation: docker compose builds on shared hosts have been hitting
"File has unexpected size" errors from security.ubuntu.com when a
mirror edge is mid-sync. Retries + No-Cache let apt transparently
re-fetch from a fresh mirror instance instead of failing the whole
build. Does not help when the mirror is serving a permanently-wrong
file (nothing does), but cleans up the common transient case.

Applied to:
- api/Dockerfile                          (build-common)
- yaci-indexer/Dockerfile                 (build-common)
- docker/dockerfiles/mithril/Dockerfile   (cardano-builder + mithril-runner)
- docker/dockerfiles/node/Dockerfile      (cardano-builder + node-runner)
- docker/dockerfiles/postgres/Dockerfile

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>