From 04a1d9c2385e7509c47ddc618d997c7c18404529 Mon Sep 17 00:00:00 2001 From: Griatch Date: Fri, 6 Mar 2015 21:21:07 +0100 Subject: [PATCH] Added CONN_MAX_AGE setting to 7hrs to avoid 'database has gone away' errors with MySQL default settings. Resolves #619. --- evennia/objects/objects.py | 2 +- evennia/server/server.py | 5 +++++ evennia/settings_default.py | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 867ae27c5..7b0db0463 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -514,7 +514,7 @@ class DefaultObject(ObjectDB): All extra kwargs will be passed on to the protocol. """ - text = to_str(text, force_string=True) if text else "" + text = to_str(text, force_string=True) if text != None else "" if from_obj: # call hook try: diff --git a/evennia/server/server.py b/evennia/server/server.py index 8ac181da7..777bbbf9a 100644 --- a/evennia/server/server.py +++ b/evennia/server/server.py @@ -117,6 +117,11 @@ def _server_maintenance(): # validate channels off-sync with scripts print "maintenance: validate channels..." evennia.CHANNEL_HANDLER.update() + ## Commenting this out, it is probably not needed + ## with CONN_MAX_AGE set. Keeping it as a reminder + ## if database-gone-away errors appears again /Griatch + #if _MAINTENANCE_COUNT % 18000 == 0: + # connection.close() maintenance_task = LoopingCall(_server_maintenance) maintenance_task.start(60, now=True) # call every minute diff --git a/evennia/settings_default.py b/evennia/settings_default.py index 1a4724014..ecb3c3ab1 100644 --- a/evennia/settings_default.py +++ b/evennia/settings_default.py @@ -197,6 +197,11 @@ DATABASES = { 'HOST': '', 'PORT': '' }} +# How long the django-database connection should be kept open, in seconds. +# If you get errors about the database having gone away after long idle +# periods, shorten this value (e.g. MySQL defaults to a timeout of 8 hrs) +CONN_MAX_AGE = 3600 * 7 + ###################################################################### # Evennia pluggable modules