mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 19:21:16 +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(".");
|
QDir(_backupDirectory).mkpath(".");
|
||||||
|
|
||||||
parseBackupRules(backupRules);
|
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) {
|
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) {
|
ConsolidatedBackupInfo DomainContentBackupManager::consolidateBackup(QString fileName) {
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock { _consolidatedBackupsMutex };
|
std::lock_guard<std::mutex> lock { _consolidatedBackupsMutex };
|
||||||
|
@ -511,7 +538,8 @@ ConsolidatedBackupInfo DomainContentBackupManager::consolidateBackup(QString fil
|
||||||
return {
|
return {
|
||||||
ConsolidatedBackupInfo::CONSOLIDATING,
|
ConsolidatedBackupInfo::CONSOLIDATING,
|
||||||
"",
|
"",
|
||||||
""
|
"",
|
||||||
|
std::chrono::system_clock::now()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -537,7 +565,8 @@ void DomainContentBackupManager::consolidateBackupInternal(QString fileName) {
|
||||||
_consolidatedBackups[fileName] = {
|
_consolidatedBackups[fileName] = {
|
||||||
ConsolidatedBackupInfo::CONSOLIDATING,
|
ConsolidatedBackupInfo::CONSOLIDATING,
|
||||||
"",
|
"",
|
||||||
""
|
"",
|
||||||
|
std::chrono::system_clock::now()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
@ -52,6 +53,7 @@ struct ConsolidatedBackupInfo {
|
||||||
State state;
|
State state;
|
||||||
QString error;
|
QString error;
|
||||||
QString absoluteFilePath;
|
QString absoluteFilePath;
|
||||||
|
std::chrono::system_clock::time_point createdAt;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DomainContentBackupManager : public GenericThread {
|
class DomainContentBackupManager : public GenericThread {
|
||||||
|
@ -108,9 +110,12 @@ protected:
|
||||||
bool recoverFromBackupZip(const QString& backupName, QuaZip& backupZip);
|
bool recoverFromBackupZip(const QString& backupName, QuaZip& backupZip);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void removeOldConsolidatedBackups();
|
||||||
void consolidateBackupInternal(QString fileName);
|
void consolidateBackupInternal(QString fileName);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QTimer _consolidatedBackupCleanupTimer;
|
||||||
|
|
||||||
const QString _consolidatedBackupDirectory;
|
const QString _consolidatedBackupDirectory;
|
||||||
const QString _backupDirectory;
|
const QString _backupDirectory;
|
||||||
std::vector<BackupHandlerPointer> _backupHandlers;
|
std::vector<BackupHandlerPointer> _backupHandlers;
|
||||||
|
|
Loading…
Reference in a new issue