[Cyberduck-trac] [Cyberduck] #9798: Use single DELETE for a directory rather than many PROPFINDs & DELETEs

Cyberduck trac at cyberduck.io
Sun Jan 29 23:54:41 UTC 2017


#9798: Use single DELETE for a directory rather than many PROPFINDs & DELETEs
-------------------------+-------------------------
 Reporter:  petrkotek    |         Owner:  dkocher
     Type:  enhancement  |        Status:  reopened
 Priority:  normal       |     Milestone:  5.3
Component:  webdav       |       Version:  5.2.2
 Severity:  normal       |    Resolution:
 Keywords:               |  Architecture:
 Platform:               |
-------------------------+-------------------------
Changes (by petrkotek):

 * status:  closed => reopened
 * resolution:  worksforme =>


Comment:

 Replying to [comment:2 dkocher]:
 > We do issue a single `DELETE` to recursively delete a folder but still
 issue `PROPFIND` requests for all child directories prior the delete.

 That's unfortunately not what I observe. I just tried it with Cyberduck
 5.3.3 (23221) and apart from PROPFINDs for each directory, I'm it still
 seeing DELETE requests for every single file & directory, e.g. like this:
 {{{
 PROPFIND /dav/content/test/ HTTP/1.1
 PROPFIND /dav/content/test/dirA/ HTTP/1.1
 PROPFIND /dav/content/test/dirB/ HTTP/1.1
 PROPFIND /dav/content/test/dirC/ HTTP/1.1
 PROPFIND /dav/content/test/dirD/ HTTP/1.1
 PROPFIND /dav/content/test/dirD/dirX/ HTTP/1.1
 DELETE /dav/content/test/bar HTTP/1.1
 DELETE /dav/content/test/dirA/bar HTTP/1.1
 DELETE /dav/content/test/dirA/foo HTTP/1.1
 DELETE /dav/content/test/dirA/ HTTP/1.1
 DELETE /dav/content/test/dirB/bar HTTP/1.1
 DELETE /dav/content/test/dirB/ HTTP/1.1
 DELETE /dav/content/test/dirC/foo HTTP/1.1
 DELETE /dav/content/test/dirC/ HTTP/1.1
 DELETE /dav/content/test/dirD/dirX/foo HTTP/1.1
 DELETE /dav/content/test/dirD/dirX/ HTTP/1.1
 DELETE /dav/content/test/dirD/ HTTP/1.1
 DELETE /dav/content/test/foo HTTP/1.1
 DELETE /dav/content/test/ HTTP/1.1
 PROPFIND /dav/content/ HTTP/1.1
 }}}

 Since this doesn't match with the behavior you expect, I'm reopening the
 issue. Sorry!

 Could it be because `List<Path> files` in here
 https://g.iterate.ch/projects/ITERATE/repos/cyberduck/browse/webdav/src/main/java/ch/cyberduck/core/dav/DAVDeleteFeature.java#44
 doesn't have the deleted directory as the first item? Looks like the
 `files` would be a result of post-order tree traversal, i.e. the
 directory, which user requested to delete appears last in the `files`
 array/iterator.

--
Ticket URL: <https://trac.cyberduck.io/ticket/9798#comment:5>
Cyberduck <https://cyberduck.io>
Libre FTP, SFTP, WebDAV, S3 & OpenStack Swift browser for Mac and Windows


More information about the Cyberduck-trac mailing list