Release of Canton 3.5.6
Canton 3.5.6 has been released on June 24, 2026.
Summary
This is a maintenance release that fixes an exceptional severe bug around logical synchronizer upgrades and brings a few improvements.
What’s New
Minor Improvements
- Connection pool metrics:
- Add a
psidlabel, populated if it is provided when connecting. This should be the case starting from the second connection to a synchronizer, or upon LSU. - Close the
connection-healthandsubscription-healthmetrics associated to thepsidwhen the pool is closed, instead of closing all the existing ones when the pool is started.
- Add a
- Updated com.google.protobuf libs from 3.25.5 --> 3.25.9
- LSU: A call to
AcknowledgeSignedwith a timestamp before the upgrade time returns immediately, without any acknowledgement being done. - Fix JDBC query for computing last activations: Under adverse conditions (data corruption) this query might called with empty inputs where it would have failed execution with PostgreSQL server version 14.
- (Potentially) BREAKING: Aggregatable submissions are now rejected eagerly to preserve bandwidth.
This means that the submission error codeSEQUENCER_AGGREGATE_SUBMISSION_ALREADY_SENTmay now also
be returned during the synchronous submission of the sequencer, as the state of the aggregation is also
checked before ordering. In addition, the gRPC error code has been modified fromFAILED_PRECONDITIONto
ALREADY_EXISTSto better reflect the nature of the error. Clients should be updated to handle this error
code accordingly. Due to backwards compatibility, the old gRPC error code will be returned for PV35 and
before on the async path, and the new capability must only be turned on when all nodes have been
upgraded to a Canton version that supports this change. The new capability can be enabled usingcanton.sequencers.seq.parameters.enable-reject-delivered-aggregations-on-pv-35 = MED
for mediators. This can be combined with the new configuration option of the mediatorcanton.mediators.mymediator.parameters.delayed-verdict-sender.enabled = true.
Generally, the sequencer will send out the verdict after reaching the threshold. All subsequent sent verdicts are thrown away. The new option now allows threshold + extra verdicts to be sent immediately, while the rest of the mediators will wait a short amount of time. This allows to reduce the load on the sequencer by 30%, creating more capacity for other transactions. - Fixed an issue that prevent external parties from being allocated on a participant with an offline root key via the Ledger API's
PartyManagementService.AllocateExternalPartyendpoint. - Fixed an issue whereby the sequencer would no longer make progress after a failed write. Sequencers in such a state now report 'liveness' unhealthy.
- Require Participant Admin (not just IDP Admin) permissions in order to be able to grant CanReadAsAnyParty and CanExecuteAsAnyParty rights to users.
Bugfixes
(26-004, High): LSU: Missing synchronization between topology local copy and purging
Issue Description
Because of the lack of synchronization, it can happen that topology purging kicks in before the local copy of the topology state is finished, which result in incorrect topology state for the successor.
The issue can occur only when topology purging is enabled, which is not the case by default.
Affected Deployments
Participant nodes
Affected Versions
All versions before 3.5.6
Impact
Topology fork
Symptom
- Participant nodes issues warning/errors about missing topology transactions that were valid before the LSU.
- Submission of a transaction is rejected because of missing topology transactions that were valid before the LSU.
Workaround
Restore from backup and ensure topology purging is disabled
Likeliness
Exceptional
Recommendation
Upgrade to 3.5.6
Compatibility
The following Canton protocol versions are supported:
| Dependency | Version |
|---|---|
| Canton protocol versions | 34, 35 |
Canton has been tested against the following versions of its dependencies:
| Dependency | Version |
|---|---|
| Java Runtime | OpenJDK 64-Bit Server VM (build 21.0.12+2-nixos, mixed mode, sharing) |
| Postgres | Recommended: PostgreSQL 17.10 (Debian 17.10-1.pgdg13+1) – Also tested: PostgreSQL 14.23 (Debian 14.23-1.pgdg13+1), PostgreSQL 15.18 (Debian 15.18-1.pgdg13+1), PostgreSQL 16.14 (Debian 16.14-1.pgdg13+1) |