mirror of
https://github.com/overte-org/overte.git
synced 2025-04-12 18:42:12 +02:00
Merge pull request #13241 from Atlante45/fix/corrupted-backup
Don't mark backups from domains with no asset server corrupted
This commit is contained in:
commit
743cb7c7e8
4 changed files with 22 additions and 15 deletions
|
@ -34,8 +34,9 @@ static const chrono::minutes MAX_REFRESH_TIME { 5 };
|
||||||
Q_DECLARE_LOGGING_CATEGORY(asset_backup)
|
Q_DECLARE_LOGGING_CATEGORY(asset_backup)
|
||||||
Q_LOGGING_CATEGORY(asset_backup, "hifi.asset-backup");
|
Q_LOGGING_CATEGORY(asset_backup, "hifi.asset-backup");
|
||||||
|
|
||||||
AssetsBackupHandler::AssetsBackupHandler(const QString& backupDirectory) :
|
AssetsBackupHandler::AssetsBackupHandler(const QString& backupDirectory, bool assetServerEnabled) :
|
||||||
_assetsDirectory(backupDirectory + ASSETS_DIR)
|
_assetsDirectory(backupDirectory + ASSETS_DIR),
|
||||||
|
_assetServerEnabled(assetServerEnabled)
|
||||||
{
|
{
|
||||||
// Make sure the asset directory exists.
|
// Make sure the asset directory exists.
|
||||||
QDir(_assetsDirectory).mkpath(".");
|
QDir(_assetsDirectory).mkpath(".");
|
||||||
|
@ -53,6 +54,7 @@ void AssetsBackupHandler::setupRefreshTimer() {
|
||||||
auto nodeList = DependencyManager::get<LimitedNodeList>();
|
auto nodeList = DependencyManager::get<LimitedNodeList>();
|
||||||
QObject::connect(nodeList.data(), &LimitedNodeList::nodeActivated, this, [this](SharedNodePointer node) {
|
QObject::connect(nodeList.data(), &LimitedNodeList::nodeActivated, this, [this](SharedNodePointer node) {
|
||||||
if (node->getType() == NodeType::AssetServer) {
|
if (node->getType() == NodeType::AssetServer) {
|
||||||
|
assert(_assetServerEnabled);
|
||||||
// run immediately for the first time.
|
// run immediately for the first time.
|
||||||
_mappingsRefreshTimer.start(0);
|
_mappingsRefreshTimer.start(0);
|
||||||
}
|
}
|
||||||
|
@ -233,12 +235,12 @@ void AssetsBackupHandler::createBackup(const QString& backupName, QuaZip& zip) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_lastMappingsRefresh.time_since_epoch().count() == 0) {
|
if (_assetServerEnabled && _lastMappingsRefresh.time_since_epoch().count() == 0) {
|
||||||
qCWarning(asset_backup) << "Current mappings not yet loaded.";
|
qCWarning(asset_backup) << "Current mappings not yet loaded.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((p_high_resolution_clock::now() - _lastMappingsRefresh) > MAX_REFRESH_TIME) {
|
if (_assetServerEnabled && (p_high_resolution_clock::now() - _lastMappingsRefresh) > MAX_REFRESH_TIME) {
|
||||||
qCWarning(asset_backup) << "Backing up asset mappings that might be stale.";
|
qCWarning(asset_backup) << "Backing up asset mappings that might be stale.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ class AssetsBackupHandler : public QObject, public BackupHandlerInterface {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AssetsBackupHandler(const QString& backupDirectory);
|
AssetsBackupHandler(const QString& backupDirectory, bool assetServerEnabled);
|
||||||
|
|
||||||
std::pair<bool, float> isAvailable(const QString& backupName) override;
|
std::pair<bool, float> isAvailable(const QString& backupName) override;
|
||||||
std::pair<bool, float> getRecoveryStatus() override;
|
std::pair<bool, float> getRecoveryStatus() override;
|
||||||
|
@ -65,6 +65,7 @@ private:
|
||||||
void updateMappings();
|
void updateMappings();
|
||||||
|
|
||||||
QString _assetsDirectory;
|
QString _assetsDirectory;
|
||||||
|
bool _assetServerEnabled { false };
|
||||||
|
|
||||||
QTimer _mappingsRefreshTimer;
|
QTimer _mappingsRefreshTimer;
|
||||||
p_high_resolution_clock::time_point _lastMappingsRefresh;
|
p_high_resolution_clock::time_point _lastMappingsRefresh;
|
||||||
|
|
|
@ -307,7 +307,7 @@ DomainServer::DomainServer(int argc, char* argv[]) :
|
||||||
|
|
||||||
connect(_contentManager.get(), &DomainContentBackupManager::started, _contentManager.get(), [this](){
|
connect(_contentManager.get(), &DomainContentBackupManager::started, _contentManager.get(), [this](){
|
||||||
_contentManager->addBackupHandler(BackupHandlerPointer(new EntitiesBackupHandler(getEntitiesFilePath(), getEntitiesReplacementFilePath())));
|
_contentManager->addBackupHandler(BackupHandlerPointer(new EntitiesBackupHandler(getEntitiesFilePath(), getEntitiesReplacementFilePath())));
|
||||||
_contentManager->addBackupHandler(BackupHandlerPointer(new AssetsBackupHandler(getContentBackupDir())));
|
_contentManager->addBackupHandler(BackupHandlerPointer(new AssetsBackupHandler(getContentBackupDir(), isAssetServerEnabled())));
|
||||||
_contentManager->addBackupHandler(BackupHandlerPointer(new ContentSettingsBackupHandler(_settingsManager)));
|
_contentManager->addBackupHandler(BackupHandlerPointer(new ContentSettingsBackupHandler(_settingsManager)));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -991,15 +991,11 @@ void DomainServer::populateDefaultStaticAssignmentsExcludingTypes(const QSet<Ass
|
||||||
defaultedType = static_cast<Assignment::Type>(static_cast<int>(defaultedType) + 1)) {
|
defaultedType = static_cast<Assignment::Type>(static_cast<int>(defaultedType) + 1)) {
|
||||||
if (!excludedTypes.contains(defaultedType) && defaultedType != Assignment::AgentType) {
|
if (!excludedTypes.contains(defaultedType) && defaultedType != Assignment::AgentType) {
|
||||||
|
|
||||||
if (defaultedType == Assignment::AssetServerType) {
|
// Make sure the asset-server is enabled before adding it here.
|
||||||
// Make sure the asset-server is enabled before adding it here.
|
// Initially we do not assign it by default so we can test it in HF domains first
|
||||||
// Initially we do not assign it by default so we can test it in HF domains first
|
if (defaultedType == Assignment::AssetServerType && !isAssetServerEnabled()) {
|
||||||
static const QString ASSET_SERVER_ENABLED_KEYPATH = "asset_server.enabled";
|
// skip to the next iteraion if asset-server isn't enabled
|
||||||
|
continue;
|
||||||
if (!_settingsManager.valueOrDefaultValueForKeyPath(ASSET_SERVER_ENABLED_KEYPATH).toBool()) {
|
|
||||||
// skip to the next iteration if asset-server isn't enabled
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// type has not been set from a command line or config file config, use the default
|
// type has not been set from a command line or config file config, use the default
|
||||||
|
@ -2946,6 +2942,12 @@ bool DomainServer::shouldReplicateNode(const Node& node) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool DomainServer::isAssetServerEnabled() {
|
||||||
|
static const QString ASSET_SERVER_ENABLED_KEYPATH = "asset_server.enabled";
|
||||||
|
return _settingsManager.valueOrDefaultValueForKeyPath(ASSET_SERVER_ENABLED_KEYPATH).toBool();
|
||||||
|
}
|
||||||
|
|
||||||
void DomainServer::nodeAdded(SharedNodePointer node) {
|
void DomainServer::nodeAdded(SharedNodePointer node) {
|
||||||
// we don't use updateNodeWithData, so add the DomainServerNodeData to the node here
|
// we don't use updateNodeWithData, so add the DomainServerNodeData to the node here
|
||||||
node->setLinkedData(std::unique_ptr<DomainServerNodeData> { new DomainServerNodeData() });
|
node->setLinkedData(std::unique_ptr<DomainServerNodeData> { new DomainServerNodeData() });
|
||||||
|
|
|
@ -72,6 +72,8 @@ public:
|
||||||
|
|
||||||
static const QString REPLACEMENT_FILE_EXTENSION;
|
static const QString REPLACEMENT_FILE_EXTENSION;
|
||||||
|
|
||||||
|
bool isAssetServerEnabled();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
/// Called by NodeList to inform us a node has been added
|
/// Called by NodeList to inform us a node has been added
|
||||||
void nodeAdded(SharedNodePointer node);
|
void nodeAdded(SharedNodePointer node);
|
||||||
|
|
Loading…
Reference in a new issue