restore icon indicating copy to clipboard operation
restore copied to clipboard

Inconsistency in etag calculation

Open untitaker opened this issue 10 years ago • 3 comments

  • When listing items by doing GET /foldername/ the mtime of file.txt is used.
  • When fetching items by doing GET /foldername/file.txt, the mtime of .~file.txt is used.

I guess this issue doesn't always show up because the file has to be PUT at a second (or millisecond?) boundary, otherwise there's no difference between the mtime of the meta file and the mtime of the data file. However, you can test it by touching either meta files or data files.

The following patch fixes this:

diff --git a/lib/stores/file_tree.js b/lib/stores/file_tree.js
index 465f9ce..abb3b6c 100644
--- a/lib/stores/file_tree.js
+++ b/lib/stores/file_tree.js
@@ -184,7 +184,7 @@ FileTree.prototype.get = function(username, path, version, callback) {
       });
     } else {
       self.readFile(dataPath, function(error, blob, modified) {
-        self.readFile(metaPath, function(error, json, modified) {
+        self.readFile(metaPath, function(error, json, _) {
           if (error) {
             release();
             return callback(null, null);

I'll open a PR if you agree with the change @jcoglan

untitaker avatar Sep 21 '15 01:09 untitaker

Sometimes when i use http://litewrite.net/ with restore 0.3.0 and access via two browser simultaneously, i end up getting an endless stream of 412 errors, until i close and re-open the browser. wondering if this is related to this issue.

peacekeeper avatar Oct 21 '15 11:10 peacekeeper

Possibly, if it's not a bug in the client.

untitaker avatar Oct 21 '15 16:10 untitaker

I've been starting a fork of restore at https://github.com/untitaker/morestore, which contains a bugfix for this.

untitaker avatar Nov 06 '15 19:11 untitaker