mirror of
https://github.com/AleziaKurdis/overte.git
synced 2025-04-12 07:23:12 +02:00
Add removal of old consolidated backups
This commit is contained in:
parent
dc694fb0b7
commit
5485f60677
2 changed files with 36 additions and 2 deletions
|
@ -64,6 +64,11 @@ DomainContentBackupManager::DomainContentBackupManager(const QString& backupDire
|
|||
QDir(_backupDirectory).mkpath(".");
|
||||
|
||||
parseBackupRules(backupRules);
|
||||
|
||||
constexpr int CONSOLIDATED_BACKUP_CLEANER_INTERVAL_MSECS = 30 * 1000;
|
||||
_consolidatedBackupCleanupTimer.setInterval(CONSOLIDATED_BACKUP_CLEANER_INTERVAL_MSECS);
|
||||
connect(&_consolidatedBackupCleanupTimer, &QTimer::timeout, this, &DomainContentBackupManager::removeOldConsolidatedBackups);
|
||||
_consolidatedBackupCleanupTimer.start();
|
||||
}
|
||||
|
||||
void DomainContentBackupManager::parseBackupRules(const QVariantList& backupRules) {
|
||||
|
@ -498,6 +503,28 @@ void DomainContentBackupManager::backup() {
|
|||
}
|
||||
}
|
||||
|
||||
void DomainContentBackupManager::removeOldConsolidatedBackups() {
|
||||
constexpr std::chrono::minutes MAX_TIME_TO_KEEP_CONSOLIDATED_BACKUP { 30 };
|
||||
auto now = std::chrono::system_clock::now();
|
||||
auto it = _consolidatedBackups.begin();
|
||||
while (it != _consolidatedBackups.end()) {
|
||||
auto& backup = it->second;
|
||||
auto diff = now - backup.createdAt;
|
||||
if (diff > MAX_TIME_TO_KEEP_CONSOLIDATED_BACKUP) {
|
||||
QFile oldBackup(backup.absoluteFilePath);
|
||||
if (!oldBackup.exists() || oldBackup.remove()) {
|
||||
qDebug() << "Removed old consolidated backup: " << backup.absoluteFilePath;
|
||||
it = _consolidatedBackups.erase(it);
|
||||
} else {
|
||||
qDebug() << "Failed to remove old consolidated backup: " << backup.absoluteFilePath;
|
||||
it++;
|
||||
}
|
||||
} else {
|
||||
it++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ConsolidatedBackupInfo DomainContentBackupManager::consolidateBackup(QString fileName) {
|
||||
{
|
||||
std::lock_guard<std::mutex> lock { _consolidatedBackupsMutex };
|
||||
|
@ -511,7 +538,8 @@ ConsolidatedBackupInfo DomainContentBackupManager::consolidateBackup(QString fil
|
|||
return {
|
||||
ConsolidatedBackupInfo::CONSOLIDATING,
|
||||
"",
|
||||
""
|
||||
"",
|
||||
std::chrono::system_clock::now()
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -537,7 +565,8 @@ void DomainContentBackupManager::consolidateBackupInternal(QString fileName) {
|
|||
_consolidatedBackups[fileName] = {
|
||||
ConsolidatedBackupInfo::CONSOLIDATING,
|
||||
"",
|
||||
""
|
||||
"",
|
||||
std::chrono::system_clock::now()
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <QString>
|
||||
#include <QVector>
|
||||
#include <QDateTime>
|
||||
#include <QTimer>
|
||||
|
||||
#include <mutex>
|
||||
#include <unordered_map>
|
||||
|
@ -52,6 +53,7 @@ struct ConsolidatedBackupInfo {
|
|||
State state;
|
||||
QString error;
|
||||
QString absoluteFilePath;
|
||||
std::chrono::system_clock::time_point createdAt;
|
||||
};
|
||||
|
||||
class DomainContentBackupManager : public GenericThread {
|
||||
|
@ -108,9 +110,12 @@ protected:
|
|||
bool recoverFromBackupZip(const QString& backupName, QuaZip& backupZip);
|
||||
|
||||
private slots:
|
||||
void removeOldConsolidatedBackups();
|
||||
void consolidateBackupInternal(QString fileName);
|
||||
|
||||
private:
|
||||
QTimer _consolidatedBackupCleanupTimer;
|
||||
|
||||
const QString _consolidatedBackupDirectory;
|
||||
const QString _backupDirectory;
|
||||
std::vector<BackupHandlerPointer> _backupHandlers;
|
||||
|
|
Loading…
Reference in a new issue