diff options
-rw-r--r-- | src/common/syncjournaldb.cpp | 23 | ||||
-rw-r--r-- | src/common/syncjournaldb.h | 3 | ||||
-rw-r--r-- | src/libsync/discovery.cpp | 2 | ||||
-rw-r--r-- | src/libsync/owncloudpropagator.cpp | 2 | ||||
-rw-r--r-- | src/libsync/syncengine.cpp | 9 | ||||
-rw-r--r-- | test/testsyncjournaldb.cpp | 2 |
6 files changed, 8 insertions, 33 deletions
diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp index 4c72b802e..5b8b7287f 100644 --- a/src/common/syncjournaldb.cpp +++ b/src/common/syncjournaldb.cpp @@ -1217,29 +1217,6 @@ bool SyncJournalDb::updateLocalMetadata(const QString &filename, return _setFileRecordLocalMetadataQuery.exec(); } -bool SyncJournalDb::setFileRecordMetadata(const SyncJournalFileRecord &record) -{ - SyncJournalFileRecord existing; - if (!getFileRecord(record._path, &existing)) - return false; - - // If there's no existing record, just insert the new one. - if (!existing.isValid()) { - return setFileRecord(record); - } - - // Update the metadata on the existing record. - existing._inode = record._inode; - existing._modtime = record._modtime; - existing._type = record._type; - existing._etag = record._etag; - existing._fileId = record._fileId; - existing._remotePerm = record._remotePerm; - existing._fileSize = record._fileSize; - existing._serverHasIgnoredFiles = record._serverHasIgnoredFiles; - return setFileRecord(existing); -} - static void toDownloadInfo(SqlQuery &query, SyncJournalDb::DownloadInfo *res) { bool ok = true; diff --git a/src/common/syncjournaldb.h b/src/common/syncjournaldb.h index f6932092f..c17cefa4a 100644 --- a/src/common/syncjournaldb.h +++ b/src/common/syncjournaldb.h @@ -63,9 +63,6 @@ public: bool listFilesInPath(const QByteArray &path, const std::function<void(const SyncJournalFileRecord&)> &rowCallback); bool setFileRecord(const SyncJournalFileRecord &record); - /// Like setFileRecord, but preserves checksums - bool setFileRecordMetadata(const SyncJournalFileRecord &record); - bool deleteFileRecord(const QString &filename, bool recursively = false); bool updateFileRecordChecksum(const QString &filename, const QByteArray &contentChecksum, diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index cd63d81b5..a97ece0f2 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -876,7 +876,7 @@ void ProcessDirectoryJob::processFileConflict(const SyncFileItemPtr &item, Proce rec._fileSize = serverEntry.size; rec._remotePerm = serverEntry.remotePerm; rec._checksumHeader = serverEntry.checksumHeader; - _discoveryData->_statedb->setFileRecordMetadata(rec); + _discoveryData->_statedb->setFileRecord(rec); } return; } diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index 609bf70fc..4cf35ffe7 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -976,7 +976,7 @@ void PropagateDirectory::slotSubJobsFinished(SyncFileItem::Status status) } } SyncJournalFileRecord record = _item->toSyncJournalFileRecordWithInode(propagator()->_localDir + _item->_file); - bool ok = propagator()->_journal->setFileRecordMetadata(record); + bool ok = propagator()->_journal->setFileRecord(record); if (!ok) { status = _item->_status = SyncFileItem::FatalError; _item->_errorString = tr("Error writing metadata to the database"); diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index a52e381cb..3c66fc749 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -320,15 +320,16 @@ void OCC::SyncEngine::slotItemDiscovered(const OCC::SyncFileItemPtr &item) const bool isReadOnly = !item->_remotePerm.isNull() && !item->_remotePerm.hasPermission(RemotePermissions::CanWrite); FileSystem::setFileReadOnlyWeak(filePath, isReadOnly); } - - _journal->setFileRecordMetadata(item->toSyncJournalFileRecordWithInode(filePath)); + auto rec = item->toSyncJournalFileRecordWithInode(filePath); + if (rec._checksumHeader.isEmpty()) + rec._checksumHeader = prev._checksumHeader; + rec._serverHasIgnoredFiles |= prev._serverHasIgnoredFiles; + _journal->setFileRecord(rec); // This might have changed the shared flag, so we must notify SyncFileStatusTracker for example emit itemCompleted(item); } else { - // The local tree is walked first and doesn't have all the info from the server. // Update only outdated data from the disk. - // FIXME! I think this is no longer the case so a setFileRecordMetadata should work _journal->updateLocalMetadata(item->_file, item->_modtime, item->_size, item->_inode); } _hasNoneFiles = true; diff --git a/test/testsyncjournaldb.cpp b/test/testsyncjournaldb.cpp index 4748f64f7..79bd29fe9 100644 --- a/test/testsyncjournaldb.cpp +++ b/test/testsyncjournaldb.cpp @@ -81,7 +81,7 @@ private slots: record._fileId = "efg"; record._remotePerm = RemotePermissions::fromDbValue("NV"); record._fileSize = 289055; - _db.setFileRecordMetadata(record); + _db.setFileRecord(record); QVERIFY(_db.getFileRecord(QByteArrayLiteral("foo"), &storedRecord)); QVERIFY(storedRecord == record); |