forked from Qortal/qortal
Added scheduled repository maintenance feature. Currently disabled by default.
This commit is contained in:
parent
0d6409098f
commit
b7e9af100a
@ -155,6 +155,7 @@ public class Controller extends Thread {
|
||||
};
|
||||
|
||||
private long repositoryBackupTimestamp = startTime; // ms
|
||||
private long repositoryMaintenanceTimestamp = startTime; // ms
|
||||
private long repositoryCheckpointTimestamp = startTime; // ms
|
||||
private long ntpCheckTimestamp = startTime; // ms
|
||||
private long deleteExpiredTimestamp = startTime + DELETE_EXPIRED_INTERVAL; // ms
|
||||
@ -524,6 +525,7 @@ public class Controller extends Thread {
|
||||
Thread.currentThread().setName("Controller");
|
||||
|
||||
final long repositoryBackupInterval = Settings.getInstance().getRepositoryBackupInterval();
|
||||
final long repositoryMaintenanceInterval = Settings.getInstance().getRepositoryMaintenanceInterval();
|
||||
final long repositoryCheckpointInterval = Settings.getInstance().getRepositoryCheckpointInterval();
|
||||
|
||||
// Start executor service for trimming or pruning
|
||||
@ -595,6 +597,28 @@ public class Controller extends Thread {
|
||||
}
|
||||
}
|
||||
|
||||
// Give repository a chance to perform maintenance (if enabled)
|
||||
if (repositoryMaintenanceInterval > 0 && now >= repositoryMaintenanceTimestamp + repositoryMaintenanceInterval) {
|
||||
repositoryMaintenanceTimestamp = now + repositoryMaintenanceInterval;
|
||||
|
||||
if (Settings.getInstance().getShowMaintenanceNotification())
|
||||
SysTray.getInstance().showMessage(Translator.INSTANCE.translate("SysTray", "DB_MAINTENANCE"),
|
||||
Translator.INSTANCE.translate("SysTray", "PERFORMING_DB_MAINTENANCE"),
|
||||
MessageType.INFO);
|
||||
|
||||
LOGGER.info("Starting scheduled repository maintenance. This can take a while...");
|
||||
try (final Repository repository = RepositoryManager.getRepository()) {
|
||||
|
||||
// Timeout if the database isn't ready for maintenance after 60 seconds
|
||||
long timeout = 60 * 1000L;
|
||||
repository.performPeriodicMaintenance(timeout);
|
||||
|
||||
LOGGER.info("Scheduled repository maintenance completed");
|
||||
} catch (DataException | TimeoutException e) {
|
||||
LOGGER.error("Scheduled repository maintenance failed", e);
|
||||
}
|
||||
}
|
||||
|
||||
// Prune stuck/slow/old peers
|
||||
try {
|
||||
Network.getInstance().prunePeers();
|
||||
|
@ -89,6 +89,10 @@ public class Settings {
|
||||
private long repositoryBackupInterval = 0; // ms
|
||||
/** Whether to show a notification when we backup repository. */
|
||||
private boolean showBackupNotification = false;
|
||||
/** How long between repository maintenance attempts (ms), or 0 if disabled. */
|
||||
private long repositoryMaintenanceInterval = 0; // ms
|
||||
/** Whether to show a notification when we run scheduled maintenance. */
|
||||
private boolean showMaintenanceNotification = false;
|
||||
/** How long between repository checkpoints (ms). */
|
||||
private long repositoryCheckpointInterval = 60 * 60 * 1000L; // 1 hour (ms) default
|
||||
/** Whether to show a notification when we perform repository 'checkpoint'. */
|
||||
@ -558,6 +562,14 @@ public class Settings {
|
||||
return this.showBackupNotification;
|
||||
}
|
||||
|
||||
public long getRepositoryMaintenanceInterval() {
|
||||
return this.repositoryMaintenanceInterval;
|
||||
}
|
||||
|
||||
public boolean getShowMaintenanceNotification() {
|
||||
return this.showMaintenanceNotification;
|
||||
}
|
||||
|
||||
public long getRepositoryCheckpointInterval() {
|
||||
return this.repositoryCheckpointInterval;
|
||||
}
|
||||
|
@ -21,6 +21,8 @@ CREATING_BACKUP_OF_DB_FILES = Creating backup of database files...
|
||||
|
||||
DB_BACKUP = Database Backup
|
||||
|
||||
DB_MAINTENANCE = Database Maintenance
|
||||
|
||||
DB_CHECKPOINT = Database Checkpoint
|
||||
|
||||
EXIT = Exit
|
||||
@ -33,8 +35,10 @@ OPEN_UI = Open UI
|
||||
|
||||
PERFORMING_DB_CHECKPOINT = Saving uncommitted database changes...
|
||||
|
||||
PERFORMING_DB_MAINTENANCE = Performing scheduled maintenance...
|
||||
|
||||
SYNCHRONIZE_CLOCK = Synchronize clock
|
||||
|
||||
SYNCHRONIZING_BLOCKCHAIN = Synchronizing
|
||||
|
||||
SYNCHRONIZING_CLOCK = Synchronizing clock
|
||||
SYNCHRONIZING_CLOCK = Synchronizing clock
|
||||
|
@ -21,6 +21,8 @@ CREATING_BACKUP_OF_DB_FILES = Luodaan varmuuskopio tietokannan tiedostoista...
|
||||
|
||||
DB_BACKUP = Tietokannan varmuuskopio
|
||||
|
||||
DB_MAINTENANCE = Database Maintenance
|
||||
|
||||
DB_CHECKPOINT = Tietokannan varmistuspiste
|
||||
|
||||
EXIT = Pois
|
||||
@ -33,8 +35,10 @@ OPEN_UI = Avaa UI
|
||||
|
||||
PERFORMING_DB_CHECKPOINT = Tallentaa kommittoidut tietokantamuutokset...
|
||||
|
||||
PERFORMING_DB_MAINTENANCE = Performing scheduled maintenance...
|
||||
|
||||
SYNCHRONIZE_CLOCK = Synkronisoi kello
|
||||
|
||||
SYNCHRONIZING_BLOCKCHAIN = Synkronisoi
|
||||
|
||||
SYNCHRONIZING_CLOCK = Synkronisoi kelloa
|
||||
SYNCHRONIZING_CLOCK = Synkronisoi kelloa
|
||||
|
@ -23,6 +23,8 @@ CREATING_BACKUP_OF_DB_FILES = Adatbázis fájlok biztonsági mentésének létre
|
||||
|
||||
DB_BACKUP = Adatbázis biztonsági mentése
|
||||
|
||||
DB_MAINTENANCE = Database Maintenance
|
||||
|
||||
DB_CHECKPOINT = Adatbázis-ellenőrzőpont
|
||||
|
||||
EXIT = Kilépés
|
||||
@ -35,8 +37,10 @@ OPEN_UI = Felhasználói eszköz megnyitása
|
||||
|
||||
PERFORMING_DB_CHECKPOINT = Mentetlen adatbázis-módosítások mentése...
|
||||
|
||||
PERFORMING_DB_MAINTENANCE = Performing scheduled maintenance...
|
||||
|
||||
SYNCHRONIZE_CLOCK = Óra-szinkronizálás megkezdése
|
||||
|
||||
SYNCHRONIZING_BLOCKCHAIN = Szinkronizálás
|
||||
|
||||
SYNCHRONIZING_CLOCK = Óra-szinkronizálás folyamatban
|
||||
SYNCHRONIZING_CLOCK = Óra-szinkronizálás folyamatban
|
||||
|
@ -22,6 +22,8 @@ CREATING_BACKUP_OF_DB_FILES = Creazione di backup dei file di database...
|
||||
|
||||
DB_BACKUP = Backup del database
|
||||
|
||||
DB_MAINTENANCE = Database Maintenance
|
||||
|
||||
DB_CHECKPOINT = Punto di controllo del database
|
||||
|
||||
EXIT = Uscita
|
||||
@ -34,8 +36,10 @@ OPEN_UI = Apri UI
|
||||
|
||||
PERFORMING_DB_CHECKPOINT = Salvataggio delle modifiche al database non salvate...
|
||||
|
||||
PERFORMING_DB_MAINTENANCE = Performing scheduled maintenance...
|
||||
|
||||
SYNCHRONIZE_CLOCK = Sincronizza orologio
|
||||
|
||||
SYNCHRONIZING_BLOCKCHAIN = Sincronizzando
|
||||
|
||||
SYNCHRONIZING_CLOCK = Sincronizzando orologio
|
||||
SYNCHRONIZING_CLOCK = Sincronizzando orologio
|
||||
|
@ -33,8 +33,10 @@ OPEN_UI = Open UI
|
||||
|
||||
PERFORMING_DB_CHECKPOINT = Nieuwe veranderingen aan database worden opgeslagen...
|
||||
|
||||
PERFORMING_DB_MAINTENANCE = Performing scheduled maintenance...
|
||||
|
||||
SYNCHRONIZE_CLOCK = Synchronizeer klok
|
||||
|
||||
SYNCHRONIZING_BLOCKCHAIN = Aan het synchronizeren
|
||||
|
||||
SYNCHRONIZING_CLOCK = Klok wordt gesynchronizeerd
|
||||
SYNCHRONIZING_CLOCK = Klok wordt gesynchronizeerd
|
||||
|
@ -21,6 +21,8 @@ CREATING_BACKUP_OF_DB_FILES = Создание резервной копии ф
|
||||
|
||||
DB_BACKUP = Резервное копирование базы данных
|
||||
|
||||
DB_MAINTENANCE = Database Maintenance
|
||||
|
||||
EXIT = Выход
|
||||
|
||||
MINTING_DISABLED = Чеканка отключена
|
||||
@ -31,8 +33,10 @@ OPEN_UI = Открыть пользовательский интерфейс
|
||||
|
||||
PERFORMING_DB_CHECKPOINT = Saving uncommitted database changes...
|
||||
|
||||
PERFORMING_DB_MAINTENANCE = Performing scheduled maintenance...
|
||||
|
||||
SYNCHRONIZE_CLOCK = Синхронизировать время
|
||||
|
||||
SYNCHRONIZING_BLOCKCHAIN = Синхронизация цепи
|
||||
|
||||
SYNCHRONIZING_CLOCK = Проверка времени
|
||||
SYNCHRONIZING_CLOCK = Проверка времени
|
||||
|
@ -33,8 +33,10 @@ OPEN_UI = 开启Qortal界面
|
||||
|
||||
PERFORMING_DB_CHECKPOINT = Saving uncommitted database changes...
|
||||
|
||||
PERFORMING_DB_MAINTENANCE = Performing scheduled maintenance...
|
||||
|
||||
SYNCHRONIZE_CLOCK = 同步时钟
|
||||
|
||||
SYNCHRONIZING_BLOCKCHAIN = 正在同步区块链
|
||||
|
||||
SYNCHRONIZING_CLOCK = 正在同步时钟
|
||||
SYNCHRONIZING_CLOCK = 正在同步时钟
|
||||
|
Loading…
x
Reference in New Issue
Block a user