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 Kevin Ottens
parent 22255e4976
commit e774c6c739
No known key found for this signature in database
GPG key ID: 074BBBCB8DECC9E2
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

@ -135,6 +135,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;
@ -166,8 +170,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
@ -176,6 +178,9 @@ public:
void startJob(ProcessDirectoryJob *);
void setSelectiveSyncBlackList(const QStringList &list);
void setSelectiveSyncWhiteList(const QStringList &list);
// output
QByteArray _dataFingerprint;

View file

@ -586,8 +586,8 @@ void SyncEngine::slotStartDiscovery()
_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."));