Show error message when db failed to rebuild (#2043)

* Show error message when db failed to rebuild; fix #1908;

* Forgot file
This commit is contained in:
Lola Dam 2019-06-04 13:54:35 +02:00 committed by ZeroNet
parent d38846f126
commit 9cda561091
4 changed files with 19 additions and 4 deletions

View File

@ -786,6 +786,9 @@ class UiWebsocketPlugin(object):
if "ADMIN" not in permissions:
return self.response(to, "You don't have permission to run this command")
self.site.storage.rebuildDb()
result = self.site.storage.rebuildDb()
if not result:
return self.response(to, {"error": "Failed to rebuild database"})
return self.response(to, "ok")

View File

@ -814,8 +814,15 @@ window.initScrollable = function () {
this.tag.find("#button-dbrebuild").off("click touchend").on("click touchend", (function(_this) {
return function() {
_this.wrapper.notifications.add("done-dbrebuild", "info", "Database rebuilding....");
_this.wrapper.ws.cmd("dbRebuild", [], function() {
_this.wrapper.ws.cmd("dbRebuild", [], function(response) {
if (response !== "ok") {
_this.wrapper.notifications.add("done-dbrebuild", "error", response.error, 5000);
return _this.updateHtmlTag();
}
_this.wrapper.notifications.add("done-dbrebuild", "done", "Database rebuilt!", 5000);
return _this.updateHtmlTag();
});
return false;
@ -1477,4 +1484,4 @@ function morphdom(fromNode, toNode, options) {
module.exports = morphdom;
},{}]},{},[1])(1)
});
});

View File

@ -264,6 +264,7 @@ class Db(object):
changed_tables.append(table_name)
except Exception as err:
self.log.error("Error creating table %s: %s" % (table_name, Debug.formatException(err)))
return False
self.log.debug("Db check done in %.3fs, changed tables: %s" % (time.time() - s, changed_tables))
if changed_tables:

View File

@ -138,7 +138,11 @@ class SiteStorage(object):
self.event_db_busy = gevent.event.AsyncResult()
self.log.info("Creating tables...")
self.db.checkTables()
changed_tables = self.db.checkTables()
if not changed_tables:
# It failed
# "Error creating table..."
return False
cur = self.db.getCursor()
cur.logging = False
s = time.time()