diff --git a/warden3/warden_server/warden_server.py b/warden3/warden_server/warden_server.py
index 582aa962a120ed94fd0296d2dbc6b9f699631806..ffbe6512e68616118a4f9078d15c3d2b583a1d0d 100755
--- a/warden3/warden_server/warden_server.py
+++ b/warden3/warden_server/warden_server.py
@@ -649,7 +649,18 @@ class MySQL(ObjectReq):
         else:
             maxid = self.getLastEventId()
 
-        events = [json.loads(r["data"]) for r in row]
+        events = []
+        for r in row:
+            try:
+                e = json.loads(r["data"])
+            except Exception:
+                # Note that we use Error object just for proper formatting,
+                # but do not raise it; from client perspective invalid
+                # events get skipped silently.
+                err = self.req.error(message="Unable to deserialize JSON event from db, id=%s" % r["id"], error=500,
+                    exc=sys.exc_info(), id=r["id"])
+                err.log(logging.getLogger(), prio=logging.WARNING)
+            events.append(e)
 
         return {
             "lastid": maxid,