Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
5d5a33d
Upgrade to Canton 3.4 (#1089)
moritzkiefer-da Jun 17, 2025
72673ed
[canton-3.4] Upgrade cometbft driver and reenable cometbft tests (#1161)
moritzkiefer-da Jun 20, 2025
379577d
[canton-3.4] Bump Canton fork and binary (#1309)
moritzkiefer-da Jul 3, 2025
5ad3a93
Merge remote-tracking branch 'origin/main' into canton-3.4
cocreature Jul 4, 2025
344ea31
Remove sequencer-api-limits section as it is not forward-ported yet
cocreature Jul 4, 2025
d85a101
Merge pull request #1323 from hyperledger-labs/cocreature/3.4-main
moritzkiefer-da Jul 4, 2025
3811b37
[canton-3.4] Trim down test sources (#1335)
moritzkiefer-da Jul 4, 2025
da28971
Merge remote-tracking branch 'origin/main' into canton-3.4
cocreature Aug 15, 2025
2180b95
Merge pull request #1928 from hyperledger-labs/cocreature/3.4-merge-main
moritzkiefer-da Aug 15, 2025
ab2935d
Bump Canton binary and fork (#1931)
moritzkiefer-da Aug 18, 2025
f0b9404
Merge remote-tracking branch 'origin/main' into canton-3.4
cocreature Aug 19, 2025
44130f3
Merge pull request #1948 from hyperledger-labs/cocreature/merge-main-…
moritzkiefer-da Aug 19, 2025
8339acc
Bump version on 3.4 branch (#1958)
moritzkiefer-da Aug 19, 2025
b092591
Extract scan p2p fixes (#2004)
moritzkiefer-da Aug 25, 2025
19479aa
Merge remote-tracking branch 'origin/main' into canton-3.4
cocreature Aug 25, 2025
49e9fe0
Merge remote-tracking branch 'origin/main' into canton-3.4 (#2008)
moritzkiefer-da Aug 25, 2025
87032ef
Pass interface ids via package names in ledger API read requests (#1993)
moritzkiefer-da Aug 25, 2025
4d2bef6
Don't bump splice ports in migration test (#2007)
moritzkiefer-da Aug 25, 2025
44d85e4
Remove config transform to bump canton domain ports (#2014)
moritzkiefer-da Aug 26, 2025
d0c0239
Use canton port bump helper in migration test (#2018)
moritzkiefer-da Aug 26, 2025
d5ed155
Migrate from reference driver to BFT driver (#1975)
moritzkiefer-da Aug 27, 2025
ee0f76f
Upgrade Canton fork and binary (#2080)
moritzkiefer-da Sep 4, 2025
2ef0f14
Merge remote-tracking branch 'origin/main' into canton-3.4
cocreature Sep 4, 2025
d816b7a
Commit BFT config (#2117)
moritzkiefer-da Sep 4, 2025
07a2ea0
Merge pull request #2116 from hyperledger-labs/cocreature/canton-3.4-…
moritzkiefer-da Sep 4, 2025
13d15a8
Remove accidentally committed lnav-user-1000-work
cocreature Sep 4, 2025
d2cf146
Merge pull request #2120 from hyperledger-labs/cocreature/lnav-user-work
moritzkiefer-da Sep 4, 2025
7e4c364
Cherry pick pulumi fixes from long running BFT branch
nicu-da Aug 20, 2025
76ce896
Remove resources definition
cocreature Sep 4, 2025
178e05a
remove unused variables
cocreature Sep 4, 2025
045e78a
Merge pull request #2121 from hyperledger-labs/cocreature/long-runnin…
moritzkiefer-da Sep 4, 2025
0bde3a1
add support to run all the integration tests with dabft (#1195)
nicu-da Sep 12, 2025
e59d29c
[canton-3.4] Upgrade Canton fork and binary (#2319)
moritzkiefer-da Sep 22, 2025
eb4aa67
Merge remote-tracking branch 'origin/main' into canton-3.4
cocreature Sep 23, 2025
5e20209
Work around scan tx log bug
cocreature Sep 23, 2025
4abefc5
ignore reassignment test
cocreature Sep 24, 2025
5bec3ab
Merge pull request #2374 from hyperledger-labs/cocreature/merge-main-…
moritzkiefer-da Sep 24, 2025
b9701c7
Merge branch 'main' into oriol/mergemainto34
OriolMunoz-da Oct 1, 2025
77e8546
Merge pull request #2491 from hyperledger-labs/oriol/mergemainto34
OriolMunoz-da Oct 2, 2025
6447ce5
Switch to relying on package names instead of module names (#1976)
OriolMunoz-da Oct 10, 2025
9f5e39e
Merge Splice main
martinflorian-da Oct 10, 2025
63c5db3
main sync fixes
martinflorian-da Oct 10, 2025
80a5715
Bump Canton binary
martinflorian-da Oct 10, 2025
55eeedc
Canton fork bump: undo our changes
martinflorian-da Oct 10, 2025
694a5cf
Canton fork bump: bump Canton commit
martinflorian-da Oct 10, 2025
0535934
Canton fork bump: Reapply our changes (things that just worked)
martinflorian-da Oct 10, 2025
e6bccf0
Canton fork bump: Reapply our changes (this is me processing .rej fil…
martinflorian-da Oct 10, 2025
489b90f
Canton fork bump: Bump Canton commit and Canton/SDK versions
martinflorian-da Oct 10, 2025
58a2e04
Controversial change 1: remove `time-proof-freshness-proportion = 0` …
martinflorian-da Oct 10, 2025
98e1026
Various less interesting fixes
martinflorian-da Oct 10, 2025
a2ae58a
Controversial change 2: restore `daml/lf/value/json`
martinflorian-da Oct 10, 2025
db51597
More boring fixes
martinflorian-da Oct 13, 2025
afc85de
Interesting change 3: use default SequencerConnectionPoolDelays every…
martinflorian-da Oct 13, 2025
5d8e197
Interesting change 4: Don't support "vet on upload"
martinflorian-da Oct 13, 2025
774801d
boring fixes
martinflorian-da Oct 13, 2025
8654944
Interesting change 5: Me potentially breaking UpdateHistory
martinflorian-da Oct 13, 2025
b288c37
less interesting fixes
martinflorian-da Oct 13, 2025
8f34d6f
Interesting change 6: remove topologyChangeDelayDuration mostly every…
martinflorian-da Oct 13, 2025
2ca3261
more boring fixes, compiles now!
martinflorian-da Oct 13, 2025
2a09ee7
formatFix (but excluding the canton fork)
martinflorian-da Oct 13, 2025
67659dd
boring: more topology-change-delay-duration cleanup
martinflorian-da Oct 13, 2025
8317f5f
formatFix (also canton)
martinflorian-da Oct 13, 2025
fd786b3
per sync vetting seems required now
cocreature Oct 14, 2025
c4ff270
Fix topology change delay in simtime
cocreature Oct 14, 2025
b21e61a
maybe bump canton again
cocreature Oct 14, 2025
acbf08c
Disable connection pool
cocreature Oct 14, 2025
85ed8a7
[static] fix: ignore python headers in canton/community
martinflorian-da Oct 14, 2025
e19d6db
[static] fix docs build
martinflorian-da Oct 14, 2025
9976bf6
Disable auto-load-dars
cocreature Oct 14, 2025
35a9d37
Set force flag when setting mediator reaction timeout = 0
cocreature Oct 14, 2025
67e213d
Config fixes and log ignores
cocreature Oct 14, 2025
377342f
persist dependencies log ignore
martinflorian-da Oct 14, 2025
540b36d
Try to fix dar uploads
cocreature Oct 14, 2025
8abaa22
Add missing parenthesis
cocreature Oct 14, 2025
b6049af
Fix no_vetted_packages macro
cocreature Oct 14, 2025
d39f789
Fix merge strategy for fastdoubleparser notice
cocreature Oct 14, 2025
a8b58d2
fix simtime tests by actually setting topologyChangeDelay
martinflorian-da Oct 14, 2025
8fb7f06
Extra post shutdown log ignore
cocreature Oct 15, 2025
8ceda21
Ignore SplitwellUpgradeIntegrationTest
cocreature Oct 15, 2025
06daf21
Add missing force flag to unvetting call
cocreature Oct 15, 2025
31f3683
Upgrade Canton and reenable admin workflow loading again
cocreature Oct 15, 2025
ce504ed
More log ignores
cocreature Oct 15, 2025
fb7f989
Query sync store when changing vetting
cocreature Oct 15, 2025
81a9233
Try to fix migration tests
cocreature Oct 15, 2025
e84c8e6
Fix formatting
cocreature Oct 15, 2025
6513b5b
Pass force flag when changing domain parameters
cocreature Oct 15, 2025
2030865
Temporarily only run migration test for faster CI feedback
cocreature Oct 15, 2025
1e1b8ba
Revert "Temporarily only run migration test for faster CI feedback"
cocreature Oct 15, 2025
deb52f3
Fix package lock json
cocreature Oct 15, 2025
866f2c3
Fix stream limits configuration
cocreature Oct 15, 2025
bbbd262
Fix endpoint name on 3.4
cocreature Oct 15, 2025
f18cc19
Improve logs on failed sync connections
cocreature Oct 15, 2025
abbfa2e
Merge pull request #2664 from hyperledger-labs/martinflorian-da/hls-2…
moritzkiefer-da Oct 15, 2025
7b6998e
Merge remote-tracking branch 'origin/main' into canton-3.4
cocreature Oct 15, 2025
43ea3ec
Fix sequencer configuration
cocreature Oct 15, 2025
c65a905
Fix async writer parameter
cocreature Oct 15, 2025
45ec6ab
Merge pull request #2713 from hyperledger-labs/cocreature/canton-3.4-…
moritzkiefer-da Oct 15, 2025
d2fb369
Merge pull request #2166 from hyperledger-labs/cocreature/reward-expiry
moritzkiefer-da Oct 16, 2025
89e1715
Bump Canton to 3.4.0-snapshot.20251016.17201.0.vb7d11e6c (#2737)
moritzkiefer-da Oct 17, 2025
3a91112
Bump Canton to 3.4.0-snapshot.20251017.17203.0.vd4ba31f7 (#2745)
martinflorian-da Oct 17, 2025
33c0c55
Merge main into canton-3.4
martinflorian-da Oct 17, 2025
be8ad84
Fix flyway migration version collision
martinflorian-da Oct 17, 2025
d9eed23
Merge pull request #2746 from hyperledger-labs/martinflorian-da/3.4-l…
martinflorian-da Oct 20, 2025
02629e7
Merge remote-tracking branch 'origin/main' into martinflorian-da/cni-…
martinflorian-da Oct 20, 2025
2dbbab8
Merge pull request #2754 from hyperledger-labs/martinflorian-da/cni-2…
martinflorian-da Oct 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
17 changes: 17 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,23 @@ jobs:
parallelism: 10
test_name: wall-clock-time
with_gcp_creds: true
skip_if_regex: "\\[bft\\]"
commit_sha: ${{ inputs.commit_sha }}
daml_base_version: ${{ inputs.daml_base_version }}
oss_only: ${{ inputs.oss_only }}
secrets: inherit

scala_test_wall_clock_time_bft:
uses: ./.github/workflows/build.scala_test.yml
with:
runs_on: self-hosted-k8s-x-large
test_names_file: 'test-full-class-names.log'
start_canton_options: -we
parallelism: 10
test_name: wall-clock-time-bft
with_gcp_creds: true
pre_sbt_cmd: "export SPLICE_USE_BFT_SEQUENCER=1"
run_if_commit_tag: 'bft'
commit_sha: ${{ inputs.commit_sha }}
daml_base_version: ${{ inputs.daml_base_version }}
oss_only: ${{ inputs.oss_only }}
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,4 @@ docs/src/deployment/observability/metrics_reference.rst
# For Vagrant
/.vagrant/
/vagrant-nix-cache/
lnav*work
2 changes: 1 addition & 1 deletion MAINTENANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Initial setup:
1. Check out the [Canton **Open Source** repo](https://github.com/digital-asset/canton)
2. Define the environment variable used in the commands below using `export PATH_TO_CANTON_OSS=<your-canton-oss-repo-path>`. This can be added to your private env vars.

Current Canton commit: `3ee44a6d0f252aa8c52a86ab368044265d025c2f`
Current Canton commit: `79e645eb60ba378536a6d62cabbeab78d1be6c61`

1. Checkout the **current Canton commit listed above** in the Canton open source repo from above, so we can diff our current fork against this checkout.
2. Change to your checkout of the Splice repo and execute the following steps:
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.4.22
0.5.0
Original file line number Diff line number Diff line change
Expand Up @@ -375,42 +375,29 @@ object ConfigTransforms {
.seq
)

def updateAllSplitwellAppConfigs_(
update: SplitwellAppTransform
def updateAllSplitwellAppConfigs(
update: (String, SplitwellAppBackendConfig) => SplitwellAppBackendConfig
): ConfigTransform =
_.focus(_.splitwellApps).modify(_.map { case (name, config) =>
(name, update(config))
(name, update(name.unwrap, config))
})

def updateAllRemoteSplitwellAppConfigs_(
update: RemoteSplitwellAppTransform
def updateAllSplitwellAppConfigs_(
update: SplitwellAppTransform
): ConfigTransform =
updateAllSplitwellAppConfigs((_, config) => update(config))

def updateAllRemoteSplitwellAppConfigs(
update: (String, SplitwellAppClientConfig) => SplitwellAppClientConfig
): ConfigTransform =
_.focus(_.splitwellAppClients).modify(_.map { case (name, config) =>
(name, update(config))
(name, update(name.unwrap, config))
})

def bumpCantonDomainPortsBy(bump: Int): ConfigTransform =
bumpSvAppCantonDomainPortsBy(bump) compose bumpValidatorAppCantonDomainPortsBy(
bump
) compose bumpScanCantonDomainPortsBy(bump)

def bumpSvAppCantonDomainPortsBy(bump: Int): ConfigTransform = {
updateAllSvAppConfigs_(
_.focus(_.domains.global.url)
.modify(_.map(bumpUrl(bump, _)))
.focus(_.localSynchronizerNode)
.modify(
_.map(d =>
d.copy(
sequencer = d.sequencer
.copy(
externalPublicApiUrl = bumpUrl(bump, d.sequencer.externalPublicApiUrl)
)
)
)
)
)
}
def updateAllRemoteSplitwellAppConfigs_(
update: RemoteSplitwellAppTransform
): ConfigTransform =
updateAllRemoteSplitwellAppConfigs((_, config) => update(config))

def bumpScanCantonDomainPortsBy(bump: Int) = {
updateAllScanAppConfigs_(
Expand All @@ -424,47 +411,57 @@ object ConfigTransforms {
)
}

def bumpValidatorAppCantonDomainPortsBy(bump: Int): ConfigTransform = {
def bumpUrl(s: String): String = {
val uri = Uri(s)
uri.withPort(uri.effectivePort + bump).toString
}
def bumpOptionalUrl(o: Option[String]): Option[String] = {
o.map(bumpUrl(_))
}
updateAllValidatorConfigs_(
_.focus(_.domains.global.url)
.modify(bumpOptionalUrl(_))
.focus(_.domains.extra)
.modify(_.map(d => d.copy(url = bumpUrl(d.url))))
)
def bumpOptionalUrl(o: Option[String], bump: Int): Option[String] = {
o.map(bumpUrl(bump, _))
}

def bumpCantonPortsBy(bump: Int): ConfigTransform = {
def bumpCantonPortsBy(bump: Int, predicate: String => Boolean = _ => true): ConfigTransform = {

val transforms = Seq(
updateAllSvAppConfigs_(
_.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.localSynchronizerNode)
.modify(_.map(portTransform(bump, _)))
updateAllSvAppConfigs((name, conf) =>
if (predicate(name))
conf
.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.domains.global.url)
.modify(_.map(bumpUrl(bump, _)))
.focus(_.localSynchronizerNode)
.modify(_.map(portTransform(bump, _)))
else conf
),
updateAllScanAppConfigs_(
_.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.sequencerAdminClient)
.modify(portTransform(bump, _))
.focus(_.mediatorAdminClient)
.modify(portTransform(bump, _))
.focus(_.bftSequencers)
.modify(_.map(_.focus(_.sequencerAdminClient).modify(portTransform(bump, _))))
updateAllScanAppConfigs((name, conf) =>
if (predicate(name))
conf
.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.sequencerAdminClient)
.modify(portTransform(bump, _))
.focus(_.mediatorAdminClient)
.modify(portTransform(bump, _))
.focus(_.bftSequencers)
.modify(_.map(_.focus(_.sequencerAdminClient).modify(portTransform(bump, _))))
else conf
),
updateAllValidatorConfigs_(
_.focus(_.participantClient)
.modify(portTransform(bump, _))
updateAllValidatorConfigs((name, conf) =>
if (predicate(name))
conf
.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.domains.global.url)
.modify(bumpOptionalUrl(_, bump))
.focus(_.domains.extra)
.modify(_.map(d => d.copy(url = bumpUrl(bump, d.url))))
else conf
),
updateAllSplitwellAppConfigs((name, conf) =>
if (predicate(name))
conf.focus(_.participantClient).modify(portTransform(bump, _))
else conf
),
updateAllSplitwellAppConfigs_(
_.focus(_.participantClient).modify(portTransform(bump, _))
updateAllRemoteSplitwellAppConfigs((name, conf) =>
if (predicate(name))
conf.focus(_.participantClient).modify(portTransform(bump, _))
else conf
),
)

Expand All @@ -476,34 +473,27 @@ object ConfigTransforms {
updateAllSvAppConfigs((name, config) => {
if (svApps.contains(name)) {
config
.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.localSynchronizerNode)
.modify(_.map(portTransform(bump, _)))
.focus(_.adminApi)
.modify(portTransform(bump, _))
} else {
config
}
})
}) compose bumpSomeSvAppCantonPortsBy(bump, svApps)
}

def bumpSomeSvAppCantonDomainPortsBy(bump: Int, svApps: Seq[String]): ConfigTransform = {
def bumpSomeSvAppCantonPortsBy(bump: Int, svApps: Seq[String]): ConfigTransform = {
updateAllSvAppConfigs((name, config) => {
if (svApps.contains(name)) {
config
.focus(_.domains.global.url)
.modify(_.map(bumpUrl(bump, _)))
.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.localSynchronizerNode)
.modify(
_.map(d =>
d.copy(
sequencer = d.sequencer
.copy(externalPublicApiUrl = bumpUrl(bump, d.sequencer.externalPublicApiUrl))
)
)
)
} else config
.modify(_.map(portTransform(bump, _)))
} else {
config
}
})
}

Expand Down Expand Up @@ -562,10 +552,20 @@ object ConfigTransforms {
updateAllScanAppConfigs((name, config) => {
if (scanApps.contains(name)) {
config
.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.adminApi)
.modify(portTransform(bump, _))
} else {
config
}
}) compose bumpSomeScanAppCantonPortsBy(bump, scanApps)
}

def bumpSomeScanAppCantonPortsBy(bump: Int, scanApps: Seq[String]): ConfigTransform = {
updateAllScanAppConfigs((name, config) => {
if (scanApps.contains(name)) {
config
.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.sequencerAdminClient)
.modify(portTransform(bump, _))
.focus(_.mediatorAdminClient)
Expand Down Expand Up @@ -602,13 +602,23 @@ object ConfigTransforms {
updateAllValidatorAppConfigs((name, config) => {
if (validatorApps.contains(name)) {
config
.focus(_.participantClient)
.modify(portTransform(bump, _))
.focus(_.adminApi)
.modify(portTransform(bump, _))
} else {
config
}
}) compose bumpSomeValidatorAppCantonPortsBy(bump, validatorApps)
}

def bumpSomeValidatorAppCantonPortsBy(bump: Int, validatorApps: Seq[String]): ConfigTransform = {
updateAllValidatorAppConfigs((name, config) => {
if (validatorApps.contains(name)) {
config
.focus(_.participantClient)
.modify(portTransform(bump, _))
} else {
config
}
})
}

Expand Down Expand Up @@ -672,31 +682,38 @@ object ConfigTransforms {
transforms.foldLeft((c: SpliceConfig) => c)((f, tf) => f compose tf)
}

def withBftSequencers(): ConfigTransform = {
updateAllSvAppConfigs_(appConfig =>
appConfig
.focus(_.localSynchronizerNode)
.modify(
_.map(
_.focus(_.sequencer).modify(
_.copy(
isBftSequencer = true
)
def withBftSequencer(config: SvAppBackendConfig): SvAppBackendConfig =
config
.focus(_.localSynchronizerNode)
.modify(
_.map(
_.focus(_.sequencer).modify(
_.copy(
isBftSequencer = true
)
)
)
) compose {
updateAllScanAppConfigs((scan, config) =>
config.copy(
bftSequencers = Seq(
BftSequencerConfig(
0,
config.sequencerAdminClient,
s"http://localhost:${5010 + Integer.parseInt(scan.stripPrefix("sv").take(1)) * 100}",
)
)
)

def withBftSequencer(
name: String,
config: ScanAppBackendConfig,
migrationId: Long = 0,
basePort: Int = 5010,
): ScanAppBackendConfig =
config.copy(
bftSequencers = Seq(
BftSequencerConfig(
migrationId,
config.sequencerAdminClient,
s"http://localhost:${basePort + Integer.parseInt(name.stripPrefix("sv").take(1)) * 100}",
)
)
)

def withBftSequencers(): ConfigTransform = {
updateAllSvAppConfigs_(withBftSequencer(_)) compose {
updateAllScanAppConfigs((scan, config) => withBftSequencer(scan, config))
}
}

Expand Down Expand Up @@ -744,6 +761,8 @@ object ConfigTransforms {
.modify(portTransform(bump, _))
.focus(_.internalApi)
.modify(portTransform(bump, _))
.focus(_.externalPublicApiUrl)
.modify(bumpUrl(bump, _))

private def portTransform(bump: Int, c: SvMediatorConfig): SvMediatorConfig =
c.focus(_.adminApi).modify(portTransform(bump, _))
Expand Down Expand Up @@ -816,16 +835,15 @@ object ConfigTransforms {
})

def useDecentralizedSynchronizerSplitwell(): ConfigTransform =
updateAllSplitwellAppConfigs_(c => {
c.copy(
domains = c.domains.copy(
splitwell = SplitwellDomains(
updateAllSplitwellAppConfigs_(
_.focus(_.domains.splitwell)
.replace(
SplitwellDomains(
SynchronizerConfig(SynchronizerAlias.tryCreate("global")),
Seq.empty,
)
)
)
})
) compose updateAllValidatorAppConfigs_(_.focus(_.domains.extra).replace(Seq.empty))

def modifyAllANStorageConfigs(
storageConfigModifier: (
Expand Down
Loading