Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 24 additions & 2 deletions docs-main/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,18 @@
"group": "Release Notes",
"pages": [
"global-synchronizer/release-notes/splice",
"global-synchronizer/release-notes/canton"
{
"group": "Canton",
"pages": [
"global-synchronizer/release-notes/canton",
"global-synchronizer/release-notes/canton-releases/3-5-6",
"global-synchronizer/release-notes/canton-releases/3-5-5",
"global-synchronizer/release-notes/canton-releases/3-5-4",
"global-synchronizer/release-notes/canton-releases/3-5-3",
"global-synchronizer/release-notes/canton-releases/3-5-2",
"global-synchronizer/release-notes/canton-releases/3-5-1"
]
}
]
},
{
Expand Down Expand Up @@ -3211,7 +3222,18 @@
"group": "Canton Network",
"pages": [
"global-synchronizer/release-notes/splice",
"global-synchronizer/release-notes/canton"
{
"group": "Canton",
"pages": [
"global-synchronizer/release-notes/canton",
"global-synchronizer/release-notes/canton-releases/3-5-6",
"global-synchronizer/release-notes/canton-releases/3-5-5",
"global-synchronizer/release-notes/canton-releases/3-5-4",
"global-synchronizer/release-notes/canton-releases/3-5-3",
"global-synchronizer/release-notes/canton-releases/3-5-2",
"global-synchronizer/release-notes/canton-releases/3-5-1"
]
}
]
},
{
Expand Down
901 changes: 901 additions & 0 deletions docs-main/global-synchronizer/release-notes/canton-releases/3-5-1.mdx

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
title: "3.5.2"
description: "Canton 3.5.2 release notes."
---

# Release of Canton 3.5.2

Canton 3.5.2 has been released on June 03, 2026.

## Summary

This is a maintenance release that fixes an out of memory issue during synchronizer reconnect, addresses security vulnerabilities in the Canton docker base image, as well as minor improvements.

## Minor Improvements

- Updated the Docker base image to 1.0.8 to address vulnerabilities in Busybox: CVE-2025-46394, CVE-2025-60876.
- Fix sequencer subscription closing errors `Timeout 9 seconds expired, but readers are still active in Task closing flushing direct-sequencer-subscription`.
- Handle decoding of `ContractId Void` in PQS
- Improve caching of contract key lookups

## Deprecations

### Removal of synchronous processing on the mediator
The synchronous processing mode on the mediator has been removed in favor of the asynchronous one
that offers better performance.

Config path `myMediator.config.asynchronous-processing` has been deprecated as it is on by default now.

## Bugfixes

### (26-002, Medium): OOM from high memory usage after disconnecting and reconnecting from/to a synchronizer

#### Issue Description
Because of the periodic time proof retrieval task (with interval minObservationDuration), the ConnectedSynchronizer
instance cannot be garbage collected right away after a disconnect/reconnect from the synchronizer.

This leads to higher memory consumption which can lead to OOMs.

#### Affected Deployments
Participant nodes

#### Affected Versions
All versions before 3.5.2

#### Impact
High memory consumption and potentially OOM of the participant

#### Symptom
The heap dump shows instances of the ConnectedSynchronizer from previously disconnected synchronizers.
The stack of calls refers to PeriodicAcknowledgements, TimeProofRequestsSubmitterImpl, SynchronizerTimeTracker and finally Clock

#### Workaround
Restart the participant.

#### Likeliness
Sometimes

#### Recommendation
Upgrade to 3.5.2

## 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) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
title: "3.5.3"
description: "Canton 3.5.3 release notes."
---

# Release of Canton 3.5.3

Canton 3.5.3 has been released on June 03, 2026.

## Summary

This is a maintenance release that fixes an issue around mediator restart and LSU.

## Bugfixes

### Mediator cannot reconnect to sequencer after processing LSU sequencing test message

During LSU, after processing a sequencing test message, a mediator cannot reconnect to the sequencer.
The connection issue resolves itself when the upgrade time is reached and traffic is initialized on the sequencer.

## 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) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: "3.5.4"
description: "Canton 3.5.4 release notes."
---

# Release of Canton 3.5.4

Canton 3.5.4 has been released on June 10, 2026.

## Summary

This is a maintenance release that fixes a bug around modify synchronizers and brings a few improvements.

## What’s New

### Minor Improvements
- Config flag `canton.participants.participant.parameter.alpha-multi-synchronizer-support` was renamed to `enable-all-ledger-api-reassignments`.
- Participant topology feature flag `EnableAlphaMultiSynchronizer` was renamed to `EnableMultiSynchronizer`.
- Improved coordination between the ACS commitment processor and its store, preventing benign `DB_STORAGE_DEGRADATION` warnings during participant shutdown.

#### Improvements around listing synchronizers

- Message `ListRegisteredSynchronizersRequest` accepts a new `all_statuses` attribute to allow to retrieve all
registered synchronizers (and not only the active ones).
- Added new console command `participant1.synchronizers.list_all_registered` to list all registered synchronizers.

#### Improvements around BFT Orderer's database pruning and performance

- Database tables partitioning was introduced to the database tables of the BFT Orderer
- These changes bring significant improvements to the performance of the pruning operation as well as many other queries that got optimized
- IMPORTANT: these changes require running a new automatic database migration that can potentially take considerable amount of time, depending on how much data is in the affected tables at the time of the migration

## Bugfixes

- Fixed an issue that was making `ModifySynchronizer` request to fail if the physical synchronizer id was set.

## 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) |


## What's Coming

We are currently working on
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
title: "3.5.5"
description: "Canton 3.5.5 release notes."
---

# Release of Canton 3.5.5

Canton 3.5.5 has been released on June 17, 2026.

## Summary

This is a maintenance release that fixes an exceptional but severe bug around logical synchronizer upgrades and brings a few improvements.

## What’s New

### Dependencies of vetted packages can be unvetted (PV35+)
On synchronizers running protocol versions 35 and above, vetting state change operations on the API (e.g. via ``/package-vetting/update``)
allow dependencies of vetted packages to be unvetted safely, without requiring the use of a force flag.
This is consistent with the transaction protocol, which does not require the dependencies of a Daml transaction node package to be vetted in PV35+.
**Note**: For protocol versions 34 and below, the package dependency vetting restrictions remain unchanged.

### Minor Improvements

- Updated docker base image from 1.0.8 to 1.0.9, which bumps grpc-health-probe to v0.4.52.
- Reduce memory footprint with streaming of large gRPC responses by avoiding buffering the whole response.
- Improve log message in the sequencer in case queuing the event signal is not possible due to a closed subscription and not describe that case as an error.
- New participant config `canton.participants.myParticipant.parameters.connect-to-synchronizers-on-startup` allows to disable automatic connect to synchronizers
on startup.

## Bugfixes

### (26-003, High): Restarting stuck sequencer yields to sequencer fork

#### Issue Description
Around LSU: if a sequencer not processing blocks is restarted after upgrade time and before it had the chance to process any block,
it will delete traffic data entries as part of crash recovery.

#### Affected Deployments
Sequencer nodes

#### Affected Versions
All versions before 3.5.5

#### Impact
Sequencer fork

#### Symptom
Inability for participants to connect (cannot get consensus on traffic) or participant disconnecting with SEQUENCER_FORK_DETECTED

#### Workaround
Restore from backup

#### Likeliness
Exceptional

#### Recommendation
Upgrade to 3.5.5

## 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) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
---
title: "3.5.6"
description: "Canton 3.5.6 release notes."
---

# 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 `psid` label, 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-health` and `subscription-health` metrics associated to the `psid` when the pool is closed, instead of closing all the existing ones when the pool is started.
- Updated com.google.protobuf libs from 3.25.5 --> 3.25.9
- LSU: A call to `AcknowledgeSigned` with 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 code `SEQUENCER_AGGREGATE_SUBMISSION_ALREADY_SENT` may 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 from `FAILED_PRECONDITION` to
`ALREADY_EXISTS` to 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 disabled using `canton.sequencers.seq.parameters.enable-reject-delivered-aggregations-on-pv-35 = []`
for mediators. This can be combined with the new configuration option of the mediator `canton.mediators.mymediator.parameters.delayed-verdict-sender.enabled = false`.
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.AllocateExternalParty` endpoint.
- 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) |
Loading