MCPcopy
hub / github.com/syncthing/syncthing / deleteDir

Method deleteDir

lib/model/folder_sendrecv.go:809–855  ·  view source on GitHub ↗

deleteDir attempts to remove a directory that was deleted on a remote

(file protocol.FileInfo, dbUpdateChan chan<- dbUpdateJob, scanChan chan<- string)

Source from the content-addressed store, hash-verified

807
808// deleteDir attempts to remove a directory that was deleted on a remote
809func (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
858func (f *sendReceiveFolder) deleteFile(file protocol.FileInfo, dbUpdateChan chan<- dbUpdateJob, scanChan chan<- string) {

Callers 4

processDeletionsMethod · 0.95
TestIssue3164Function · 0.80

Calls 10

newPullErrorMethod · 0.95
checkToBeDeletedMethod · 0.95
deleteDirOnDiskMethod · 0.95
ErrorFunction · 0.92
ErrorFunction · 0.92
IsNotExistFunction · 0.92
IsErrCaseConflictFunction · 0.92
LogMethod · 0.65
GetDeviceFileMethod · 0.65
LogAttrMethod · 0.45

Tested by 3

TestIssue3164Function · 0.64