owncloud/core — pull request #5803 by schiesbn (2013-11-11 13:48:29+00:00)
Title: [WIP/DISCUSSION] replace part files

Don't merge this pull request! It is work in progress and need some discussion!

cc @DeepDiver1975 @butonic @icewind1991 @PVince81

This is more or less a skeleton to replace the part files with some flags in the file cache as discussed with Jörn during the developer meeting in Stuttgart. It still misses the file cache code to set/get the flags.

The main idea was to hide files as long as they are not complete and only show them if the upload was completed. This works nicely for new files but during implementation and discussion with Vincent I discovered some other issues with this approach:

1. How do we handle file updates? Right now a file update gets written to the part file and moved to the original file once the part file is completed. Without the .part files we would write to the real file directly. During this file operation we could either set the file state to "incomplete" which would result in following problem:

- During upload the file would disappear from the web interface and from possible webdav mounts which would be quite irritating for the user.
- It could even happen that the sync client would delete the local copy of the file because he would think that the file is gone.

Or we would keep the file state "completed":

- The file would stay in the web interface
- But which file size would we show to the user during upload?
- What would happen if the user tries to download/open the file during upload?

Regarding pull request #5447, I don't think the switch from part files to the flags would solve the issue. We would still have the problem that we could assemble two parallel upload to the same target file. So here we would still need some kind of part files with a random id.

Right now I'm no longer sure if this is really the right approach. Especially if we would have to introduce some kind of part files again to solve #5447 after we replaced them with the flags.

Did I missed something? What do you think?