Rename Completion.deduplication_time to deduplication_duration [KVL-1057] (#10900)

* Rename Completion.deduplication_time to deduplication_duration

CHANGELOG_BEGIN
CHANGELOG_END

* Breaking protobuf change: regenerate `buf` image

Breaking-Proto: true

* Re-compute sha256s of migrations

* Fix expected error message

Co-authored-by: Fabio Tudone <fabio.tudone@digitalasset.com>
This commit is contained in:
Gerolf Seitz 2021-09-16 12:41:45 +02:00 committed by GitHub
parent 8e22bb6b2d
commit 8a391189a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 108 additions and 103 deletions

Binary file not shown.

View File

@ -69,6 +69,6 @@ message Completion {
// It is measured in record time of completions.
//
// Must be non-negative.
google.protobuf.Duration deduplication_time = 9;
google.protobuf.Duration deduplication_duration = 9;
}
}

View File

@ -146,7 +146,7 @@ trait FieldValidations {
val result = Duration.ofSeconds(duration.seconds, duration.nanos.toLong)
validateDuration(
result,
s"The given deduplication time of $result exceeds the maximum deduplication time of $maxDeduplicationDuration",
s"The given deduplication duration of $result exceeds the maximum deduplication time of $maxDeduplicationDuration",
).map(DeduplicationPeriod.DeduplicationDuration)
}

View File

@ -39,7 +39,7 @@ class SubmitRequestValidatorTest
val label = "label"
val constructor = "constructor"
val submitter = "party"
val deduplicationTime = new Duration().withSeconds(10)
val deduplicationDuration = new Duration().withSeconds(10)
val command = Command.of(
Command.Command.Create(
CreateCommand.of(
@ -62,7 +62,7 @@ class SubmitRequestValidatorTest
commandId = commandId.unwrap,
party = submitter,
commands = Seq(command),
deduplicationPeriod = DeduplicationPeriodProto.DeduplicationTime(deduplicationTime),
deduplicationPeriod = DeduplicationPeriodProto.DeduplicationTime(deduplicationDuration),
minLedgerTimeAbs = None,
minLedgerTimeRel = None,
)
@ -74,8 +74,8 @@ class SubmitRequestValidatorTest
val timeDelta = java.time.Duration.ofSeconds(1)
val maxDeduplicationDuration = java.time.Duration.ofDays(1)
val deduplicationDuration = java.time.Duration.ofSeconds(
api.deduplicationTime.seconds,
api.deduplicationTime.nanos.toLong,
api.deduplicationDuration.seconds,
api.deduplicationDuration.nanos.toLong,
)
val emptyCommands = ApiCommands(
@ -335,7 +335,7 @@ class SubmitRequestValidatorTest
}
}
"not allow negative deduplication time" in {
"not allow negative deduplication duration" in {
forAll(
Table(
"deduplication period",
@ -357,7 +357,7 @@ class SubmitRequestValidatorTest
}
}
"not allow deduplication time exceeding maximum deduplication time" in {
"not allow deduplication time exceeding maximum deduplication duration" in {
val durationSecondsExceedingMax =
internal.maxDeduplicationDuration.plusSeconds(1).getSeconds
forAll(
@ -379,7 +379,7 @@ class SubmitRequestValidatorTest
Some(internal.maxDeduplicationDuration),
),
INVALID_ARGUMENT,
s"Invalid field deduplication_period: The given deduplication time of ${java.time.Duration
s"Invalid field deduplication_period: The given deduplication duration of ${java.time.Duration
.ofSeconds(durationSecondsExceedingMax)} exceeds the maximum deduplication time of ${internal.maxDeduplicationDuration}",
)
}

View File

@ -50,7 +50,7 @@ private[testtool] abstract class CommandDeduplicationBase(
testGivenAllParticipants(
s"${testNamingPrefix}SimpleDeduplicationBasic",
"Deduplicate commands within the deduplication time window",
"Deduplicate commands within the deduplication duration window",
allocate(SingleParty),
runConcurrently = false,
)(implicit ec =>

View File

@ -79,7 +79,7 @@ abstract class KVCommandDeduplicationBase(
// The [[Completion.deduplicationPeriod]] is set only for append-only ledgers
if (deduplicationFeatures.appendOnlySchema) {
val expectedCompletionDeduplicationPeriod =
Completion.DeduplicationPeriod.DeduplicationTime(
Completion.DeduplicationPeriod.DeduplicationDuration(
maxDeduplicationDuration.asProtobuf
)
assert(

View File

@ -1 +1 @@
b91197c8bc9b1942ad70fcae54aa8b9ca1b0bf380e46b08c038a9bf3764fbc35
86ded6839752d76bb3e3e6cde7f4ec103dea6cee6382b6695de95e84dd74d2da

View File

@ -120,8 +120,8 @@ CREATE TABLE participant_command_completions (
-- 2. a duration (split into two columns, seconds and nanos, mapping protobuf's 1:1)
-- 3. an initial timestamp
deduplication_offset VARCHAR,
deduplication_time_seconds BIGINT,
deduplication_time_nanos INT,
deduplication_duration_seconds BIGINT,
deduplication_duration_nanos INT,
deduplication_start BIGINT,
-- The three columns below are `NULL` if the completion is for an accepted transaction.
-- The `rejection_status_details` column contains a Protocol-Buffers-serialized message of type

View File

@ -1 +1 @@
1d1d77ce01814bbfabe592ef224193b05743fc6d1459b487fcc7fc527110b2c9
fe940b22140c0a1da0a3e54c0087c8872828e4cb08bdcc30bbaa1db84f98b62b

View File

@ -123,10 +123,10 @@ CREATE TABLE participant_command_completions
-- 1. an initial offset
-- 2. a duration (split into two columns, seconds and nanos, mapping protobuf's 1:1)
-- 3. an initial timestamp
deduplication_offset VARCHAR2(4000),
deduplication_time_seconds NUMBER,
deduplication_time_nanos NUMBER,
deduplication_start NUMBER,
deduplication_offset VARCHAR2(4000),
deduplication_duration_seconds NUMBER,
deduplication_duration_nanos NUMBER,
deduplication_start NUMBER,
submitters CLOB NOT NULL CONSTRAINT ensure_json_submitters CHECK (submitters IS JSON),
command_id NVARCHAR2(1000) NOT NULL,

View File

@ -1 +1 @@
281330bf9e361ecf12a2160c93ba3ce006a5a40564b6e5cf987b3ead71009ddb
0b505bc0df2ffb4815a252f470ff820328c32fec4fdab46921c07674af852740

View File

@ -15,6 +15,6 @@ ALTER TABLE participant_command_completions
-- 2. an initial timestamp
-- 3. a duration (split into two columns, seconds and nanos, mapping protobuf's 1:1)
ADD COLUMN deduplication_offset text,
ADD COLUMN deduplication_time_seconds bigint,
ADD COLUMN deduplication_time_nanos integer,
ADD COLUMN deduplication_duration_seconds bigint,
ADD COLUMN deduplication_duration_nanos integer,
ADD COLUMN deduplication_start timestamp;

View File

@ -30,8 +30,8 @@ private[platform] object CompletionFromTransaction {
applicationId: String,
maybeSubmissionId: Option[String] = None,
maybeDeduplicationOffset: Option[String] = None,
maybeDeduplicationTimeSeconds: Option[Long] = None,
maybeDeduplicationTimeNanos: Option[Int] = None,
maybeDeduplicationDurationSeconds: Option[Long] = None,
maybeDeduplicationDurationNanos: Option[Int] = None,
): CompletionStreamResponse =
CompletionStreamResponse.of(
checkpoint = Some(toApiCheckpoint(recordTime, offset)),
@ -43,8 +43,8 @@ private[platform] object CompletionFromTransaction {
maybeStatus = Some(OkStatus),
maybeSubmissionId = maybeSubmissionId,
maybeDeduplicationOffset = maybeDeduplicationOffset,
maybeDeduplicationTimeSeconds = maybeDeduplicationTimeSeconds,
maybeDeduplicationTimeNanos = maybeDeduplicationTimeNanos,
maybeDeduplicationDurationSeconds = maybeDeduplicationDurationSeconds,
maybeDeduplicationDurationNanos = maybeDeduplicationDurationNanos,
)
),
)
@ -57,8 +57,8 @@ private[platform] object CompletionFromTransaction {
applicationId: String,
maybeSubmissionId: Option[String] = None,
maybeDeduplicationOffset: Option[String] = None,
maybeDeduplicationTimeSeconds: Option[Long] = None,
maybeDeduplicationTimeNanos: Option[Int] = None,
maybeDeduplicationDurationSeconds: Option[Long] = None,
maybeDeduplicationDurationNanos: Option[Int] = None,
): CompletionStreamResponse =
CompletionStreamResponse.of(
checkpoint = Some(toApiCheckpoint(recordTime, offset)),
@ -70,8 +70,8 @@ private[platform] object CompletionFromTransaction {
maybeStatus = Some(status),
maybeSubmissionId = maybeSubmissionId,
maybeDeduplicationOffset = maybeDeduplicationOffset,
maybeDeduplicationTimeSeconds = maybeDeduplicationTimeSeconds,
maybeDeduplicationTimeNanos = maybeDeduplicationTimeNanos,
maybeDeduplicationDurationSeconds = maybeDeduplicationDurationSeconds,
maybeDeduplicationDurationNanos = maybeDeduplicationDurationNanos,
)
),
)
@ -89,8 +89,8 @@ private[platform] object CompletionFromTransaction {
maybeStatus: Option[StatusProto],
maybeSubmissionId: Option[String],
maybeDeduplicationOffset: Option[String],
maybeDeduplicationTimeSeconds: Option[Long],
maybeDeduplicationTimeNanos: Option[Int],
maybeDeduplicationDurationSeconds: Option[Long],
maybeDeduplicationDurationNanos: Option[Int],
): Completion = {
val completionWithMandatoryFields = Completion(
commandId = commandId,
@ -100,8 +100,8 @@ private[platform] object CompletionFromTransaction {
)
val maybeDeduplicationPeriod = toApiDeduplicationPeriod(
maybeDeduplicationOffset = maybeDeduplicationOffset,
maybeDeduplicationTimeSeconds = maybeDeduplicationTimeSeconds,
maybeDeduplicationTimeNanos = maybeDeduplicationTimeNanos,
maybeDeduplicationDurationSeconds = maybeDeduplicationDurationSeconds,
maybeDeduplicationDurationNanos = maybeDeduplicationDurationNanos,
)
(maybeSubmissionId, maybeDeduplicationPeriod) match {
case (Some(submissionId), Some(deduplicationPeriod)) =>
@ -124,27 +124,30 @@ private[platform] object CompletionFromTransaction {
private def toApiDeduplicationPeriod(
maybeDeduplicationOffset: Option[String],
maybeDeduplicationTimeSeconds: Option[Long],
maybeDeduplicationTimeNanos: Option[Int],
maybeDeduplicationDurationSeconds: Option[Long],
maybeDeduplicationDurationNanos: Option[Int],
): Option[Completion.DeduplicationPeriod] =
// The only invariant that should hold, considering legacy data, is that either
// the deduplication time seconds and nanos are both populated, or neither is.
(maybeDeduplicationOffset, (maybeDeduplicationTimeSeconds, maybeDeduplicationTimeNanos)) match {
// the deduplication duration seconds and nanos are both populated, or neither is.
(
maybeDeduplicationOffset,
(maybeDeduplicationDurationSeconds, maybeDeduplicationDurationNanos),
) match {
case (None, (None, None)) => None
case (Some(offset), _) =>
Some(Completion.DeduplicationPeriod.DeduplicationOffset(offset))
case (_, (Some(deduplicationTimeSeconds), Some(deduplicationTimeNanos))) =>
case (_, (Some(deduplicationDurationSeconds), Some(deduplicationDurationNanos))) =>
Some(
Completion.DeduplicationPeriod.DeduplicationTime(
Completion.DeduplicationPeriod.DeduplicationDuration(
new Duration(
seconds = deduplicationTimeSeconds,
nanos = deduplicationTimeNanos,
seconds = deduplicationDurationSeconds,
nanos = deduplicationDurationNanos,
)
)
)
case _ =>
throw new IllegalArgumentException(
"One of deduplication time seconds and nanos has been provided " +
"One of deduplication duration seconds and nanos has been provided " +
"but they must be either both provided or both absent"
)
}

View File

@ -128,8 +128,8 @@ object DbDto {
rejection_status_details: Option[Array[Byte]],
submission_id: Option[String],
deduplication_offset: Option[String],
deduplication_time_seconds: Option[Long],
deduplication_time_nanos: Option[Int],
deduplication_duration_seconds: Option[Long],
deduplication_duration_nanos: Option[Int],
deduplication_start: Option[Long],
) extends DbDto

View File

@ -268,7 +268,7 @@ object UpdateToDbDto {
transactionId: Option[Ref.TransactionId],
completionInfo: CompletionInfo,
): DbDto.CommandCompletion = {
val (deduplicationOffset, deduplicationTimeSeconds, deduplicationTimeNanos) =
val (deduplicationOffset, deduplicationDurationSeconds, deduplicationDurationNanos) =
completionInfo.optDeduplicationPeriod
.map {
case DeduplicationOffset(offset) =>
@ -290,8 +290,8 @@ object UpdateToDbDto {
rejection_status_details = None,
submission_id = completionInfo.submissionId,
deduplication_offset = deduplicationOffset,
deduplication_time_seconds = deduplicationTimeSeconds,
deduplication_time_nanos = deduplicationTimeNanos,
deduplication_duration_seconds = deduplicationDurationSeconds,
deduplication_duration_nanos = deduplicationDurationNanos,
deduplication_start = None,
)
}

View File

@ -45,8 +45,8 @@ trait CompletionStorageBackendTemplate extends CompletionStorageBackend {
application_id,
submission_id,
deduplication_offset,
deduplication_time_seconds,
deduplication_time_nanos,
deduplication_duration_seconds,
deduplication_duration_nanos,
deduplication_start
FROM
participant_command_completions
@ -73,9 +73,9 @@ trait CompletionStorageBackendTemplate extends CompletionStorageBackend {
private val deduplicationOffsetColumn: RowParser[Option[String]] =
str("deduplication_offset").?
private val deduplicationTimeSecondsColumn: RowParser[Option[Long]] =
long("deduplication_time_seconds").?
long("deduplication_duration_seconds").?
private val deduplicationTimeNanosColumn: RowParser[Option[Int]] =
int("deduplication_time_nanos").?
int("deduplication_duration_nanos").?
private val deduplicationStartColumn: RowParser[Option[Instant]] =
instantFromMicros("deduplication_start").?
@ -94,8 +94,8 @@ trait CompletionStorageBackendTemplate extends CompletionStorageBackend {
applicationId = applicationId,
maybeSubmissionId = submissionId,
maybeDeduplicationOffset = deduplicationOffset,
maybeDeduplicationTimeSeconds = deduplicationTimeSeconds,
maybeDeduplicationTimeNanos = deduplicationTimeNanos,
maybeDeduplicationDurationSeconds = deduplicationTimeSeconds,
maybeDeduplicationDurationNanos = deduplicationTimeNanos,
)
}
@ -125,8 +125,8 @@ trait CompletionStorageBackendTemplate extends CompletionStorageBackend {
applicationId = applicationId,
maybeSubmissionId = submissionId,
maybeDeduplicationOffset = deduplicationOffset,
maybeDeduplicationTimeSeconds = deduplicationTimeSeconds,
maybeDeduplicationTimeNanos = deduplicationTimeNanos,
maybeDeduplicationDurationSeconds = deduplicationTimeSeconds,
maybeDeduplicationDurationNanos = deduplicationTimeNanos,
)
}

View File

@ -215,8 +215,10 @@ private[backend] object AppendOnlySchema {
"rejection_status_details" -> fieldStrategy.byteaOptional(_.rejection_status_details),
"submission_id" -> fieldStrategy.stringOptional(_.submission_id),
"deduplication_offset" -> fieldStrategy.stringOptional(_.deduplication_offset),
"deduplication_time_seconds" -> fieldStrategy.bigintOptional(_.deduplication_time_seconds),
"deduplication_time_nanos" -> fieldStrategy.intOptional(_.deduplication_time_nanos),
"deduplication_duration_seconds" -> fieldStrategy.bigintOptional(
_.deduplication_duration_seconds
),
"deduplication_duration_nanos" -> fieldStrategy.intOptional(_.deduplication_duration_nanos),
"deduplication_start" -> fieldStrategy.bigintOptional(_.deduplication_start),
)

View File

@ -217,8 +217,8 @@ private[backend] object StorageBackendTestValues {
applicationId: String = someApplicationId,
submissionId: Option[String] = Some(UUID.randomUUID().toString),
deduplicationOffset: Option[String] = None,
deduplicationTimeSeconds: Option[Long] = None,
deduplicationTimeNanos: Option[Int] = None,
deduplicationDurationSeconds: Option[Long] = None,
deduplicationDurationNanos: Option[Int] = None,
deduplicationStart: Option[Timestamp] = None,
): DbDto.CommandCompletion =
DbDto.CommandCompletion(
@ -233,8 +233,8 @@ private[backend] object StorageBackendTestValues {
rejection_status_details = None,
submission_id = submissionId,
deduplication_offset = deduplicationOffset,
deduplication_time_seconds = deduplicationTimeSeconds,
deduplication_time_nanos = deduplicationTimeNanos,
deduplication_duration_seconds = deduplicationDurationSeconds,
deduplication_duration_nanos = deduplicationDurationNanos,
deduplication_start = deduplicationStart.map(_.micros),
)

View File

@ -149,14 +149,14 @@ private[backend] trait StorageBackendTestsCompletions
dtoCompletion(
offset(2),
submitter = party,
deduplicationTimeSeconds = Some(seconds),
deduplicationTimeNanos = Some(nanos),
deduplicationDurationSeconds = Some(seconds),
deduplicationDurationNanos = Some(nanos),
),
dtoCompletion(
offset(3),
submitter = party,
deduplicationTimeSeconds = None,
deduplicationTimeNanos = None,
deduplicationDurationSeconds = None,
deduplicationDurationNanos = None,
),
)
@ -172,11 +172,11 @@ private[backend] trait StorageBackendTestsCompletions
val List(completionWithDeduplicationOffset, completionWithoutDeduplicationOffset) =
completions
completionWithDeduplicationOffset.completions should have length 1
completionWithDeduplicationOffset.completions.head.deduplicationPeriod.deduplicationTime should be(
completionWithDeduplicationOffset.completions.head.deduplicationPeriod.deduplicationDuration should be(
Some(expectedDuration)
)
completionWithoutDeduplicationOffset.completions should have length 1
completionWithoutDeduplicationOffset.completions.head.deduplicationPeriod.deduplicationTime should not be defined
completionWithoutDeduplicationOffset.completions.head.deduplicationPeriod.deduplicationDuration should not be defined
}
}
@ -186,7 +186,7 @@ private[backend] trait StorageBackendTestsCompletions
val nanos = 10
val expectedErrorMessage =
"One of deduplication time seconds and nanos has been provided " +
"One of deduplication duration seconds and nanos has been provided " +
"but they must be either both provided or both absent"
val dtos1 = Vector(
@ -194,8 +194,8 @@ private[backend] trait StorageBackendTestsCompletions
dtoCompletion(
offset(2),
submitter = party,
deduplicationTimeSeconds = Some(seconds),
deduplicationTimeNanos = None,
deduplicationDurationSeconds = Some(seconds),
deduplicationDurationNanos = None,
),
)
@ -215,8 +215,8 @@ private[backend] trait StorageBackendTestsCompletions
dtoCompletion(
offset(3),
submitter = party,
deduplicationTimeSeconds = None,
deduplicationTimeNanos = Some(nanos),
deduplicationDurationSeconds = None,
deduplicationDurationNanos = Some(nanos),
)
)

View File

@ -265,8 +265,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = Some(StatusDetails.of(status.details).toByteArray),
submission_id = Some(someSubmissionId),
deduplication_offset = None,
deduplication_time_seconds = None,
deduplication_time_nanos = None,
deduplication_duration_seconds = None,
deduplication_duration_nanos = None,
deduplication_start = None,
),
DbDto.CommandDeduplication(
@ -342,8 +342,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = Some(someSubmissionId),
deduplication_offset = None,
deduplication_time_seconds = None,
deduplication_time_nanos = None,
deduplication_duration_seconds = None,
deduplication_duration_nanos = None,
deduplication_start = None,
),
)
@ -415,8 +415,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = completionInfo.submissionId,
deduplication_offset = None,
deduplication_time_nanos = None,
deduplication_time_seconds = None,
deduplication_duration_nanos = None,
deduplication_duration_seconds = None,
deduplication_start = None,
),
)
@ -500,8 +500,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = completionInfo.submissionId,
deduplication_offset = None,
deduplication_time_nanos = None,
deduplication_time_seconds = None,
deduplication_duration_nanos = None,
deduplication_duration_seconds = None,
deduplication_start = None,
),
)
@ -585,8 +585,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = completionInfo.submissionId,
deduplication_offset = None,
deduplication_time_nanos = None,
deduplication_time_seconds = None,
deduplication_duration_nanos = None,
deduplication_duration_seconds = None,
deduplication_start = None,
),
)
@ -753,8 +753,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = completionInfo.submissionId,
deduplication_offset = None,
deduplication_time_nanos = None,
deduplication_time_seconds = None,
deduplication_duration_nanos = None,
deduplication_duration_seconds = None,
deduplication_start = None,
),
)
@ -855,8 +855,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = completionInfo.submissionId,
deduplication_offset = None,
deduplication_time_nanos = None,
deduplication_time_seconds = None,
deduplication_duration_nanos = None,
deduplication_duration_seconds = None,
deduplication_start = None,
),
)
@ -981,8 +981,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = completionInfo.submissionId,
deduplication_offset = None,
deduplication_time_nanos = None,
deduplication_time_seconds = None,
deduplication_duration_nanos = None,
deduplication_duration_seconds = None,
deduplication_start = None,
),
)
@ -1084,8 +1084,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = completionInfo.submissionId,
deduplication_offset = None,
deduplication_time_nanos = None,
deduplication_time_seconds = None,
deduplication_duration_nanos = None,
deduplication_duration_seconds = None,
deduplication_start = None,
),
)
@ -1164,8 +1164,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = completionInfo.submissionId,
deduplication_offset = None,
deduplication_time_nanos = None,
deduplication_time_seconds = None,
deduplication_duration_nanos = None,
deduplication_duration_seconds = None,
deduplication_start = None,
),
)
@ -1231,8 +1231,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
(
"Deduplication period",
"Expected deduplication offset",
"Expected deduplication time seconds",
"Expected deduplication time nanos",
"Expected deduplication duration seconds",
"Expected deduplication duration nanos",
),
(None, None, None, None),
(
@ -1255,8 +1255,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
case (
deduplicationPeriod,
expectedDeduplicationOffset,
expectedDeduplicationTimeSeconds,
expectedDeduplicationTimeNanos,
expectedDeduplicationDurationSeconds,
expectedDeduplicationDurationNanos,
) =>
val completionInfo = someCompletionInfo.copy(optDeduplicationPeriod = deduplicationPeriod)
val update = state.Update.CommandRejected(
@ -1281,8 +1281,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = Some(StatusDetails.of(status.details).toByteArray),
submission_id = Some(someSubmissionId),
deduplication_offset = expectedDeduplicationOffset,
deduplication_time_seconds = expectedDeduplicationTimeSeconds,
deduplication_time_nanos = expectedDeduplicationTimeNanos,
deduplication_duration_seconds = expectedDeduplicationDurationSeconds,
deduplication_duration_nanos = expectedDeduplicationDurationNanos,
deduplication_start = None,
),
DbDto.CommandDeduplication(
@ -1313,8 +1313,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
case (
deduplicationPeriod,
expectedDeduplicationOffset,
expectedDeduplicationTimeSeconds,
expectedDeduplicationTimeNanos,
expectedDeduplicationDurationSeconds,
expectedDeduplicationDurationNanos,
) =>
val completionInfo = someCompletionInfo.copy(optDeduplicationPeriod = deduplicationPeriod)
val update = state.Update.TransactionAccepted(
@ -1367,8 +1367,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
rejection_status_details = None,
submission_id = Some(someSubmissionId),
deduplication_offset = expectedDeduplicationOffset,
deduplication_time_seconds = expectedDeduplicationTimeSeconds,
deduplication_time_nanos = expectedDeduplicationTimeNanos,
deduplication_duration_seconds = expectedDeduplicationDurationSeconds,
deduplication_duration_nanos = expectedDeduplicationDurationNanos,
deduplication_start = None,
),
)