Browse Source

Improved error handling if file already exists in file store (verify if file is corrupt in filesystem and remove it in case).

Martin Edenhofer 6 years ago
parent
commit
6c82931245
1 changed files with 11 additions and 0 deletions
  1. 11 0
      app/models/store/provider/file.rb

+ 11 - 0
app/models/store/provider/file.rb

@@ -7,6 +7,17 @@ class Store::Provider::File
     # install file
     location = get_location(sha)
     permission = '600'
+
+    # verify if file already is in file system and if it's not corrupt
+    if File.exist?(location)
+      begin
+        get(sha)
+      rescue
+        delete(sha)
+      end
+    end
+
+    # write file to file system
     if !File.exist?(location)
       Rails.logger.debug { "storge write '#{location}' (#{permission})" }
       file = File.new(location, 'wb')