mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 01:07:18 +03:00
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:
parent
8e22bb6b2d
commit
8a391189a6
Binary file not shown.
@ -69,6 +69,6 @@ message Completion {
|
|||||||
// It is measured in record time of completions.
|
// It is measured in record time of completions.
|
||||||
//
|
//
|
||||||
// Must be non-negative.
|
// Must be non-negative.
|
||||||
google.protobuf.Duration deduplication_time = 9;
|
google.protobuf.Duration deduplication_duration = 9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,7 @@ trait FieldValidations {
|
|||||||
val result = Duration.ofSeconds(duration.seconds, duration.nanos.toLong)
|
val result = Duration.ofSeconds(duration.seconds, duration.nanos.toLong)
|
||||||
validateDuration(
|
validateDuration(
|
||||||
result,
|
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)
|
).map(DeduplicationPeriod.DeduplicationDuration)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ class SubmitRequestValidatorTest
|
|||||||
val label = "label"
|
val label = "label"
|
||||||
val constructor = "constructor"
|
val constructor = "constructor"
|
||||||
val submitter = "party"
|
val submitter = "party"
|
||||||
val deduplicationTime = new Duration().withSeconds(10)
|
val deduplicationDuration = new Duration().withSeconds(10)
|
||||||
val command = Command.of(
|
val command = Command.of(
|
||||||
Command.Command.Create(
|
Command.Command.Create(
|
||||||
CreateCommand.of(
|
CreateCommand.of(
|
||||||
@ -62,7 +62,7 @@ class SubmitRequestValidatorTest
|
|||||||
commandId = commandId.unwrap,
|
commandId = commandId.unwrap,
|
||||||
party = submitter,
|
party = submitter,
|
||||||
commands = Seq(command),
|
commands = Seq(command),
|
||||||
deduplicationPeriod = DeduplicationPeriodProto.DeduplicationTime(deduplicationTime),
|
deduplicationPeriod = DeduplicationPeriodProto.DeduplicationTime(deduplicationDuration),
|
||||||
minLedgerTimeAbs = None,
|
minLedgerTimeAbs = None,
|
||||||
minLedgerTimeRel = None,
|
minLedgerTimeRel = None,
|
||||||
)
|
)
|
||||||
@ -74,8 +74,8 @@ class SubmitRequestValidatorTest
|
|||||||
val timeDelta = java.time.Duration.ofSeconds(1)
|
val timeDelta = java.time.Duration.ofSeconds(1)
|
||||||
val maxDeduplicationDuration = java.time.Duration.ofDays(1)
|
val maxDeduplicationDuration = java.time.Duration.ofDays(1)
|
||||||
val deduplicationDuration = java.time.Duration.ofSeconds(
|
val deduplicationDuration = java.time.Duration.ofSeconds(
|
||||||
api.deduplicationTime.seconds,
|
api.deduplicationDuration.seconds,
|
||||||
api.deduplicationTime.nanos.toLong,
|
api.deduplicationDuration.nanos.toLong,
|
||||||
)
|
)
|
||||||
|
|
||||||
val emptyCommands = ApiCommands(
|
val emptyCommands = ApiCommands(
|
||||||
@ -335,7 +335,7 @@ class SubmitRequestValidatorTest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"not allow negative deduplication time" in {
|
"not allow negative deduplication duration" in {
|
||||||
forAll(
|
forAll(
|
||||||
Table(
|
Table(
|
||||||
"deduplication period",
|
"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 =
|
val durationSecondsExceedingMax =
|
||||||
internal.maxDeduplicationDuration.plusSeconds(1).getSeconds
|
internal.maxDeduplicationDuration.plusSeconds(1).getSeconds
|
||||||
forAll(
|
forAll(
|
||||||
@ -379,7 +379,7 @@ class SubmitRequestValidatorTest
|
|||||||
Some(internal.maxDeduplicationDuration),
|
Some(internal.maxDeduplicationDuration),
|
||||||
),
|
),
|
||||||
INVALID_ARGUMENT,
|
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}",
|
.ofSeconds(durationSecondsExceedingMax)} exceeds the maximum deduplication time of ${internal.maxDeduplicationDuration}",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ private[testtool] abstract class CommandDeduplicationBase(
|
|||||||
|
|
||||||
testGivenAllParticipants(
|
testGivenAllParticipants(
|
||||||
s"${testNamingPrefix}SimpleDeduplicationBasic",
|
s"${testNamingPrefix}SimpleDeduplicationBasic",
|
||||||
"Deduplicate commands within the deduplication time window",
|
"Deduplicate commands within the deduplication duration window",
|
||||||
allocate(SingleParty),
|
allocate(SingleParty),
|
||||||
runConcurrently = false,
|
runConcurrently = false,
|
||||||
)(implicit ec =>
|
)(implicit ec =>
|
||||||
|
@ -79,7 +79,7 @@ abstract class KVCommandDeduplicationBase(
|
|||||||
// The [[Completion.deduplicationPeriod]] is set only for append-only ledgers
|
// The [[Completion.deduplicationPeriod]] is set only for append-only ledgers
|
||||||
if (deduplicationFeatures.appendOnlySchema) {
|
if (deduplicationFeatures.appendOnlySchema) {
|
||||||
val expectedCompletionDeduplicationPeriod =
|
val expectedCompletionDeduplicationPeriod =
|
||||||
Completion.DeduplicationPeriod.DeduplicationTime(
|
Completion.DeduplicationPeriod.DeduplicationDuration(
|
||||||
maxDeduplicationDuration.asProtobuf
|
maxDeduplicationDuration.asProtobuf
|
||||||
)
|
)
|
||||||
assert(
|
assert(
|
||||||
|
@ -1 +1 @@
|
|||||||
b91197c8bc9b1942ad70fcae54aa8b9ca1b0bf380e46b08c038a9bf3764fbc35
|
86ded6839752d76bb3e3e6cde7f4ec103dea6cee6382b6695de95e84dd74d2da
|
||||||
|
@ -120,8 +120,8 @@ CREATE TABLE participant_command_completions (
|
|||||||
-- 2. a duration (split into two columns, seconds and nanos, mapping protobuf's 1:1)
|
-- 2. a duration (split into two columns, seconds and nanos, mapping protobuf's 1:1)
|
||||||
-- 3. an initial timestamp
|
-- 3. an initial timestamp
|
||||||
deduplication_offset VARCHAR,
|
deduplication_offset VARCHAR,
|
||||||
deduplication_time_seconds BIGINT,
|
deduplication_duration_seconds BIGINT,
|
||||||
deduplication_time_nanos INT,
|
deduplication_duration_nanos INT,
|
||||||
deduplication_start BIGINT,
|
deduplication_start BIGINT,
|
||||||
-- The three columns below are `NULL` if the completion is for an accepted transaction.
|
-- 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
|
-- The `rejection_status_details` column contains a Protocol-Buffers-serialized message of type
|
||||||
|
@ -1 +1 @@
|
|||||||
1d1d77ce01814bbfabe592ef224193b05743fc6d1459b487fcc7fc527110b2c9
|
fe940b22140c0a1da0a3e54c0087c8872828e4cb08bdcc30bbaa1db84f98b62b
|
||||||
|
@ -123,10 +123,10 @@ CREATE TABLE participant_command_completions
|
|||||||
-- 1. an initial offset
|
-- 1. an initial offset
|
||||||
-- 2. a duration (split into two columns, seconds and nanos, mapping protobuf's 1:1)
|
-- 2. a duration (split into two columns, seconds and nanos, mapping protobuf's 1:1)
|
||||||
-- 3. an initial timestamp
|
-- 3. an initial timestamp
|
||||||
deduplication_offset VARCHAR2(4000),
|
deduplication_offset VARCHAR2(4000),
|
||||||
deduplication_time_seconds NUMBER,
|
deduplication_duration_seconds NUMBER,
|
||||||
deduplication_time_nanos NUMBER,
|
deduplication_duration_nanos NUMBER,
|
||||||
deduplication_start NUMBER,
|
deduplication_start NUMBER,
|
||||||
|
|
||||||
submitters CLOB NOT NULL CONSTRAINT ensure_json_submitters CHECK (submitters IS JSON),
|
submitters CLOB NOT NULL CONSTRAINT ensure_json_submitters CHECK (submitters IS JSON),
|
||||||
command_id NVARCHAR2(1000) NOT NULL,
|
command_id NVARCHAR2(1000) NOT NULL,
|
||||||
|
@ -1 +1 @@
|
|||||||
281330bf9e361ecf12a2160c93ba3ce006a5a40564b6e5cf987b3ead71009ddb
|
0b505bc0df2ffb4815a252f470ff820328c32fec4fdab46921c07674af852740
|
||||||
|
@ -15,6 +15,6 @@ ALTER TABLE participant_command_completions
|
|||||||
-- 2. an initial timestamp
|
-- 2. an initial timestamp
|
||||||
-- 3. a duration (split into two columns, seconds and nanos, mapping protobuf's 1:1)
|
-- 3. a duration (split into two columns, seconds and nanos, mapping protobuf's 1:1)
|
||||||
ADD COLUMN deduplication_offset text,
|
ADD COLUMN deduplication_offset text,
|
||||||
ADD COLUMN deduplication_time_seconds bigint,
|
ADD COLUMN deduplication_duration_seconds bigint,
|
||||||
ADD COLUMN deduplication_time_nanos integer,
|
ADD COLUMN deduplication_duration_nanos integer,
|
||||||
ADD COLUMN deduplication_start timestamp;
|
ADD COLUMN deduplication_start timestamp;
|
||||||
|
@ -30,8 +30,8 @@ private[platform] object CompletionFromTransaction {
|
|||||||
applicationId: String,
|
applicationId: String,
|
||||||
maybeSubmissionId: Option[String] = None,
|
maybeSubmissionId: Option[String] = None,
|
||||||
maybeDeduplicationOffset: Option[String] = None,
|
maybeDeduplicationOffset: Option[String] = None,
|
||||||
maybeDeduplicationTimeSeconds: Option[Long] = None,
|
maybeDeduplicationDurationSeconds: Option[Long] = None,
|
||||||
maybeDeduplicationTimeNanos: Option[Int] = None,
|
maybeDeduplicationDurationNanos: Option[Int] = None,
|
||||||
): CompletionStreamResponse =
|
): CompletionStreamResponse =
|
||||||
CompletionStreamResponse.of(
|
CompletionStreamResponse.of(
|
||||||
checkpoint = Some(toApiCheckpoint(recordTime, offset)),
|
checkpoint = Some(toApiCheckpoint(recordTime, offset)),
|
||||||
@ -43,8 +43,8 @@ private[platform] object CompletionFromTransaction {
|
|||||||
maybeStatus = Some(OkStatus),
|
maybeStatus = Some(OkStatus),
|
||||||
maybeSubmissionId = maybeSubmissionId,
|
maybeSubmissionId = maybeSubmissionId,
|
||||||
maybeDeduplicationOffset = maybeDeduplicationOffset,
|
maybeDeduplicationOffset = maybeDeduplicationOffset,
|
||||||
maybeDeduplicationTimeSeconds = maybeDeduplicationTimeSeconds,
|
maybeDeduplicationDurationSeconds = maybeDeduplicationDurationSeconds,
|
||||||
maybeDeduplicationTimeNanos = maybeDeduplicationTimeNanos,
|
maybeDeduplicationDurationNanos = maybeDeduplicationDurationNanos,
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -57,8 +57,8 @@ private[platform] object CompletionFromTransaction {
|
|||||||
applicationId: String,
|
applicationId: String,
|
||||||
maybeSubmissionId: Option[String] = None,
|
maybeSubmissionId: Option[String] = None,
|
||||||
maybeDeduplicationOffset: Option[String] = None,
|
maybeDeduplicationOffset: Option[String] = None,
|
||||||
maybeDeduplicationTimeSeconds: Option[Long] = None,
|
maybeDeduplicationDurationSeconds: Option[Long] = None,
|
||||||
maybeDeduplicationTimeNanos: Option[Int] = None,
|
maybeDeduplicationDurationNanos: Option[Int] = None,
|
||||||
): CompletionStreamResponse =
|
): CompletionStreamResponse =
|
||||||
CompletionStreamResponse.of(
|
CompletionStreamResponse.of(
|
||||||
checkpoint = Some(toApiCheckpoint(recordTime, offset)),
|
checkpoint = Some(toApiCheckpoint(recordTime, offset)),
|
||||||
@ -70,8 +70,8 @@ private[platform] object CompletionFromTransaction {
|
|||||||
maybeStatus = Some(status),
|
maybeStatus = Some(status),
|
||||||
maybeSubmissionId = maybeSubmissionId,
|
maybeSubmissionId = maybeSubmissionId,
|
||||||
maybeDeduplicationOffset = maybeDeduplicationOffset,
|
maybeDeduplicationOffset = maybeDeduplicationOffset,
|
||||||
maybeDeduplicationTimeSeconds = maybeDeduplicationTimeSeconds,
|
maybeDeduplicationDurationSeconds = maybeDeduplicationDurationSeconds,
|
||||||
maybeDeduplicationTimeNanos = maybeDeduplicationTimeNanos,
|
maybeDeduplicationDurationNanos = maybeDeduplicationDurationNanos,
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -89,8 +89,8 @@ private[platform] object CompletionFromTransaction {
|
|||||||
maybeStatus: Option[StatusProto],
|
maybeStatus: Option[StatusProto],
|
||||||
maybeSubmissionId: Option[String],
|
maybeSubmissionId: Option[String],
|
||||||
maybeDeduplicationOffset: Option[String],
|
maybeDeduplicationOffset: Option[String],
|
||||||
maybeDeduplicationTimeSeconds: Option[Long],
|
maybeDeduplicationDurationSeconds: Option[Long],
|
||||||
maybeDeduplicationTimeNanos: Option[Int],
|
maybeDeduplicationDurationNanos: Option[Int],
|
||||||
): Completion = {
|
): Completion = {
|
||||||
val completionWithMandatoryFields = Completion(
|
val completionWithMandatoryFields = Completion(
|
||||||
commandId = commandId,
|
commandId = commandId,
|
||||||
@ -100,8 +100,8 @@ private[platform] object CompletionFromTransaction {
|
|||||||
)
|
)
|
||||||
val maybeDeduplicationPeriod = toApiDeduplicationPeriod(
|
val maybeDeduplicationPeriod = toApiDeduplicationPeriod(
|
||||||
maybeDeduplicationOffset = maybeDeduplicationOffset,
|
maybeDeduplicationOffset = maybeDeduplicationOffset,
|
||||||
maybeDeduplicationTimeSeconds = maybeDeduplicationTimeSeconds,
|
maybeDeduplicationDurationSeconds = maybeDeduplicationDurationSeconds,
|
||||||
maybeDeduplicationTimeNanos = maybeDeduplicationTimeNanos,
|
maybeDeduplicationDurationNanos = maybeDeduplicationDurationNanos,
|
||||||
)
|
)
|
||||||
(maybeSubmissionId, maybeDeduplicationPeriod) match {
|
(maybeSubmissionId, maybeDeduplicationPeriod) match {
|
||||||
case (Some(submissionId), Some(deduplicationPeriod)) =>
|
case (Some(submissionId), Some(deduplicationPeriod)) =>
|
||||||
@ -124,27 +124,30 @@ private[platform] object CompletionFromTransaction {
|
|||||||
|
|
||||||
private def toApiDeduplicationPeriod(
|
private def toApiDeduplicationPeriod(
|
||||||
maybeDeduplicationOffset: Option[String],
|
maybeDeduplicationOffset: Option[String],
|
||||||
maybeDeduplicationTimeSeconds: Option[Long],
|
maybeDeduplicationDurationSeconds: Option[Long],
|
||||||
maybeDeduplicationTimeNanos: Option[Int],
|
maybeDeduplicationDurationNanos: Option[Int],
|
||||||
): Option[Completion.DeduplicationPeriod] =
|
): Option[Completion.DeduplicationPeriod] =
|
||||||
// The only invariant that should hold, considering legacy data, is that either
|
// The only invariant that should hold, considering legacy data, is that either
|
||||||
// the deduplication time seconds and nanos are both populated, or neither is.
|
// the deduplication duration seconds and nanos are both populated, or neither is.
|
||||||
(maybeDeduplicationOffset, (maybeDeduplicationTimeSeconds, maybeDeduplicationTimeNanos)) match {
|
(
|
||||||
|
maybeDeduplicationOffset,
|
||||||
|
(maybeDeduplicationDurationSeconds, maybeDeduplicationDurationNanos),
|
||||||
|
) match {
|
||||||
case (None, (None, None)) => None
|
case (None, (None, None)) => None
|
||||||
case (Some(offset), _) =>
|
case (Some(offset), _) =>
|
||||||
Some(Completion.DeduplicationPeriod.DeduplicationOffset(offset))
|
Some(Completion.DeduplicationPeriod.DeduplicationOffset(offset))
|
||||||
case (_, (Some(deduplicationTimeSeconds), Some(deduplicationTimeNanos))) =>
|
case (_, (Some(deduplicationDurationSeconds), Some(deduplicationDurationNanos))) =>
|
||||||
Some(
|
Some(
|
||||||
Completion.DeduplicationPeriod.DeduplicationTime(
|
Completion.DeduplicationPeriod.DeduplicationDuration(
|
||||||
new Duration(
|
new Duration(
|
||||||
seconds = deduplicationTimeSeconds,
|
seconds = deduplicationDurationSeconds,
|
||||||
nanos = deduplicationTimeNanos,
|
nanos = deduplicationDurationNanos,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
case _ =>
|
case _ =>
|
||||||
throw new IllegalArgumentException(
|
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"
|
"but they must be either both provided or both absent"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -128,8 +128,8 @@ object DbDto {
|
|||||||
rejection_status_details: Option[Array[Byte]],
|
rejection_status_details: Option[Array[Byte]],
|
||||||
submission_id: Option[String],
|
submission_id: Option[String],
|
||||||
deduplication_offset: Option[String],
|
deduplication_offset: Option[String],
|
||||||
deduplication_time_seconds: Option[Long],
|
deduplication_duration_seconds: Option[Long],
|
||||||
deduplication_time_nanos: Option[Int],
|
deduplication_duration_nanos: Option[Int],
|
||||||
deduplication_start: Option[Long],
|
deduplication_start: Option[Long],
|
||||||
) extends DbDto
|
) extends DbDto
|
||||||
|
|
||||||
|
@ -268,7 +268,7 @@ object UpdateToDbDto {
|
|||||||
transactionId: Option[Ref.TransactionId],
|
transactionId: Option[Ref.TransactionId],
|
||||||
completionInfo: CompletionInfo,
|
completionInfo: CompletionInfo,
|
||||||
): DbDto.CommandCompletion = {
|
): DbDto.CommandCompletion = {
|
||||||
val (deduplicationOffset, deduplicationTimeSeconds, deduplicationTimeNanos) =
|
val (deduplicationOffset, deduplicationDurationSeconds, deduplicationDurationNanos) =
|
||||||
completionInfo.optDeduplicationPeriod
|
completionInfo.optDeduplicationPeriod
|
||||||
.map {
|
.map {
|
||||||
case DeduplicationOffset(offset) =>
|
case DeduplicationOffset(offset) =>
|
||||||
@ -290,8 +290,8 @@ object UpdateToDbDto {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = completionInfo.submissionId,
|
submission_id = completionInfo.submissionId,
|
||||||
deduplication_offset = deduplicationOffset,
|
deduplication_offset = deduplicationOffset,
|
||||||
deduplication_time_seconds = deduplicationTimeSeconds,
|
deduplication_duration_seconds = deduplicationDurationSeconds,
|
||||||
deduplication_time_nanos = deduplicationTimeNanos,
|
deduplication_duration_nanos = deduplicationDurationNanos,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -45,8 +45,8 @@ trait CompletionStorageBackendTemplate extends CompletionStorageBackend {
|
|||||||
application_id,
|
application_id,
|
||||||
submission_id,
|
submission_id,
|
||||||
deduplication_offset,
|
deduplication_offset,
|
||||||
deduplication_time_seconds,
|
deduplication_duration_seconds,
|
||||||
deduplication_time_nanos,
|
deduplication_duration_nanos,
|
||||||
deduplication_start
|
deduplication_start
|
||||||
FROM
|
FROM
|
||||||
participant_command_completions
|
participant_command_completions
|
||||||
@ -73,9 +73,9 @@ trait CompletionStorageBackendTemplate extends CompletionStorageBackend {
|
|||||||
private val deduplicationOffsetColumn: RowParser[Option[String]] =
|
private val deduplicationOffsetColumn: RowParser[Option[String]] =
|
||||||
str("deduplication_offset").?
|
str("deduplication_offset").?
|
||||||
private val deduplicationTimeSecondsColumn: RowParser[Option[Long]] =
|
private val deduplicationTimeSecondsColumn: RowParser[Option[Long]] =
|
||||||
long("deduplication_time_seconds").?
|
long("deduplication_duration_seconds").?
|
||||||
private val deduplicationTimeNanosColumn: RowParser[Option[Int]] =
|
private val deduplicationTimeNanosColumn: RowParser[Option[Int]] =
|
||||||
int("deduplication_time_nanos").?
|
int("deduplication_duration_nanos").?
|
||||||
private val deduplicationStartColumn: RowParser[Option[Instant]] =
|
private val deduplicationStartColumn: RowParser[Option[Instant]] =
|
||||||
instantFromMicros("deduplication_start").?
|
instantFromMicros("deduplication_start").?
|
||||||
|
|
||||||
@ -94,8 +94,8 @@ trait CompletionStorageBackendTemplate extends CompletionStorageBackend {
|
|||||||
applicationId = applicationId,
|
applicationId = applicationId,
|
||||||
maybeSubmissionId = submissionId,
|
maybeSubmissionId = submissionId,
|
||||||
maybeDeduplicationOffset = deduplicationOffset,
|
maybeDeduplicationOffset = deduplicationOffset,
|
||||||
maybeDeduplicationTimeSeconds = deduplicationTimeSeconds,
|
maybeDeduplicationDurationSeconds = deduplicationTimeSeconds,
|
||||||
maybeDeduplicationTimeNanos = deduplicationTimeNanos,
|
maybeDeduplicationDurationNanos = deduplicationTimeNanos,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,8 +125,8 @@ trait CompletionStorageBackendTemplate extends CompletionStorageBackend {
|
|||||||
applicationId = applicationId,
|
applicationId = applicationId,
|
||||||
maybeSubmissionId = submissionId,
|
maybeSubmissionId = submissionId,
|
||||||
maybeDeduplicationOffset = deduplicationOffset,
|
maybeDeduplicationOffset = deduplicationOffset,
|
||||||
maybeDeduplicationTimeSeconds = deduplicationTimeSeconds,
|
maybeDeduplicationDurationSeconds = deduplicationTimeSeconds,
|
||||||
maybeDeduplicationTimeNanos = deduplicationTimeNanos,
|
maybeDeduplicationDurationNanos = deduplicationTimeNanos,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,8 +215,10 @@ private[backend] object AppendOnlySchema {
|
|||||||
"rejection_status_details" -> fieldStrategy.byteaOptional(_.rejection_status_details),
|
"rejection_status_details" -> fieldStrategy.byteaOptional(_.rejection_status_details),
|
||||||
"submission_id" -> fieldStrategy.stringOptional(_.submission_id),
|
"submission_id" -> fieldStrategy.stringOptional(_.submission_id),
|
||||||
"deduplication_offset" -> fieldStrategy.stringOptional(_.deduplication_offset),
|
"deduplication_offset" -> fieldStrategy.stringOptional(_.deduplication_offset),
|
||||||
"deduplication_time_seconds" -> fieldStrategy.bigintOptional(_.deduplication_time_seconds),
|
"deduplication_duration_seconds" -> fieldStrategy.bigintOptional(
|
||||||
"deduplication_time_nanos" -> fieldStrategy.intOptional(_.deduplication_time_nanos),
|
_.deduplication_duration_seconds
|
||||||
|
),
|
||||||
|
"deduplication_duration_nanos" -> fieldStrategy.intOptional(_.deduplication_duration_nanos),
|
||||||
"deduplication_start" -> fieldStrategy.bigintOptional(_.deduplication_start),
|
"deduplication_start" -> fieldStrategy.bigintOptional(_.deduplication_start),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -217,8 +217,8 @@ private[backend] object StorageBackendTestValues {
|
|||||||
applicationId: String = someApplicationId,
|
applicationId: String = someApplicationId,
|
||||||
submissionId: Option[String] = Some(UUID.randomUUID().toString),
|
submissionId: Option[String] = Some(UUID.randomUUID().toString),
|
||||||
deduplicationOffset: Option[String] = None,
|
deduplicationOffset: Option[String] = None,
|
||||||
deduplicationTimeSeconds: Option[Long] = None,
|
deduplicationDurationSeconds: Option[Long] = None,
|
||||||
deduplicationTimeNanos: Option[Int] = None,
|
deduplicationDurationNanos: Option[Int] = None,
|
||||||
deduplicationStart: Option[Timestamp] = None,
|
deduplicationStart: Option[Timestamp] = None,
|
||||||
): DbDto.CommandCompletion =
|
): DbDto.CommandCompletion =
|
||||||
DbDto.CommandCompletion(
|
DbDto.CommandCompletion(
|
||||||
@ -233,8 +233,8 @@ private[backend] object StorageBackendTestValues {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = submissionId,
|
submission_id = submissionId,
|
||||||
deduplication_offset = deduplicationOffset,
|
deduplication_offset = deduplicationOffset,
|
||||||
deduplication_time_seconds = deduplicationTimeSeconds,
|
deduplication_duration_seconds = deduplicationDurationSeconds,
|
||||||
deduplication_time_nanos = deduplicationTimeNanos,
|
deduplication_duration_nanos = deduplicationDurationNanos,
|
||||||
deduplication_start = deduplicationStart.map(_.micros),
|
deduplication_start = deduplicationStart.map(_.micros),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -149,14 +149,14 @@ private[backend] trait StorageBackendTestsCompletions
|
|||||||
dtoCompletion(
|
dtoCompletion(
|
||||||
offset(2),
|
offset(2),
|
||||||
submitter = party,
|
submitter = party,
|
||||||
deduplicationTimeSeconds = Some(seconds),
|
deduplicationDurationSeconds = Some(seconds),
|
||||||
deduplicationTimeNanos = Some(nanos),
|
deduplicationDurationNanos = Some(nanos),
|
||||||
),
|
),
|
||||||
dtoCompletion(
|
dtoCompletion(
|
||||||
offset(3),
|
offset(3),
|
||||||
submitter = party,
|
submitter = party,
|
||||||
deduplicationTimeSeconds = None,
|
deduplicationDurationSeconds = None,
|
||||||
deduplicationTimeNanos = None,
|
deduplicationDurationNanos = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -172,11 +172,11 @@ private[backend] trait StorageBackendTestsCompletions
|
|||||||
val List(completionWithDeduplicationOffset, completionWithoutDeduplicationOffset) =
|
val List(completionWithDeduplicationOffset, completionWithoutDeduplicationOffset) =
|
||||||
completions
|
completions
|
||||||
completionWithDeduplicationOffset.completions should have length 1
|
completionWithDeduplicationOffset.completions should have length 1
|
||||||
completionWithDeduplicationOffset.completions.head.deduplicationPeriod.deduplicationTime should be(
|
completionWithDeduplicationOffset.completions.head.deduplicationPeriod.deduplicationDuration should be(
|
||||||
Some(expectedDuration)
|
Some(expectedDuration)
|
||||||
)
|
)
|
||||||
completionWithoutDeduplicationOffset.completions should have length 1
|
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 nanos = 10
|
||||||
|
|
||||||
val expectedErrorMessage =
|
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"
|
"but they must be either both provided or both absent"
|
||||||
|
|
||||||
val dtos1 = Vector(
|
val dtos1 = Vector(
|
||||||
@ -194,8 +194,8 @@ private[backend] trait StorageBackendTestsCompletions
|
|||||||
dtoCompletion(
|
dtoCompletion(
|
||||||
offset(2),
|
offset(2),
|
||||||
submitter = party,
|
submitter = party,
|
||||||
deduplicationTimeSeconds = Some(seconds),
|
deduplicationDurationSeconds = Some(seconds),
|
||||||
deduplicationTimeNanos = None,
|
deduplicationDurationNanos = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -215,8 +215,8 @@ private[backend] trait StorageBackendTestsCompletions
|
|||||||
dtoCompletion(
|
dtoCompletion(
|
||||||
offset(3),
|
offset(3),
|
||||||
submitter = party,
|
submitter = party,
|
||||||
deduplicationTimeSeconds = None,
|
deduplicationDurationSeconds = None,
|
||||||
deduplicationTimeNanos = Some(nanos),
|
deduplicationDurationNanos = Some(nanos),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -265,8 +265,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = Some(StatusDetails.of(status.details).toByteArray),
|
rejection_status_details = Some(StatusDetails.of(status.details).toByteArray),
|
||||||
submission_id = Some(someSubmissionId),
|
submission_id = Some(someSubmissionId),
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
DbDto.CommandDeduplication(
|
DbDto.CommandDeduplication(
|
||||||
@ -342,8 +342,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = Some(someSubmissionId),
|
submission_id = Some(someSubmissionId),
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -415,8 +415,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = completionInfo.submissionId,
|
submission_id = completionInfo.submissionId,
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -500,8 +500,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = completionInfo.submissionId,
|
submission_id = completionInfo.submissionId,
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -585,8 +585,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = completionInfo.submissionId,
|
submission_id = completionInfo.submissionId,
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -753,8 +753,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = completionInfo.submissionId,
|
submission_id = completionInfo.submissionId,
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -855,8 +855,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = completionInfo.submissionId,
|
submission_id = completionInfo.submissionId,
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -981,8 +981,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = completionInfo.submissionId,
|
submission_id = completionInfo.submissionId,
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -1084,8 +1084,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = completionInfo.submissionId,
|
submission_id = completionInfo.submissionId,
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -1164,8 +1164,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = completionInfo.submissionId,
|
submission_id = completionInfo.submissionId,
|
||||||
deduplication_offset = None,
|
deduplication_offset = None,
|
||||||
deduplication_time_nanos = None,
|
deduplication_duration_nanos = None,
|
||||||
deduplication_time_seconds = None,
|
deduplication_duration_seconds = None,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -1231,8 +1231,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
(
|
(
|
||||||
"Deduplication period",
|
"Deduplication period",
|
||||||
"Expected deduplication offset",
|
"Expected deduplication offset",
|
||||||
"Expected deduplication time seconds",
|
"Expected deduplication duration seconds",
|
||||||
"Expected deduplication time nanos",
|
"Expected deduplication duration nanos",
|
||||||
),
|
),
|
||||||
(None, None, None, None),
|
(None, None, None, None),
|
||||||
(
|
(
|
||||||
@ -1255,8 +1255,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
case (
|
case (
|
||||||
deduplicationPeriod,
|
deduplicationPeriod,
|
||||||
expectedDeduplicationOffset,
|
expectedDeduplicationOffset,
|
||||||
expectedDeduplicationTimeSeconds,
|
expectedDeduplicationDurationSeconds,
|
||||||
expectedDeduplicationTimeNanos,
|
expectedDeduplicationDurationNanos,
|
||||||
) =>
|
) =>
|
||||||
val completionInfo = someCompletionInfo.copy(optDeduplicationPeriod = deduplicationPeriod)
|
val completionInfo = someCompletionInfo.copy(optDeduplicationPeriod = deduplicationPeriod)
|
||||||
val update = state.Update.CommandRejected(
|
val update = state.Update.CommandRejected(
|
||||||
@ -1281,8 +1281,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = Some(StatusDetails.of(status.details).toByteArray),
|
rejection_status_details = Some(StatusDetails.of(status.details).toByteArray),
|
||||||
submission_id = Some(someSubmissionId),
|
submission_id = Some(someSubmissionId),
|
||||||
deduplication_offset = expectedDeduplicationOffset,
|
deduplication_offset = expectedDeduplicationOffset,
|
||||||
deduplication_time_seconds = expectedDeduplicationTimeSeconds,
|
deduplication_duration_seconds = expectedDeduplicationDurationSeconds,
|
||||||
deduplication_time_nanos = expectedDeduplicationTimeNanos,
|
deduplication_duration_nanos = expectedDeduplicationDurationNanos,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
DbDto.CommandDeduplication(
|
DbDto.CommandDeduplication(
|
||||||
@ -1313,8 +1313,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
case (
|
case (
|
||||||
deduplicationPeriod,
|
deduplicationPeriod,
|
||||||
expectedDeduplicationOffset,
|
expectedDeduplicationOffset,
|
||||||
expectedDeduplicationTimeSeconds,
|
expectedDeduplicationDurationSeconds,
|
||||||
expectedDeduplicationTimeNanos,
|
expectedDeduplicationDurationNanos,
|
||||||
) =>
|
) =>
|
||||||
val completionInfo = someCompletionInfo.copy(optDeduplicationPeriod = deduplicationPeriod)
|
val completionInfo = someCompletionInfo.copy(optDeduplicationPeriod = deduplicationPeriod)
|
||||||
val update = state.Update.TransactionAccepted(
|
val update = state.Update.TransactionAccepted(
|
||||||
@ -1367,8 +1367,8 @@ class UpdateToDbDtoSpec extends AnyWordSpec with Matchers {
|
|||||||
rejection_status_details = None,
|
rejection_status_details = None,
|
||||||
submission_id = Some(someSubmissionId),
|
submission_id = Some(someSubmissionId),
|
||||||
deduplication_offset = expectedDeduplicationOffset,
|
deduplication_offset = expectedDeduplicationOffset,
|
||||||
deduplication_time_seconds = expectedDeduplicationTimeSeconds,
|
deduplication_duration_seconds = expectedDeduplicationDurationSeconds,
|
||||||
deduplication_time_nanos = expectedDeduplicationTimeNanos,
|
deduplication_duration_nanos = expectedDeduplicationDurationNanos,
|
||||||
deduplication_start = None,
|
deduplication_start = None,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user