Make backup batch operation concurrency configurable

This commit is contained in:
Ravi Khadiwala
2025-09-08 13:25:27 -05:00
committed by ravi-signal
parent efde8a31f9
commit 8c2d738924
6 changed files with 110 additions and 40 deletions

View File

@@ -0,0 +1,41 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.whispersystems.textsecuregcm.configuration.dynamic;
import java.time.Duration;
/**
*
* @param deletionConcurrency How many cdn object deletion requests can be outstanding at a time per backup deletion operation
* @param copyConcurrency How many cdn object copy requests can be outstanding at a time per batch copy-to-backup operation
* @param usageCheckpointCount When doing batch operations, how often persist usage deltas
* @param maxQuotaStaleness The maximum age of a quota estimate that can be used to enforce a quota limit
*/
public record DynamicBackupConfiguration(
Integer deletionConcurrency,
Integer copyConcurrency,
Integer usageCheckpointCount,
Duration maxQuotaStaleness) {
public DynamicBackupConfiguration {
if (deletionConcurrency == null) {
deletionConcurrency = 10;
}
if (copyConcurrency == null) {
copyConcurrency = 10;
}
if (usageCheckpointCount == null) {
usageCheckpointCount = 10;
}
if (maxQuotaStaleness == null) {
maxQuotaStaleness = Duration.ofSeconds(10);
}
}
public DynamicBackupConfiguration() {
this(null, null, null, null);
}
}

View File

@@ -64,6 +64,10 @@ public class DynamicConfiguration {
@Valid
DynamicRestDeprecationConfiguration restDeprecation = new DynamicRestDeprecationConfiguration(Map.of());
@JsonProperty
@Valid
private DynamicBackupConfiguration backup = new DynamicBackupConfiguration();
public Optional<DynamicExperimentEnrollmentConfiguration> getExperimentEnrollmentConfiguration(
final String experimentName) {
return Optional.ofNullable(experiments.get(experimentName));
@@ -114,4 +118,7 @@ public class DynamicConfiguration {
return restDeprecation;
}
public DynamicBackupConfiguration getBackupConfiguration() {
return backup;
}
}