item->_instruction = CSyncEnums::CSYNC_INSTRUCTION_UPDATE_VFS_METADATA;
}
- if (path._original != path._target && (item->_instruction == CSYNC_INSTRUCTION_UPDATE_METADATA || item->_instruction == CSYNC_INSTRUCTION_NONE)) {
+ if (path._original != path._target && (item->_instruction == CSYNC_INSTRUCTION_UPDATE_VFS_METADATA || item->_instruction == CSYNC_INSTRUCTION_UPDATE_METADATA || item->_instruction == CSYNC_INSTRUCTION_NONE)) {
ASSERT(_dirItem && _dirItem->_instruction == CSYNC_INSTRUCTION_RENAME);
// This is because otherwise subitems are not updated! (ideally renaming a directory could
// update the database for all items! See PropagateDirectory::slotSubJobsFinished)
}
}
- if (!FileSystem::fileExists(targetFile)) {
- propagator()->_journal->commit("Remote Rename");
- done(SyncFileItem::Success, {}, ErrorCategory::NoError);
- return;
- }
-
const auto result = propagator()->updateMetadata(newItem);
- if (!result) {
+ if (!result && QFileInfo::exists(targetFile)) {
done(SyncFileItem::FatalError, tr("Error updating metadata: %1").arg(result.error()), ErrorCategory::GenericError);
return;
} else if (*result == Vfs::ConvertToPlaceholderResult::Locked) {
done(SyncFileItem::SoftError, tr("The file %1 is currently in use").arg(newItem._file), ErrorCategory::GenericError);
return;
}
- if (pinState && *pinState != PinState::Inherited
- && !vfs->setPinState(newItem._renameTarget, *pinState)) {
+ if (pinState && *pinState != PinState::Inherited &&
+ !vfs->setPinState(newItem._renameTarget, *pinState) &&
+ QFileInfo::exists(targetFile)) {
done(SyncFileItem::NormalError, tr("Error setting pin state"), ErrorCategory::GenericError);
return;
}