SHA256
94 lines
2.4 KiB
Java
94 lines
2.4 KiB
Java
package server.sync;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import sync.service.SolanaUsersSyncService;
|
|
import utils.config.AppConfig;
|
|
|
|
public final class SolanaUsersSyncStartupService {
|
|
|
|
private static final Logger log =
|
|
LoggerFactory.getLogger(
|
|
SolanaUsersSyncStartupService.class
|
|
);
|
|
|
|
private static volatile SolanaUsersSyncService service;
|
|
|
|
private SolanaUsersSyncStartupService() {
|
|
}
|
|
|
|
public static synchronized void startOrThrow()
|
|
throws Exception {
|
|
|
|
if (service != null) {
|
|
return;
|
|
}
|
|
|
|
AppConfig serverConfig =
|
|
AppConfig.getInstance();
|
|
|
|
if (!sync.config.AppConfig.isEnabled(serverConfig)) {
|
|
log.info(
|
|
"Solana users sync is disabled. Param {} is false or absent.",
|
|
sync.config.AppConfig.ENABLED_KEY
|
|
);
|
|
return;
|
|
}
|
|
|
|
sync.config.AppConfig syncConfig =
|
|
sync.config.AppConfig.fromServerConfig(
|
|
serverConfig
|
|
);
|
|
|
|
service =
|
|
new SolanaUsersSyncService(
|
|
syncConfig
|
|
);
|
|
|
|
Runtime.getRuntime()
|
|
.addShutdownHook(
|
|
new Thread(
|
|
SolanaUsersSyncStartupService::closeQuietly,
|
|
"solana-users-sync-shutdown"
|
|
)
|
|
);
|
|
|
|
log.info(
|
|
"Starting Solana users sync before remaining server startup..."
|
|
);
|
|
|
|
service.start();
|
|
try {
|
|
service.awaitReady();
|
|
} catch (Exception exception) {
|
|
log.warn(
|
|
"Solana users sync is not ready yet; continuing server startup and leaving sync service running",
|
|
exception
|
|
);
|
|
return;
|
|
}
|
|
|
|
log.info(
|
|
"Solana users sync is READY. Server startup may continue."
|
|
);
|
|
}
|
|
|
|
public static synchronized void closeQuietly() {
|
|
|
|
if (service == null) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
service.close();
|
|
} catch (Exception exception) {
|
|
log.warn(
|
|
"Failed to close Solana users sync service cleanly",
|
|
exception
|
|
);
|
|
} finally {
|
|
service = null;
|
|
}
|
|
}
|
|
}
|