Skip to content
CCPEDIAby Unity Nodes
ReleasesCanton 2.7.6

Canton 2.7.6

This release contains minor bug fixes and added flexibility on how database connections can be configured.

Canton 2.7.6 has been released on November 29, 2023. You can download the Daml Open Source edition from the Daml Connect Github Release Section. The Enterprise edition is available on Artifactory. Please also consult the full documentation of this release.

Summary

This release contains minor bug fixes and added flexibility on how database connections can be configured.

Minor Improvements

DB connection checks don't contend with normal queries

Canton periodically checks the validity and health of its connection to the database. Those checks were previously competing with other database queries, sometimes leading to errors that would be retried but cause warnings. This is no longer the case.

Improved observability of ledger streams

The observability of the streams served over the ledger api has been improved in both logging and metrics.

  • Most operations related to streams lifetime are now logged at debug level rather then trace
  • Metrics reporting number of active streams metrics.daml.lapi.streams.active are now collected always, independently of the rate limiting settings

Configuration Changes

Setting database connection pool sizes explicitly

The sizes of the connection pools used for interactions with the database storages inside the canton nodes are determined using a dedicated formula described in a documentation article on max connection settings:

The values obtained from that formula can now be overridden using explicit configuration settings for the read, write and ledger-api connection pools sizes:

canton.participants.participant.storage.parameters.connection-allocation.num-reads
canton.participants.participant.storage.parameters.connection-allocation.num-writes
canton.participants.participant.storage.parameters.connection-allocation.num-ledger-api

Similar parameters exist also for other canton node types:

canton.sequencers.sequencer.storage.parameters.connection-allocation...
canton.mediators.mediator.storage.parameters.connection-allocation...
canton.domain-managers.domain_manager.storage.parameters.connection-allocation...

The effective connection pool sizes are reported by the canton nodes at start-up

INFO  c.d.c.r.DbStorageMulti$:participant=participant_b - Creating storage, num-reads: 5, num-writes: 4

Bugfixes

(23-033, Major): Mediator becomes non functional when encountering a database exception after HA failover

Issue Description

The mediator does not handle transient DB exceptions properly after it has transitioned from passive to active during an HA failover

Affected Deployments

Mediator

Affected Versions

2.5 to 2.7.5

Impact

Mediator becomes non functional when encountering a database exception after HA failover.

Symptom

After encountering an SQL exception, the application handler fails, and the mediator disconnects its sequencer client. After that the mediator stops processing messages.

Workaround

Restart the mediator node.

Likeliness

Needs a mediator to transition from active state to passive state and active state again, and then encounter a DB error. Not extremely likely but likelihood increases over time.

Recommendation

Upgrade to 2.7.6 or higher

Compatibility

The following Canton protocol and Ethereum sequencer contract versions are supported:

DependencyVersion
Canton protocol versions3, 4, 5

Canton has been tested against the following versions of its dependencies:

DependencyVersion
Java RuntimeOpenJDK 64-Bit Server VM Zulu11.62+17-CA (build 11.0.18+10-LTS, mixed mode)
Postgrespostgres (PostgreSQL) 14.10 (Debian 14.10-1.pgdg120+1)
Oracle19.18.0