Control signed pre-key deletion via a dynamic configuration flag to facilitate migration
This commit is contained in:
parent
4a91fc3c3d
commit
b593d49399
|
@ -57,7 +57,7 @@ public class DynamicConfiguration {
|
||||||
|
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
@Valid
|
@Valid
|
||||||
DynamicECPreKeyMigrationConfiguration ecPreKeyMigration = new DynamicECPreKeyMigrationConfiguration(false);
|
DynamicECPreKeyMigrationConfiguration ecPreKeyMigration = new DynamicECPreKeyMigrationConfiguration(true, false);
|
||||||
|
|
||||||
public Optional<DynamicExperimentEnrollmentConfiguration> getExperimentEnrollmentConfiguration(
|
public Optional<DynamicExperimentEnrollmentConfiguration> getExperimentEnrollmentConfiguration(
|
||||||
final String experimentName) {
|
final String experimentName) {
|
||||||
|
|
|
@ -5,5 +5,5 @@
|
||||||
|
|
||||||
package org.whispersystems.textsecuregcm.configuration.dynamic;
|
package org.whispersystems.textsecuregcm.configuration.dynamic;
|
||||||
|
|
||||||
public record DynamicECPreKeyMigrationConfiguration(boolean storeEcSignedPreKeys) {
|
public record DynamicECPreKeyMigrationConfiguration(boolean deleteEcSignedPreKeys, boolean storeEcSignedPreKeys) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,7 +124,9 @@ public class KeysManager {
|
||||||
CompletableFuture.allOf(
|
CompletableFuture.allOf(
|
||||||
ecPreKeys.delete(accountUuid),
|
ecPreKeys.delete(accountUuid),
|
||||||
pqPreKeys.delete(accountUuid),
|
pqPreKeys.delete(accountUuid),
|
||||||
ecSignedPreKeys.delete(accountUuid),
|
dynamicConfigurationManager.getConfiguration().getEcPreKeyMigrationConfiguration().deleteEcSignedPreKeys()
|
||||||
|
? ecSignedPreKeys.delete(accountUuid)
|
||||||
|
: CompletableFuture.completedFuture(null),
|
||||||
pqLastResortKeys.delete(accountUuid))
|
pqLastResortKeys.delete(accountUuid))
|
||||||
.join();
|
.join();
|
||||||
}
|
}
|
||||||
|
@ -133,7 +135,9 @@ public class KeysManager {
|
||||||
CompletableFuture.allOf(
|
CompletableFuture.allOf(
|
||||||
ecPreKeys.delete(accountUuid, deviceId),
|
ecPreKeys.delete(accountUuid, deviceId),
|
||||||
pqPreKeys.delete(accountUuid, deviceId),
|
pqPreKeys.delete(accountUuid, deviceId),
|
||||||
ecSignedPreKeys.delete(accountUuid, deviceId),
|
dynamicConfigurationManager.getConfiguration().getEcPreKeyMigrationConfiguration().deleteEcSignedPreKeys()
|
||||||
|
? ecSignedPreKeys.delete(accountUuid, deviceId)
|
||||||
|
: CompletableFuture.completedFuture(null),
|
||||||
pqLastResortKeys.delete(accountUuid, deviceId))
|
pqLastResortKeys.delete(accountUuid, deviceId))
|
||||||
.join();
|
.join();
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,7 @@ class KeysManagerTest {
|
||||||
when(dynamicConfigurationManager.getConfiguration()).thenReturn(dynamicConfiguration);
|
when(dynamicConfigurationManager.getConfiguration()).thenReturn(dynamicConfiguration);
|
||||||
when(dynamicConfiguration.getEcPreKeyMigrationConfiguration()).thenReturn(ecPreKeyMigrationConfiguration);
|
when(dynamicConfiguration.getEcPreKeyMigrationConfiguration()).thenReturn(ecPreKeyMigrationConfiguration);
|
||||||
when(ecPreKeyMigrationConfiguration.storeEcSignedPreKeys()).thenReturn(true);
|
when(ecPreKeyMigrationConfiguration.storeEcSignedPreKeys()).thenReturn(true);
|
||||||
|
when(ecPreKeyMigrationConfiguration.deleteEcSignedPreKeys()).thenReturn(true);
|
||||||
|
|
||||||
keysManager = new KeysManager(
|
keysManager = new KeysManager(
|
||||||
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
DYNAMO_DB_EXTENSION.getDynamoDbAsyncClient(),
|
||||||
|
|
Loading…
Reference in New Issue