deleteDir attempts to remove a directory that was deleted on a remote
(file protocol.FileInfo, dbUpdateChan chan<- dbUpdateJob, scanChan chan<- string)
| 807 | |
| 808 | // deleteDir attempts to remove a directory that was deleted on a remote |
| 809 | func (f *sendReceiveFolder) deleteDir(file protocol.FileInfo, dbUpdateChan chan<- dbUpdateJob, scanChan chan<- string) { |
| 810 | // Used in the defer closure below, updated by the function body. Take |
| 811 | // care not declare another err. |
| 812 | var err error |
| 813 | |
| 814 | f.evLogger.Log(events.ItemStarted, map[string]string{ |
| 815 | "folder": f.folderID, |
| 816 | "item": file.Name, |
| 817 | "type": "dir", |
| 818 | "action": "delete", |
| 819 | }) |
| 820 | |
| 821 | defer func() { |
| 822 | if err != nil { |
| 823 | f.newPullError(file.Name, fmt.Errorf("delete dir: %w", err)) |
| 824 | slog.Info("Failed to delete directory", f.LogAttr(), file.LogAttr(), slogutil.Error(err)) |
| 825 | } else { |
| 826 | slog.Info("Deleted directory", f.LogAttr(), file.LogAttr()) |
| 827 | } |
| 828 | f.evLogger.Log(events.ItemFinished, map[string]interface{}{ |
| 829 | "folder": f.folderID, |
| 830 | "item": file.Name, |
| 831 | "error": events.Error(err), |
| 832 | "type": "dir", |
| 833 | "action": "delete", |
| 834 | }) |
| 835 | }() |
| 836 | |
| 837 | cur, hasCur, err := f.model.sdb.GetDeviceFile(f.folderID, protocol.LocalDeviceID, file.Name) |
| 838 | if err != nil { |
| 839 | return |
| 840 | } |
| 841 | |
| 842 | if err = f.checkToBeDeleted(file, cur, hasCur, scanChan); err != nil { |
| 843 | if fs.IsNotExist(err) || fs.IsErrCaseConflict(err) { |
| 844 | err = nil |
| 845 | dbUpdateChan <- dbUpdateJob{file, dbUpdateDeleteDir} |
| 846 | } |
| 847 | return |
| 848 | } |
| 849 | |
| 850 | if err = f.deleteDirOnDisk(file.Name, scanChan); err != nil { |
| 851 | return |
| 852 | } |
| 853 | |
| 854 | dbUpdateChan <- dbUpdateJob{file, dbUpdateDeleteDir} |
| 855 | } |
| 856 | |
| 857 | // deleteFile attempts to delete the given file |
| 858 | func (f *sendReceiveFolder) deleteFile(file protocol.FileInfo, dbUpdateChan chan<- dbUpdateJob, scanChan chan<- string) { |