mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 05:38:04 +01:00
Add dynamic configuration to disable directory reconciler
This commit is contained in:
@@ -487,7 +487,8 @@ public class WhisperServerService extends Application<WhisperServerConfiguration
|
||||
final DirectoryReconciliationClient directoryReconciliationClient = new DirectoryReconciliationClient(
|
||||
directoryServerConfiguration);
|
||||
final DirectoryReconciler directoryReconciler = new DirectoryReconciler(
|
||||
directoryServerConfiguration.getReplicationName(), directoryReconciliationClient);
|
||||
directoryServerConfiguration.getReplicationName(), directoryReconciliationClient,
|
||||
dynamicConfigurationManager);
|
||||
// reconcilers are read-only
|
||||
accountDatabaseCrawlerListeners.add(directoryReconciler);
|
||||
|
||||
|
||||
@@ -48,6 +48,9 @@ public class DynamicConfiguration {
|
||||
@Valid
|
||||
private DynamicRateLimitChallengeConfiguration rateLimitChallenge = new DynamicRateLimitChallengeConfiguration();
|
||||
|
||||
@JsonProperty
|
||||
private DynamicDirectoryReconcilerConfiguration directoryReconciler = new DynamicDirectoryReconcilerConfiguration();
|
||||
|
||||
public Optional<DynamicExperimentEnrollmentConfiguration> getExperimentEnrollmentConfiguration(
|
||||
final String experimentName) {
|
||||
return Optional.ofNullable(experiments.get(experimentName));
|
||||
@@ -94,4 +97,8 @@ public class DynamicConfiguration {
|
||||
public DynamicRateLimitChallengeConfiguration getRateLimitChallengeConfiguration() {
|
||||
return rateLimitChallenge;
|
||||
}
|
||||
|
||||
public DynamicDirectoryReconcilerConfiguration getDirectoryReconcilerConfiguration() {
|
||||
return directoryReconciler;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright 2021 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.whispersystems.textsecuregcm.configuration.dynamic;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class DynamicDirectoryReconcilerConfiguration {
|
||||
|
||||
@JsonProperty
|
||||
private boolean enabled = true;
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
}
|
||||
@@ -26,10 +26,13 @@ public class DirectoryReconciler extends AccountDatabaseCrawlerListener {
|
||||
|
||||
private final String replicationName;
|
||||
private final DirectoryReconciliationClient reconciliationClient;
|
||||
private final DynamicConfigurationManager dynamicConfigurationManager;
|
||||
|
||||
public DirectoryReconciler(String replicationName, DirectoryReconciliationClient reconciliationClient) {
|
||||
public DirectoryReconciler(String replicationName, DirectoryReconciliationClient reconciliationClient,
|
||||
DynamicConfigurationManager dynamicConfigurationManager) {
|
||||
this.reconciliationClient = reconciliationClient;
|
||||
this.replicationName = replicationName;
|
||||
this.dynamicConfigurationManager = dynamicConfigurationManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -38,6 +41,10 @@ public class DirectoryReconciler extends AccountDatabaseCrawlerListener {
|
||||
|
||||
@Override
|
||||
public void onCrawlEnd(Optional<UUID> fromUuid) {
|
||||
if (!dynamicConfigurationManager.getConfiguration().getDirectoryReconcilerConfiguration().isEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
reconciliationClient.complete();
|
||||
}
|
||||
|
||||
@@ -45,6 +52,10 @@ public class DirectoryReconciler extends AccountDatabaseCrawlerListener {
|
||||
protected void onCrawlChunk(final Optional<UUID> fromUuid, final List<Account> accounts)
|
||||
throws AccountDatabaseCrawlerRestartException {
|
||||
|
||||
if (!dynamicConfigurationManager.getConfiguration().getDirectoryReconcilerConfiguration().isEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
final DirectoryReconciliationRequest addUsersRequest;
|
||||
final DirectoryReconciliationRequest deleteUsersRequest;
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user