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
|
err = None
|
||||||
break
|
break
|
||||||
except Exception, err:
|
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)
|
time.sleep(0.1 + retry)
|
||||||
if err:
|
if err:
|
||||||
raise err
|
raise err
|
||||||
|
|
|
@ -3,7 +3,7 @@ import time
|
||||||
import sys
|
import sys
|
||||||
import hashlib
|
import hashlib
|
||||||
import os
|
import os
|
||||||
import re
|
import shutil
|
||||||
|
|
||||||
import gevent
|
import gevent
|
||||||
|
|
||||||
|
@ -383,8 +383,14 @@ class UiWebsocket(object):
|
||||||
import base64
|
import base64
|
||||||
content = base64.b64decode(content_base64)
|
content = base64.b64decode(content_base64)
|
||||||
# Save old file to generate patch later
|
# 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"):
|
||||||
self.site.storage.rename(inner_path, 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)
|
self.site.storage.write(inner_path, content)
|
||||||
except Exception, err:
|
except Exception, err:
|
||||||
|
|
Loading…
Reference in a new issue