Fallback to simple file copy if rename failed
This commit is contained in:
parent
1beb4fc2cb
commit
561bd80aa3
2 changed files with 10 additions and 4 deletions
|
@ -175,7 +175,7 @@ class SiteStorage:
|
|||
err = None
|
||||
break
|
||||
except Exception, err:
|
||||
self.log.error("%s rename error: %s" % (inner_path_before, err))
|
||||
self.log.error("%s rename error: %s (retry #%s)" % (inner_path_before, err, retry))
|
||||
time.sleep(0.1 + retry)
|
||||
if err:
|
||||
raise err
|
||||
|
|
|
@ -3,7 +3,7 @@ import time
|
|||
import sys
|
||||
import hashlib
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
|
||||
import gevent
|
||||
|
||||
|
@ -383,8 +383,14 @@ class UiWebsocket(object):
|
|||
import base64
|
||||
content = base64.b64decode(content_base64)
|
||||
# Save old file to generate patch later
|
||||
if self.site.storage.isFile(inner_path) and not self.site.storage.isFile(inner_path+"-old"):
|
||||
if inner_path.endswith(".json") and self.site.storage.isFile(inner_path) and not self.site.storage.isFile(inner_path + "-old"):
|
||||
try:
|
||||
self.site.storage.rename(inner_path, inner_path + "-old")
|
||||
except Exception:
|
||||
# Rename failed, fall back to standard file write
|
||||
f_old = self.site.storage.open(inner_path, "rb")
|
||||
f_new = self.site.storage.open(inner_path + "-old", "wb")
|
||||
shutil.copyfileobj(f_old, f_new)
|
||||
|
||||
self.site.storage.write(inner_path, content)
|
||||
except Exception, err:
|
||||
|
|
Loading…
Reference in a new issue