Drop the old Postgres-based pre-key store.

This commit is contained in:
Jon Chambers
2021-02-05 16:16:27 -05:00
committed by Jon Chambers
parent 6865cdfce3
commit 04728ea4bc
11 changed files with 40 additions and 735 deletions

View File

@@ -16,16 +16,13 @@ import org.whispersystems.textsecuregcm.entities.PreKeyResponse;
import org.whispersystems.textsecuregcm.entities.PreKeyResponseItem;
import org.whispersystems.textsecuregcm.entities.PreKeyState;
import org.whispersystems.textsecuregcm.entities.SignedPreKey;
import org.whispersystems.textsecuregcm.experiment.ExperimentEnrollmentManager;
import org.whispersystems.textsecuregcm.limits.RateLimiters;
import org.whispersystems.textsecuregcm.sqs.DirectoryQueue;
import org.whispersystems.textsecuregcm.storage.Account;
import org.whispersystems.textsecuregcm.storage.AccountsManager;
import org.whispersystems.textsecuregcm.storage.Device;
import org.whispersystems.textsecuregcm.storage.KeyRecord;
import org.whispersystems.textsecuregcm.storage.Keys;
import org.whispersystems.textsecuregcm.storage.KeysDynamoDb;
import org.whispersystems.textsecuregcm.storage.PreKeyStore;
import javax.validation.Valid;
import javax.ws.rs.Consumes;
@@ -47,28 +44,21 @@ import java.util.Optional;
public class KeysController {
private final RateLimiters rateLimiters;
private final Keys keys;
private final KeysDynamoDb keysDynamoDb;
private final AccountsManager accounts;
private final DirectoryQueue directoryQueue;
private final ExperimentEnrollmentManager experimentEnrollmentManager;
private static final String DYNAMODB_CONSUMER_EXPERIMENT = "keys_dynamodb_consumer";
private static final String DYNAMODB_PRODUCER_EXPERIMENT = "keys_dynamodb_producer";
public KeysController(RateLimiters rateLimiters, Keys keys, KeysDynamoDb keysDynamoDb, AccountsManager accounts, DirectoryQueue directoryQueue, final ExperimentEnrollmentManager experimentEnrollmentManager) {
public KeysController(RateLimiters rateLimiters, KeysDynamoDb keysDynamoDb, AccountsManager accounts, DirectoryQueue directoryQueue) {
this.rateLimiters = rateLimiters;
this.keys = keys;
this.keysDynamoDb = keysDynamoDb;
this.accounts = accounts;
this.directoryQueue = directoryQueue;
this.experimentEnrollmentManager = experimentEnrollmentManager;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public PreKeyCount getStatus(@Auth Account account) {
int count = getPreKeyStoreForProducer(account).getCount(account, account.getAuthenticatedDevice().get().getId());
int count = keysDynamoDb.getCount(account, account.getAuthenticatedDevice().get().getId());
if (count > 0) {
count = count - 1;
@@ -104,7 +94,7 @@ public class KeysController {
}
}
getPreKeyStoreForProducer(account).store(account, device.getId(), preKeys.getPreKeys());
keysDynamoDb.store(account, device.getId(), preKeys.getPreKeys());
}
@Timed
@@ -185,22 +175,14 @@ public class KeysController {
private List<KeyRecord> getLocalKeys(Account destination, String deviceIdSelector) {
try {
if (deviceIdSelector.equals("*")) {
return getPreKeyStoreForConsumer(destination).take(destination);
return keysDynamoDb.take(destination);
}
long deviceId = Long.parseLong(deviceIdSelector);
return getPreKeyStoreForConsumer(destination).take(destination, deviceId);
return keysDynamoDb.take(destination, deviceId);
} catch (NumberFormatException e) {
throw new WebApplicationException(Response.status(422).build());
}
}
private PreKeyStore getPreKeyStoreForProducer(final Account account) {
return experimentEnrollmentManager.isEnrolled(account.getUuid(), DYNAMODB_PRODUCER_EXPERIMENT) ? keysDynamoDb : keys;
}
private PreKeyStore getPreKeyStoreForConsumer(final Account account) {
return experimentEnrollmentManager.isEnrolled(account.getUuid(), DYNAMODB_CONSUMER_EXPERIMENT) ? keysDynamoDb : keys;
}
}