Uploaded image for project: 'Sakai'
  1. Sakai
  2. SAK-21284

DAV "MOVE" operation is implemented as copy/remove

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: CLOSED
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 2.7.2, 2.8.1, 2.9.0
    • Fix Version/s: 2.9.0
    • Component/s: WebDAV
    • Labels:
    • 2.9 Status:
      Resolved

      Description

      The doMove() operation in DavServlet.java implements a move as a copy followed by a remove. This causes all files so "moved" to be recreated in the storage volume before the old copies are deleted. And so in every case, the application server must read the full content of each file and write it back out again. In a shared storage situation, particularly a multiple-volume one, this creates several risks. And when multiple MOVE operations are issued in sequence (eg a user using a DAV client to move 10 folders to another location), several threads are kicked off which can result in complete saturation of the server's I/O system and/or NFS connection.

      ContentHostingService provides a "rename" method which may or may not be appropriate for the needs of the DAV server, and in addition that method is also implemented in this manner (copy then remove-- see KNL-817), however, this implementation presents a big risk when dealing with multiple multi-gigabyte files.

        Gliffy Diagrams

          Zeplin

            Attachments

              Issue Links

                Activity

                  People

                  Assignee:
                  aaronz Aaron Zeckoski (Inactive)
                  Reporter:
                  daveadams David Adams
                  Votes:
                  0 Vote for this issue
                  Watchers:
                  4 Start watching this issue

                    Dates

                    Created:
                    Updated:
                    Resolved:

                      Git Integration