Discovery: Ensure selective sync lists are sorted #6958

This commit is contained in:
Christian Kamm 2019-01-10 10:19:27 +01:00 committed by ckamm
parent ad81454cdc
commit 55eda59d05
3 changed files with 21 additions and 4 deletions

View File

@ -186,6 +186,18 @@ void DiscoveryPhase::startJob(ProcessDirectoryJob *job)
job->start();
}
void DiscoveryPhase::setSelectiveSyncBlackList(const QStringList &list)
{
_selectiveSyncBlackList = list;
std::sort(_selectiveSyncBlackList.begin(), _selectiveSyncBlackList.end());
}
void DiscoveryPhase::setSelectiveSyncWhiteList(const QStringList &list)
{
_selectiveSyncWhiteList = list;
std::sort(_selectiveSyncWhiteList.begin(), _selectiveSyncWhiteList.end());
}
void DiscoveryPhase::scheduleMoreJobs()
{
auto limit = qMax(1, _syncOptions._parallelNetworkJobs);

View File

@ -136,6 +136,10 @@ class DiscoveryPhase : public QObject
QMap<QString, QString> _renamedItems; // map source -> destinations
int _currentlyActiveJobs = 0;
// both must contain a sorted list
QStringList _selectiveSyncBlackList;
QStringList _selectiveSyncWhiteList;
void scheduleMoreJobs();
bool isInSelectiveSyncBlackList(const QString &path) const;
@ -167,8 +171,6 @@ public:
SyncJournalDb *_statedb;
AccountPtr _account;
SyncOptions _syncOptions;
QStringList _selectiveSyncBlackList;
QStringList _selectiveSyncWhiteList;
ExcludedFiles *_excludes;
QRegExp _invalidFilenameRx; // FIXME: maybe move in ExcludedFiles
QStringList _serverBlacklistedFiles; // The blacklist from the capabilities
@ -177,6 +179,9 @@ public:
void startJob(ProcessDirectoryJob *);
void setSelectiveSyncBlackList(const QStringList &list);
void setSelectiveSyncWhiteList(const QStringList &list);
// output
QByteArray _dataFingerprint;

View File

@ -517,8 +517,8 @@ void SyncEngine::startSync()
_discoveryPhase->_remoteFolder+='/';
_discoveryPhase->_syncOptions = _syncOptions;
_discoveryPhase->_shouldDiscoverLocaly = [this](const QString &s) { return shouldDiscoverLocally(s); };
_discoveryPhase->_selectiveSyncBlackList = selectiveSyncBlackList;
_discoveryPhase->_selectiveSyncWhiteList = _journal->getSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, &ok);
_discoveryPhase->setSelectiveSyncBlackList(selectiveSyncBlackList);
_discoveryPhase->setSelectiveSyncWhiteList(_journal->getSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, &ok));
if (!ok) {
qCWarning(lcEngine) << "Unable to read selective sync list, aborting.";
syncError(tr("Unable to read from the sync journal."));