Skip to content

Commit

Permalink
Merge pull request #33252 from vespa-engine/revert-33190-hmusum/use-o…
Browse files Browse the repository at this point in the history
…ne-file-downloader-in-config-server

Revert "Use one FileDownloader in config server"
  • Loading branch information
hmusum authored Feb 3, 2025
2 parents 5560114 + 4614741 commit 32def7a
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import com.yahoo.container.handler.VipStatus;
import com.yahoo.container.jdisc.state.StateMonitor;
import com.yahoo.vespa.config.server.filedistribution.FileDirectory;
import com.yahoo.vespa.config.server.filedistribution.FileServer;
import com.yahoo.vespa.config.server.maintenance.ConfigServerMaintenance;
import com.yahoo.vespa.config.server.rpc.RpcServer;
import com.yahoo.vespa.config.server.version.VersionState;
Expand Down Expand Up @@ -75,15 +74,15 @@ enum VipStatusMode { VIP_STATUS_FILE, VIP_STATUS_PROGRAMMATICALLY }
@Inject
public ConfigServerBootstrap(ApplicationRepository applicationRepository, RpcServer server,
VersionState versionState, StateMonitor stateMonitor, VipStatus vipStatus,
FileDirectory fileDirectory, FileServer fileServer) {
FileDirectory fileDirectory) {
this(applicationRepository, server, versionState, stateMonitor, vipStatus, EXIT_JVM,
vipStatusMode(applicationRepository), fileDirectory, fileServer);
vipStatusMode(applicationRepository), fileDirectory);
}

protected ConfigServerBootstrap(ApplicationRepository applicationRepository, RpcServer server,
VersionState versionState, StateMonitor stateMonitor, VipStatus vipStatus,
RedeployingApplicationsFails exitIfRedeployingApplicationsFails,
VipStatusMode vipStatusMode, FileDirectory fileDirectory, FileServer fileServer) {
VipStatusMode vipStatusMode, FileDirectory fileDirectory) {
this.applicationRepository = applicationRepository;
this.server = server;
this.versionState = versionState;
Expand All @@ -95,7 +94,7 @@ protected ConfigServerBootstrap(ApplicationRepository applicationRepository, Rpc
this.exitIfRedeployingApplicationsFails = exitIfRedeployingApplicationsFails;
this.clock = applicationRepository.clock();
rpcServerExecutor = Executors.newSingleThreadExecutor(new DaemonThreadFactory("config server RPC server"));
configServerMaintenance = new ConfigServerMaintenance(applicationRepository, fileDirectory, fileServer);
configServerMaintenance = new ConfigServerMaintenance(applicationRepository, fileDirectory);
configServerMaintenance.startBeforeBootstrap();
log.log(Level.FINE, () -> "VIP status mode: " + vipStatusMode);
initializing(vipStatusMode);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@

import com.yahoo.config.FileReference;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.subscription.ConfigSourceSet;
import com.yahoo.jrt.Supervisor;
import com.yahoo.jrt.Transport;
import com.yahoo.vespa.config.ConnectionPool;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.filedistribution.FileServer;
import com.yahoo.vespa.config.server.session.RemoteSession;
import com.yahoo.vespa.config.server.session.Session;
import com.yahoo.vespa.config.server.session.SessionRepository;
import com.yahoo.vespa.config.server.tenant.Tenant;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.filedistribution.FileDistributionConnectionPool;
import com.yahoo.vespa.filedistribution.FileDownloader;
import com.yahoo.vespa.filedistribution.FileReferenceDownload;

Expand All @@ -24,6 +28,7 @@
import java.util.logging.Logger;

import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.fileReferenceExistsOnDisk;
import static com.yahoo.vespa.config.server.filedistribution.FileDistributionUtil.getOtherConfigServersInCluster;
import static com.yahoo.vespa.config.server.session.Session.Status.ACTIVATE;
import static com.yahoo.vespa.config.server.session.Session.Status.PREPARE;

Expand All @@ -38,14 +43,16 @@
public class ApplicationPackageMaintainer extends ConfigServerMaintainer {

private static final Logger log = Logger.getLogger(ApplicationPackageMaintainer.class.getName());
private static final Duration fileDownloaderTimeout = Duration.ofSeconds(30);

private final File downloadDirectory;
private final Supervisor supervisor = new Supervisor(new Transport("filedistribution-pool")).setDropEmptyBuffers(true);
private final FileDownloader fileDownloader;

ApplicationPackageMaintainer(ApplicationRepository applicationRepository, Curator curator, Duration interval, FileServer fileServer) {
ApplicationPackageMaintainer(ApplicationRepository applicationRepository, Curator curator, Duration interval) {
super(applicationRepository, curator, applicationRepository.flagSource(), applicationRepository.clock(), interval, false);
this.downloadDirectory = new File(Defaults.getDefaults().underVespaHome(applicationRepository.configserverConfig().fileReferencesDir()));
this.fileDownloader = fileServer.downloader();
this.fileDownloader = createFileDownloader(applicationRepository, downloadDirectory, supervisor);
}

@Override
Expand Down Expand Up @@ -114,8 +121,18 @@ private Collection<RemoteSession> preparedAndActivatedSessions() {
.toList();
}

private static FileDownloader createFileDownloader(ApplicationRepository applicationRepository,
File downloadDirectory,
Supervisor supervisor) {
List<String> otherConfigServersInCluster = getOtherConfigServersInCluster(applicationRepository.configserverConfig());
ConfigSourceSet configSourceSet = new ConfigSourceSet(otherConfigServersInCluster);
ConnectionPool connectionPool = new FileDistributionConnectionPool(configSourceSet, supervisor);
return new FileDownloader(connectionPool, supervisor, downloadDirectory, fileDownloaderTimeout);
}

@Override
public void awaitShutdown() {
supervisor.transport().shutdown().join();
fileDownloader.close();
super.awaitShutdown();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.application.ConfigConvergenceChecker;
import com.yahoo.vespa.config.server.filedistribution.FileDirectory;
import com.yahoo.vespa.config.server.filedistribution.FileServer;
import com.yahoo.vespa.curator.Curator;

import java.time.Clock;
Expand All @@ -29,21 +28,19 @@ public class ConfigServerMaintenance {
private final Curator curator;
private final ConfigConvergenceChecker convergenceChecker;
private final FileDirectory fileDirectory;
private final FileServer fileServer;
private final Duration interval;

public ConfigServerMaintenance(ApplicationRepository applicationRepository, FileDirectory fileDirectory, FileServer fileServer) {
public ConfigServerMaintenance(ApplicationRepository applicationRepository, FileDirectory fileDirectory) {
this.applicationRepository = applicationRepository;
this.curator = applicationRepository.tenantRepository().getCurator();
this.convergenceChecker = applicationRepository.configConvergenceChecker();
this.fileDirectory = fileDirectory;
this.fileServer = fileServer;
this.interval = Duration.ofMinutes(applicationRepository.configserverConfig().maintainerIntervalMinutes());
}

public void startBeforeBootstrap() {
if (moreThanOneConfigServer())
maintainers.add(new ApplicationPackageMaintainer(applicationRepository, curator, Duration.ofSeconds(15), fileServer));
maintainers.add(new ApplicationPackageMaintainer(applicationRepository, curator, Duration.ofSeconds(15)));
maintainers.add(new TenantsMaintainer(applicationRepository, curator, interval, Clock.systemUTC()));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import com.yahoo.text.Utf8;
import com.yahoo.vespa.config.server.deploy.DeployTester;
import com.yahoo.vespa.config.server.filedistribution.FileDirectory;
import com.yahoo.vespa.config.server.filedistribution.FileServer;
import com.yahoo.vespa.config.server.rpc.RpcServer;
import com.yahoo.vespa.config.server.version.VersionState;
import com.yahoo.vespa.config.server.version.VespaVersion;
Expand Down Expand Up @@ -259,17 +258,13 @@ private Bootstrapper createBootstrapper(DeployTester tester,
VersionState versionState) {
StateMonitor stateMonitor = StateMonitor.createForTesting();
VipStatus vipStatus = createVipStatus(stateMonitor);
ConfigserverConfig configserverConfig = tester.applicationRepository().configserverConfig();
FileDirectory fileDirectory = new FileDirectory(configserverConfig);
FileServer fileServer = new FileServer(configserverConfig, fileDirectory);
return new Bootstrapper(tester.applicationRepository(),
rpcServer,
versionState,
stateMonitor,
vipStatus,
vipStatusMode,
fileDirectory,
fileServer);
new FileDirectory(tester.applicationRepository().configserverConfig()));
}

private void waitUntil(BooleanSupplier booleanSupplier, String messageIfWaitingFails) throws InterruptedException {
Expand Down Expand Up @@ -368,10 +363,8 @@ public Bootstrapper(ApplicationRepository applicationRepository,
StateMonitor stateMonitor,
VipStatus vipStatus,
VipStatusMode vipStatusMode,
FileDirectory fileDirectory,
FileServer fileServer) {
super(applicationRepository, server, versionState, stateMonitor, vipStatus, CONTINUE, vipStatusMode,
fileDirectory, fileServer);
FileDirectory fileDirectory) {
super(applicationRepository, server, versionState, stateMonitor, vipStatus, CONTINUE, vipStatusMode, fileDirectory);
}

@Override
Expand Down

0 comments on commit 32def7a

Please sign in to comment.