From 72bd08fd2397438d9a0bba0e41dc16b7024a0be9 Mon Sep 17 00:00:00 2001 From: Moritz Kiefer Date: Tue, 20 Jan 2026 13:16:28 +0000 Subject: [PATCH] Remove use of legacy acs import endpoint fixes #3608 [ci] Signed-off-by: Moritz Kiefer --- .../ParticipantAdminConnection.scala | 26 ------------------ .../splice/migration/DomainDataRestorer.scala | 19 +++---------- .../sv/migration/DomainDataSnapshot.scala | 27 ++++++++++--------- .../DomainDataSnapshotGenerator.scala | 3 --- .../DomainMigrationInitializer.scala | 2 -- .../splice/validator/ValidatorApp.scala | 3 --- .../migration/DomainMigrationDump.scala | 10 ++++--- .../DomainMigrationDumpGenerator.scala | 3 --- 8 files changed, 25 insertions(+), 68 deletions(-) diff --git a/apps/common/src/main/scala/org/lfdecentralizedtrust/splice/environment/ParticipantAdminConnection.scala b/apps/common/src/main/scala/org/lfdecentralizedtrust/splice/environment/ParticipantAdminConnection.scala index 8ba9aa8991..7a0e7addd8 100644 --- a/apps/common/src/main/scala/org/lfdecentralizedtrust/splice/environment/ParticipantAdminConnection.scala +++ b/apps/common/src/main/scala/org/lfdecentralizedtrust/splice/environment/ParticipantAdminConnection.scala @@ -380,32 +380,6 @@ class ParticipantAdminConnection( ByteString.copyFrom(chunks.asJava) ) - def uploadAcsSnapshotLegacy(acsBytes: Seq[ByteString])(implicit - traceContext: TraceContext - ): Future[Unit] = { - val chunkedAcsBytes: Seq[ByteString] = acsBytes match { - case Seq(bytes) => - // Caller has not chunked the bytes, this is possible for SVs that try to onboard or for validator recovery. - // The chuning logic here matches what GrpcStreamingUtils.streamToServer does - bytes.toByteArray.grouped(1024 * 1024 * 2).map(ByteString.copyFrom(_)).toSeq - case _ => acsBytes - } - retryProvider.retryForClientCalls( - "import_acs", - "Imports the acs in the participantl", - runCmd( - ParticipantAdminCommands.ParticipantRepairManagement - .ImportAcsOld( - chunkedAcsBytes, - IMPORT_ACS_WORKFLOW_ID_PREFIX, - allowContractIdSuffixRecomputation = false, - ), - timeoutOverride = Some(GrpcAdminCommand.DefaultUnboundedTimeout), - ).map(_ => ()), - logger, - ) - } - def uploadAcsSnapshot(acsBytes: Seq[ByteString])(implicit traceContext: TraceContext ): Future[Unit] = { diff --git a/apps/common/src/main/scala/org/lfdecentralizedtrust/splice/migration/DomainDataRestorer.scala b/apps/common/src/main/scala/org/lfdecentralizedtrust/splice/migration/DomainDataRestorer.scala index a99e84cf11..65c351518c 100644 --- a/apps/common/src/main/scala/org/lfdecentralizedtrust/splice/migration/DomainDataRestorer.scala +++ b/apps/common/src/main/scala/org/lfdecentralizedtrust/splice/migration/DomainDataRestorer.scala @@ -35,7 +35,6 @@ class DomainDataRestorer( sequencerConnections: SequencerConnections, dars: Seq[Dar], acsSnapshot: Seq[ByteString], - legacyAcsImport: Boolean, )(implicit tc: TraceContext ): Future[Unit] = { @@ -66,7 +65,9 @@ class DomainDataRestorer( RetryFor.ClientCalls, ) _ = logger.info("Importing the ACS") - _ <- importAcs(acsSnapshot, legacyAcsImport) + _ <- participantAdminConnection.uploadAcsSnapshot( + acsSnapshot + ) _ = logger.info("Imported the ACS") _ <- participantAdminConnection.modifySynchronizerConnectionConfigAndReconnect( synchronizerAlias, @@ -97,20 +98,6 @@ class DomainDataRestorer( } } - private def importAcs(acs: Seq[ByteString], legacyAcsImport: Boolean)(implicit - tc: TraceContext - ) = { - if (legacyAcsImport) { - participantAdminConnection.uploadAcsSnapshotLegacy( - acs - ) - } else { - participantAdminConnection.uploadAcsSnapshot( - acs - ) - } - } - private def importDars(dars: Seq[Dar])(implicit tc: TraceContext) = { val packages = dars .map { dar => diff --git a/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/migration/DomainDataSnapshot.scala b/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/migration/DomainDataSnapshot.scala index 1c5e054e66..1a976598ae 100644 --- a/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/migration/DomainDataSnapshot.scala +++ b/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/migration/DomainDataSnapshot.scala @@ -24,7 +24,6 @@ final case class DomainDataSnapshot( dars: Seq[Dar], // true if we exported for a proper migration, false for DR. synchronizerWasPaused: Boolean, - acsFormat: http.DomainDataSnapshot.AcsFormat, ) extends PrettyPrinting { // if output directory is specified we use the new format, otherwise the old one. // Only the DR endpoint should use the old one. @@ -43,7 +42,7 @@ final case class DomainDataSnapshot( }.toVector, synchronizerWasPaused = Some(synchronizerWasPaused), separatePayloadFiles = Some(outputDirectory.isDefined), - acsFormat = Some(acsFormat), + acsFormat = Some(http.DomainDataSnapshot.AcsFormat.LedgerApi), ) } @@ -85,16 +84,20 @@ object DomainDataSnapshot { Dar(dar.hash, ByteString.copyFrom(decoded)) } val acsTimestamp = Instant.parse(src.acsTimestamp) - Right( - DomainDataSnapshot( - src.genesisState.map(DomainMigrationEncoding.decode(src.separatePayloadFiles, _)), - DomainMigrationEncoding.decode(src.separatePayloadFiles, src.acsSnapshot), - acsTimestamp, - dars, - src.synchronizerWasPaused.getOrElse(false), - acsFormat = src.acsFormat.getOrElse(http.DomainDataSnapshot.AcsFormat.AdminApi), - ) - ) + src.acsFormat.getOrElse(http.DomainDataSnapshot.AcsFormat.AdminApi) match { + case http.DomainDataSnapshot.AcsFormat.members.AdminApi => + Left("Admin API ACS Format is unsupported since splice 0.5") + case http.DomainDataSnapshot.AcsFormat.members.LedgerApi => + Right( + DomainDataSnapshot( + src.genesisState.map(DomainMigrationEncoding.decode(src.separatePayloadFiles, _)), + DomainMigrationEncoding.decode(src.separatePayloadFiles, src.acsSnapshot), + acsTimestamp, + dars, + src.synchronizerWasPaused.getOrElse(false), + ) + ) + } } } diff --git a/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/migration/DomainDataSnapshotGenerator.scala b/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/migration/DomainDataSnapshotGenerator.scala index 104a792b6f..429287da2d 100644 --- a/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/migration/DomainDataSnapshotGenerator.scala +++ b/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/migration/DomainDataSnapshotGenerator.scala @@ -10,7 +10,6 @@ import org.lfdecentralizedtrust.splice.environment.{ RetryProvider, SequencerAdminConnection, } -import org.lfdecentralizedtrust.splice.http.v0.definitions as http import org.lfdecentralizedtrust.splice.migration.{ AcsExporter, DarExporter, @@ -74,7 +73,6 @@ class DomainDataSnapshotGenerator( acsTimestamp = timestamp, dars, synchronizerWasPaused = false, - acsFormat = http.DomainDataSnapshot.AcsFormat.LedgerApi, ) private def exportGenesisState( @@ -165,7 +163,6 @@ class DomainDataSnapshotGenerator( acsTimestamp, dars, synchronizerWasPaused = true, - acsFormat = http.DomainDataSnapshot.AcsFormat.LedgerApi, ) logger.info(show"Finished generating $result") result diff --git a/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/onboarding/domainmigration/DomainMigrationInitializer.scala b/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/onboarding/domainmigration/DomainMigrationInitializer.scala index 81e1b04f56..0be92e3c6e 100644 --- a/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/onboarding/domainmigration/DomainMigrationInitializer.scala +++ b/apps/sv/src/main/scala/org/lfdecentralizedtrust/splice/sv/onboarding/domainmigration/DomainMigrationInitializer.scala @@ -292,8 +292,6 @@ class DomainMigrationInitializer( SequencerConnections.single(localSynchronizerNode.sequencerConnection), domainMigrationDump.domainDataSnapshot.dars, domainMigrationDump.domainDataSnapshot.acsSnapshot, - legacyAcsImport = - domainMigrationDump.domainDataSnapshot.acsFormat == http.DomainDataSnapshot.AcsFormat.AdminApi, ) _ = logger.info("resumed domain") } yield {} diff --git a/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/ValidatorApp.scala b/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/ValidatorApp.scala index 6c2881cbd1..3748a8ce9f 100644 --- a/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/ValidatorApp.scala +++ b/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/ValidatorApp.scala @@ -39,7 +39,6 @@ import org.lfdecentralizedtrust.splice.automation.{ import org.lfdecentralizedtrust.splice.config.{NetworkAppClientConfig, SharedSpliceAppParameters} import org.lfdecentralizedtrust.splice.environment.* import org.lfdecentralizedtrust.splice.environment.ledger.api.DedupDuration -import org.lfdecentralizedtrust.splice.http.v0.definitions as http import org.lfdecentralizedtrust.splice.http.v0.status.wallet.WalletResource as StatusWalletResource import org.lfdecentralizedtrust.splice.http.v0.external.ans.AnsResource import org.lfdecentralizedtrust.splice.http.v0.external.wallet.WalletResource as ExternalWalletResource @@ -271,8 +270,6 @@ class ValidatorApp( sequencerConnections, migrationDump.dars, migrationDump.acsSnapshot, - legacyAcsImport = - migrationDump.acsFormat == http.DomainMigrationDump.AcsFormat.AdminApi, ) } _ <- appInitStep("Restoring participant users data") { diff --git a/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/migration/DomainMigrationDump.scala b/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/migration/DomainMigrationDump.scala index e8ce5bc5e9..aaad170148 100644 --- a/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/migration/DomainMigrationDump.scala +++ b/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/migration/DomainMigrationDump.scala @@ -30,7 +30,6 @@ final case class DomainMigrationDump( createdAt: Instant, // true if we exported for a proper migration, false for DR. synchronizerWasPaused: Boolean, - acsFormat: http.DomainMigrationDump.AcsFormat, ) extends PrettyPrinting { override def pretty: Pretty[DomainMigrationDump.this.type] = Pretty.prettyNode( @@ -63,7 +62,7 @@ final case class DomainMigrationDump( createdAt = createdAt.toString, synchronizerWasPaused = Some(synchronizerWasPaused), separatePayloadFiles = Some(outputDirectory.isDefined), - acsFormat = Some(acsFormat), + acsFormat = Some(http.DomainMigrationDump.AcsFormat.LedgerApi), ) } @@ -94,6 +93,12 @@ object DomainMigrationDump { Dar(dar.hash, ByteString.copyFrom(decoded)) } createdAt = Instant.parse(response.createdAt) + _ <- response.acsFormat.getOrElse(http.DomainMigrationDump.AcsFormat.AdminApi) match { + case http.DomainMigrationDump.AcsFormat.members.AdminApi => + Left("Admin API ACS Format is unsupported since splice 0.5") + case http.DomainMigrationDump.AcsFormat.members.LedgerApi => + Right(()) + } } yield DomainMigrationDump( domainId = domainId, migrationId = migrationId, @@ -104,6 +109,5 @@ object DomainMigrationDump { dars = dars, createdAt = createdAt, synchronizerWasPaused = response.synchronizerWasPaused.getOrElse(false), - acsFormat = response.acsFormat.getOrElse(http.DomainMigrationDump.AcsFormat.AdminApi), ) } diff --git a/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/migration/DomainMigrationDumpGenerator.scala b/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/migration/DomainMigrationDumpGenerator.scala index c8de6e068f..ff6521e411 100644 --- a/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/migration/DomainMigrationDumpGenerator.scala +++ b/apps/validator/src/main/scala/org/lfdecentralizedtrust/splice/validator/migration/DomainMigrationDumpGenerator.scala @@ -14,7 +14,6 @@ import org.lfdecentralizedtrust.splice.environment.{ RetryProvider, SpliceLedgerConnection, } -import org.lfdecentralizedtrust.splice.http.v0.definitions as http import org.lfdecentralizedtrust.splice.identities.NodeIdentitiesStore import org.lfdecentralizedtrust.splice.migration.AcsExporter.AcsExportForParties.AllParticipantParties import org.lfdecentralizedtrust.splice.migration.{ @@ -76,7 +75,6 @@ class DomainMigrationDumpGenerator( dars = dars, createdAt = createdAt, synchronizerWasPaused = true, - acsFormat = http.DomainMigrationDump.AcsFormat.LedgerApi, ) logger.info( show"Finished generating $result" @@ -116,7 +114,6 @@ class DomainMigrationDumpGenerator( dars = dars, createdAt = Instant.now(), synchronizerWasPaused = false, - acsFormat = http.DomainMigrationDump.AcsFormat.LedgerApi, ) } }