Skip to content

Commit 201376f

Browse files
Merge branch 'main' into roger/package-reftable
2 parents 105c321 + 64533d2 commit 201376f

File tree

309 files changed

+7023
-10411
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

309 files changed

+7023
-10411
lines changed

sdk/LATEST

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
911aea04b957b05bc756c68a1c80df30aca22d1e 3.4.0-snapshot.20250905.14180.0.v911aea04 SPLIT_RELEASE
1+
d91c46d8ec02b78dee968b3ed232a119854ff8b4 3.4.0-snapshot.20250908.14185.0.vd91c46d8 SPLIT_RELEASE
22
a77a3d96abde9c36c56d42ae4e2b8fec88f7ee35 3.4.0-adhoc.20250828.14144.0.va77a3d96 SPLIT_RELEASE
33
c5be9bb3108a2687580bea0961c08da8b3998e81 3.3.0-snapshot.20250814.13842.0.vc5be9bb3 SPLIT_RELEASE
44
e23b19ba88f3b01e07dadcf7e9607d524ab32bc9 3.2.0-snapshot.20250206.13406.0.ve23b19ba SPLIT_RELEASE

sdk/canton/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,6 +1049,7 @@ scala_library(
10491049
"@maven//:io_grpc_grpc_services",
10501050
"@maven//:io_grpc_grpc_stub",
10511051
"@maven//:io_opentelemetry_opentelemetry_api",
1052+
"@maven//:io_opentelemetry_opentelemetry_context",
10521053
"@maven//:io_scalaland_chimney_2_13",
10531054
"@maven//:junit_junit",
10541055
"@maven//:org_apache_pekko_pekko_actor_2_13",
@@ -1217,6 +1218,7 @@ scala_library(
12171218
"@maven//:io_grpc_grpc_stub",
12181219
"@maven//:io_opentelemetry_instrumentation_opentelemetry_grpc_1_6",
12191220
"@maven//:io_opentelemetry_opentelemetry_api",
1221+
"@maven//:io_opentelemetry_opentelemetry_context",
12201222
"@maven//:io_scalaland_chimney_2_13",
12211223
"@maven//:io_scalaland_chimney_macro_commons_2_13",
12221224
"@maven//:junit_junit",
@@ -1414,6 +1416,7 @@ scala_library(
14141416
"@maven//:io_grpc_grpc_stub",
14151417
"@maven//:io_opentelemetry_instrumentation_opentelemetry_runtime_telemetry_java8",
14161418
"@maven//:io_opentelemetry_opentelemetry_api",
1419+
"@maven//:io_opentelemetry_opentelemetry_context",
14171420
"@maven//:io_opentelemetry_opentelemetry_exporter_common",
14181421
"@maven//:io_opentelemetry_opentelemetry_exporter_otlp_common",
14191422
"@maven//:io_opentelemetry_opentelemetry_exporter_prometheus",

sdk/canton/community/admin-api/src/main/protobuf/com/digitalasset/canton/admin/participant/v30/participant_inspection_service.proto

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ service ParticipantInspectionService {
2222
rpc LookupOffsetByTime(LookupOffsetByTimeRequest) returns (LookupOffsetByTimeResponse);
2323
// Request metadata about shared contracts used in commitment computation at a specific time
2424
// Subject to the data still being available on the participant
25-
// TODO(#9557) R2
2625
rpc OpenCommitment(OpenCommitmentRequest) returns (stream OpenCommitmentResponse);
27-
// TODO(#9557) R2
2826
rpc InspectCommitmentContracts(InspectCommitmentContractsRequest) returns (stream InspectCommitmentContractsResponse);
2927
// Look up the ACS commitments computed and sent by a participant
3028
rpc LookupSentAcsCommitments(LookupSentAcsCommitmentsRequest) returns (LookupSentAcsCommitmentsResponse);

sdk/canton/community/admin-api/src/main/protobuf/com/digitalasset/canton/admin/participant/v30/participant_repair_service.proto

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@ import "com/digitalasset/canton/admin/participant/v30/synchronizer_connectivity.
99
import "google/protobuf/duration.proto";
1010
import "google/protobuf/timestamp.proto";
1111

12-
// Perform participant repair operations, including exporting and importing ACS, purging
13-
// contracts, and migrating synchronizers. These operations directly act on the internal state of the participant
14-
// and should be used with caution.
12+
/**
13+
* Perform participant repair operations, including exporting and importing ACS, purging
14+
* contracts, and migrating synchronizers. These operations directly act on the internal state of the participant
15+
* and should be used with caution.
16+
*
17+
* Note that ACS refers to Active Contract Set.
18+
*/
1519
service ParticipantRepairService {
1620
// Export the ACS for the given parties from the participant
1721
// DEPRECATED: Use ExportAcs in the party_management_service.proto instead
@@ -21,6 +25,9 @@ service ParticipantRepairService {
2125
// DEPRECATED: Use ImportAcs in this proto file
2226
rpc ImportAcsOld(stream ImportAcsOldRequest) returns (ImportAcsOldResponse); // TODO(#24610) - Remove, replaced with ImportAcs below
2327

28+
// Export the ACS from the participant.
29+
rpc ExportAcs(ExportAcsRequest) returns (stream ExportAcsResponse);
30+
2431
// Import an existing export into the participant
2532
rpc ImportAcs(stream ImportAcsRequest) returns (ImportAcsResponse);
2633

@@ -169,6 +176,53 @@ message ImportAcsOldResponse {
169176
map<string, string> contract_id_mapping = 1;
170177
}
171178

179+
message ExportAcsTargetSynchronizer {
180+
// The identifier of the synchronizer to which contracts should be assigned upon exporting the
181+
// Active Contract Set (ACS).
182+
// Required.
183+
string target_synchronizer_id = 1;
184+
}
185+
186+
message ExportAcsRequest {
187+
// The identifiers of the parties for which the Active Contract Set (ACS) will be exported.
188+
// This field must contain at least one party ID.
189+
// Required
190+
repeated string party_ids = 1;
191+
192+
// The identifier of the synchronizer to filter contracts.
193+
// Optional. If provided, only contracts assigned to a synchronizer with this exact ID will be included
194+
// in the exported ACS. If not set (empty string), all contracts for the specified parties will be included.
195+
string synchronizer_id = 2; // Optional; filters by exact synchronizer ID if set
196+
197+
// The ledger offset at which the ACS snapshot should be taken. This determines the point in the
198+
// ledger history from which the active contracts will be retrieved.
199+
// Required
200+
int64 ledger_offset = 3;
201+
202+
// A mapping to modify the synchronizer assignment of contracts in the exported ACS.
203+
// Note: This mapping is not a proper contract reassignment. That is no actual reassignment happens, and thus
204+
// the reassignment counter is not increased.
205+
// Optional. If not provided (empty map), the contracts in the exported ACS will retain their
206+
// original synchronizer assignments.
207+
map<string, ExportAcsTargetSynchronizer> contract_synchronizer_renames = 4;
208+
209+
// A list of party IDs to exclude from the export.
210+
// Any contract that has one or more of these parties as a stakeholder will be omitted from the ACS snapshot.
211+
// Optional
212+
repeated string excluded_stakeholder_ids = 5;
213+
}
214+
215+
message ExportAcsResponse {
216+
// A chunk of the Active Contract Set (ACS) snapshot. This response is streamed, with each
217+
// message containing a portion of the complete ACS data.
218+
// The raw binary data within each chunk consists of Ledger API active contract messages, specifically wrapped
219+
// in `v30.active_contract.ActiveContract` messages. However, a single chunk does not necessarily contain
220+
// exactly one complete message.
221+
// This field will be populated in each streamed response.
222+
// Required
223+
bytes chunk = 1;
224+
}
225+
172226
enum ContractIdImportMode {
173227
CONTRACT_ID_IMPORT_MODE_UNSPECIFIED = 0;
174228
// The contract ID neither gets validated nor recomputed.
@@ -195,6 +249,10 @@ message ImportAcsRequest {
195249
// How contract ID should be evaluated upon import
196250
// Required
197251
ContractIdImportMode contract_id_suffix_recomputation_mode = 3;
252+
// A list of party IDs to exclude from the import.
253+
// Any contract that has one or more of these parties as a stakeholder will be omitted during the import.
254+
// Optional
255+
repeated string excluded_stakeholder_ids = 4;
198256
}
199257

200258
message ImportAcsResponse {

sdk/canton/community/admin-api/src/main/protobuf/com/digitalasset/canton/admin/participant/v30/party_management_service.proto

Lines changed: 36 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@ syntax = "proto3";
55

66
package com.digitalasset.canton.admin.participant.v30;
77

8+
import "google/protobuf/duration.proto";
89
import "google/protobuf/timestamp.proto";
910
import "scalapb/scalapb.proto";
1011

1112
/**
1213
* The PartyManagementService allows modifying party hosting on participants.
14+
*
15+
* Note that ACS refers to Active Contract Set.
1316
*/
1417
service PartyManagementService {
1518
// Initiate adding a party already hosted on one or more source participants to this
@@ -34,11 +37,8 @@ service PartyManagementService {
3437
// successfully.
3538
rpc GetAddPartyStatus(GetAddPartyStatusRequest) returns (GetAddPartyStatusResponse);
3639

37-
// Export the ACS for the given parties from the participant.
38-
rpc ExportAcs(ExportAcsRequest) returns (stream ExportAcsResponse);
39-
40-
// Export the ACS for the given parties at a timestamp (that is the effective time of a topology transaction).
41-
rpc ExportAcsAtTimestamp(ExportAcsAtTimestampRequest) returns (stream ExportAcsAtTimestampResponse);
40+
// Export the party's ACS to replicate it onto the target participant.
41+
rpc ExportPartyAcs(ExportPartyAcsRequest) returns (stream ExportPartyAcsResponse);
4242

4343
// For a given timestamp, find the highest ledger offset among all events that have record time <= timestamp.
4444
//
@@ -185,72 +185,47 @@ enum ParticipantPermission {
185185
PARTICIPANT_PERMISSION_OBSERVATION = 3;
186186
}
187187

188-
message ExportAcsTargetSynchronizer {
189-
// The identifier of the synchronizer to which contracts should be assigned upon exporting the
190-
// Active Contract Set (ACS).
191-
// Required.
192-
string target_synchronizer_id = 1;
193-
}
194-
195-
message ExportAcsRequest {
196-
// The identifiers of the parties for which the Active Contract Set (ACS) will be exported.
197-
// This field must contain at least one party ID.
198-
// Required
199-
repeated string party_ids = 1;
200-
201-
// The identifier of the synchronizer to filter contracts.
202-
// Optional. If provided, only contracts assigned to a synchronizer with this exact ID will be included
203-
// in the exported ACS. If not set (empty string), all contracts for the specified parties will be included.
204-
string synchronizer_id = 2; // Optional; filters by exact synchronizer ID if set
205-
206-
// The ledger offset at which the ACS snapshot should be taken. This determines the point in the
207-
// ledger history from which the active contracts will be retrieved.
188+
// Exports the ACS for a given party to facilitate its replication from a source to a target participant.
189+
//
190+
// This request uses the party's most recent activation on the target participant to determine the precise
191+
// historical state of the ACS to export from the source participant.
192+
//
193+
// "Activation" on the target participant means the new hosting arrangement has been authorized by both
194+
// the party itself and the target participant via party-to-participant topology transactions.
195+
//
196+
// This request will fail if the party has not yet been activated on the target participant.
197+
message ExportPartyAcsRequest {
198+
// The identifier of the party being replicated. This party must already be active on the target participant
199+
// for the ACS export to succeed.
208200
// Required
209-
int64 ledger_offset = 3;
210-
211-
// A mapping to modify the synchronizer assignment of contracts in the exported ACS.
212-
// Note: This mapping is not a proper contract reassignment. That is no actual reassignment happens, and thus
213-
// the reassignment counter is not increased.
214-
// Optional. If not provided (empty map), the contracts in the exported ACS will retain their
215-
// original synchronizer assignments.
216-
map<string, ExportAcsTargetSynchronizer> contract_synchronizer_renames = 4;
217-
}
201+
string party_id = 1;
218202

219-
message ExportAcsResponse {
220-
// A chunk of the Active Contract Set (ACS) snapshot. This response is streamed, with each
221-
// message containing a portion of the complete ACS data.
222-
// The raw binary data within each chunk consists of Ledger API active contract messages, specifically wrapped
223-
// in `v30.active_contract.ActiveContract` messages. However, a single chunk does not necessarily contain
224-
// exactly one complete message.
225-
// This field will be populated in each streamed response.
203+
// The identifier of the synchronizer managing the contract to be exported. This scopes the ACS export to only
204+
// contracts assigned to this synchronizer.
226205
// Required
227-
bytes chunk = 1;
228-
}
206+
string synchronizer_id = 2;
229207

230-
message ExportAcsAtTimestampRequest {
231-
// The identifiers of the parties for which the Active Contract Set (ACS) will be exported.
232-
// This field must contain at least one party ID.
208+
// The unique identifier of the target participant where the party will be replicated.
233209
// Required
234-
repeated string party_ids = 1;
210+
string target_participant_uid = 3;
235211

236-
// The identifier of the synchronizer. This is used to filter contracts and topology
237-
// transactions on the ledger.
212+
// The exclusive ledger offset used as starting point to find the party's most recent activation on the target
213+
// participant.
238214
// Required
239-
string synchronizer_id = 2;
215+
int64 begin_offset_exclusive = 4;
240216

241-
// The effective time of a specific topology transaction. The system will locate the
242-
// topology transaction on the ledger with this effective time and the synchronizer
243-
// identifier. And then take an ACS snapshot at the corresponding ledger offset.
244-
// Required
245-
google.protobuf.Timestamp topology_transaction_effective_time = 3;
217+
// The maximum duration the service will wait to find the topology transaction that activates the party on
218+
// the target participant.
219+
// If not set, the service use will use a default timeout.
220+
// Optional
221+
google.protobuf.Duration wait_for_activation_timeout = 5;
246222
}
247223

248-
message ExportAcsAtTimestampResponse {
249-
// A chunk of the Active Contract Set (ACS) snapshot. This response is streamed, with each
250-
// message containing a portion of the complete ACS data.
251-
// The raw binary data within each chunk consists of Ledger API active contract messages, specifically wrapped
252-
// in `v30.active_contract.ActiveContract` messages. However, a single chunk does not necessarily contain
253-
// exactly one complete message.
224+
message ExportPartyAcsResponse {
225+
// A chunk of the ACS snapshot. This response is streamed, with each message containing a portion of the
226+
// complete ACS data. The raw binary data within each chunk consists of Ledger API active contract messages,
227+
// specifically wrapped in `v30.active_contract.ActiveContract` messages. However, a single chunk does not
228+
// necessarily contain exactly one complete message.
254229
// This field will be populated in each streamed response.
255230
// Required
256231
bytes chunk = 1;

0 commit comments

Comments
 (0)