fix regressions on pinState management when doing renames
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Wed, 23 Nov 2022 17:04:46 +0000 (18:04 +0100)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Thu, 24 Nov 2022 14:26:15 +0000 (15:26 +0100)
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/libsync/propagateremotemove.cpp
src/libsync/propagatorjobs.cpp
src/libsync/vfs/cfapi/vfs_cfapi.cpp
src/libsync/vfs/suffix/vfs_suffix.cpp
src/libsync/vfs/suffix/vfs_suffix.h
src/libsync/vfs/xattr/vfs_xattr.cpp

index d42ba326943e220b4e2e0e48cadae2f9c3a89fc0..882d7e077bd8bdbbb6563bbbf9e4d23a63afaf8e 100644 (file)
@@ -251,7 +251,7 @@ void PropagateRemoteMove::finalize()
         return;
     }
     auto &vfs = propagator()->syncOptions()._vfs;
-    auto pinState = vfs->pinState(_item->_renameTarget);
+    auto pinState = vfs->pinState(_item->_originalFile);
 
     const auto targetFile = propagator()->fullLocalPath(_item->_renameTarget);
 
index ce507b790050927482a5b23f63180910ffb98faf..8002f31e45515ef5fd6b055d21eda5100acd0702 100644 (file)
@@ -277,7 +277,7 @@ void PropagateLocalRename::start()
         return;
     }
 
-    if (pinState != OCC::PinState::Unspecified && !vfs->setPinState(_item->_renameTarget, pinState)) {
+    if (!vfs->setPinState(_item->_renameTarget, pinState)) {
         qCWarning(lcPropagateLocalRename) << "Could not set pin state of" << _item->_renameTarget << "to old value" << pinState;
         done(SyncFileItem::NormalError, tr("Error setting pin state"));
         return;
index 3ac65422ad89c26b598df5c4e1385497807d6d4f..af5347ff61866a1bbf98bc2175f053ad7d3a8dd7 100644 (file)
@@ -289,6 +289,8 @@ bool VfsCfApi::statTypeVirtualFile(csync_file_stat_t *stat, void *statData)
 
 bool VfsCfApi::setPinState(const QString &folderPath, PinState state)
 {
+    qCDebug(lcCfApi) << "setPinState" << folderPath << state;
+
     const auto localPath = QDir::toNativeSeparators(params().filesystemPath + folderPath);
 
     if (cfapi::setPinState(localPath, state, cfapi::Recurse)) {
index 21a7fd9505ec0f1dd8f9381213fccae2d6175a9d..6fcb1d2f51da2a05adab6f93c78866a3d3bc3f38 100644 (file)
 
 #include "vfs_suffix.h"
 
-#include <QFile>
-
 #include "syncfileitem.h"
 #include "filesystem.h"
 #include "common/syncjournaldb.h"
 
+#include <QFile>
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(lcVfsSuffix, "nextcloud.sync.vfs.suffix", QtInfoMsg)
+
 namespace OCC {
 
 VfsSuffix::VfsSuffix(QObject *parent)
@@ -158,6 +161,12 @@ bool VfsSuffix::statTypeVirtualFile(csync_file_stat_t *stat, void *)
     return false;
 }
 
+bool VfsSuffix::setPinState(const QString &folderPath, PinState state)
+{
+    qCDebug(lcVfsSuffix) << "setPinState" << folderPath << state;
+    return setPinStateInDb(folderPath, state);
+}
+
 Vfs::AvailabilityResult VfsSuffix::availability(const QString &folderPath)
 {
     return availabilityInDb(folderPath);
index 66b8f74cb27a8020f054d5c5aed2f1a876ddbd73..6169290ba3224676f06fc9f274be78e108fbaacf 100644 (file)
@@ -48,8 +48,7 @@ public:
     bool isDehydratedPlaceholder(const QString &filePath) override;
     bool statTypeVirtualFile(csync_file_stat_t *stat, void *stat_data) override;
 
-    bool setPinState(const QString &folderPath, PinState state) override
-    { return setPinStateInDb(folderPath, state); }
+    bool setPinState(const QString &folderPath, PinState state) override;
     Optional<PinState> pinState(const QString &folderPath) override
     { return pinStateInDb(folderPath); }
     AvailabilityResult availability(const QString &folderPath) override;
index 6a15067ac930eef05582781e3f1688508ed97cd4..4300f6d30ad2447c9eaecdf3cc8a175bb4c40d5b 100644 (file)
 
 #include "vfs_xattr.h"
 
-#include <QFile>
-
 #include "syncfileitem.h"
 #include "filesystem.h"
 #include "common/syncjournaldb.h"
-
 #include "xattrwrapper.h"
 
+#include <QFile>
+#include <QLoggingCategory>
+
+Q_LOGGING_CATEGORY(lcVfsXAttr, "nextcloud.sync.vfs.xattr", QtInfoMsg)
+
 namespace xattr {
 using namespace OCC::XAttrWrapper;
 }
@@ -172,6 +174,7 @@ bool VfsXAttr::statTypeVirtualFile(csync_file_stat_t *stat, void *statData)
 
 bool VfsXAttr::setPinState(const QString &folderPath, PinState state)
 {
+    qCDebug(lcVfsXAttr) << "setPinState" << folderPath << state;
     return setPinStateInDb(folderPath, state);
 }