Hi Tom,
I do not know if this issue is known already.
I got a deadlock in cmon.py, see code and traceback below:
snippet from cmon.py:
===========================================
def new_archive_record(self, event):
"""save data to database then prune old records as needed"""
now = int(time.time() + 0.5)
delta = now - event.record['dateTime']
if delta > event.record['interval'] * 60:
logdbg("Skipping record: time difference %s too big" % delta)
return
if self.last_ts is not None:
data = self.get_data(now, self.last_ts)
self.save_data(self.get_data(now, self.last_ts)) ### line 728
self.last_ts = now
if self.max_age is not None:
self.prune_data(now - self.max_age)
def save_data(self, record):
"""save data to database"""
self.dbm.addRecord(record) ### line 735
===========================================
Mar 25 10:25:18 pi36 tfrc[4503]: engine: Shutting down StdReport thread
Mar 25 10:25:38 pi36 tfrc[4503]: engine: Unable to shut down StdReport
thread
Mar 25 10:25:38 pi36 tfrc[4503]: tfrc: MainThread: shutdown process
/home/pi/tfrec/tfrec -D -T 1
Mar 25 10:25:38 pi36 tfrc[4503]: tfrc: MainThread: tfrec with pid 4525
killed
Mar 25 10:25:38 pi36 tfrc[4503]: engine: Caught unrecoverable exception in
engine:
Mar 25 10:25:38 pi36 tfrc[4503]: **** (1213, 'Deadlock found when
trying to get lock; try restarting transaction')
Mar 25 10:25:38 pi36 tfrc[4503]: **** : Traceback (most recent call
last):
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 196, in run
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
self.dispatchEvent(weewx.Event(weewx.CHECK_LOOP, packet=packet))
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 225, in dispatchEvent
Mar 25 10:25:38 pi36 tfrc[4503]: **** : callback(event)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 565, in check_loop
Mar 25 10:25:38 pi36 tfrc[4503]: **** : raise BreakLoop
Mar 25 10:25:38 pi36 tfrc[4503]: **** : weewx.engine.BreakLoop
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
Mar 25 10:25:38 pi36 tfrc[4503]: **** : During handling of the above
exception, another exception occurred:
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
Mar 25 10:25:38 pi36 tfrc[4503]: **** : Traceback (most recent call
last):
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 581, in post_loop
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
self._catchup(self.engine.console.genArchiveRecords)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 633, in _catchup
Mar 25 10:25:38 pi36 tfrc[4503]: **** : for record in
generator(lastgood_ts):
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/drivers/__init__.py", line 30, in genArchiveRecords
Mar 25 10:25:38 pi36 tfrc[4503]: **** : raise
NotImplementedError("Method 'genArchiveRecords' not implemented")
Mar 25 10:25:38 pi36 tfrc[4503]: **** : NotImplementedError: Method
'genArchiveRecords' not implemented
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
Mar 25 10:25:38 pi36 tfrc[4503]: **** : During handling of the above
exception, another exception occurred:
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
Mar 25 10:25:38 pi36 tfrc[4503]: **** : Traceback (most recent call
last):
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weedb/mysql.py", line 51, in guarded_fn
Mar 25 10:25:38 pi36 tfrc[4503]: **** : return fn(*args, **kwargs)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weedb/mysql.py", line 261, in execute
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
self.cursor.execute(mysql_string, tuple(sql_tuple))
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 226, in execute
Mar 25 10:25:38 pi36 tfrc[4503]: **** : self.errorhandler(self,
exc, value)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 36, in
defaulterrorhandler
Mar 25 10:25:38 pi36 tfrc[4503]: **** : raise errorvalue
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 217, in execute
Mar 25 10:25:38 pi36 tfrc[4503]: **** : res = self._query(query)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 378, in _query
Mar 25 10:25:38 pi36 tfrc[4503]: **** : rowcount =
self._do_query(q)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 341, in _do_query
Mar 25 10:25:38 pi36 tfrc[4503]: **** : db.query(q)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 280, in query
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
_mysql.connection.query(self, query)
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
_mysql_exceptions.OperationalError: (1213, 'Deadlock found when trying to
get lock; try restarting transaction')
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
Mar 25 10:25:38 pi36 tfrc[4503]: **** : During handling of the above
exception, another exception occurred:
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
Mar 25 10:25:38 pi36 tfrc[4503]: **** : Traceback (most recent call
last):
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 893, in main
Mar 25 10:25:38 pi36 tfrc[4503]: **** : engine.run()
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 203, in run
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
self.dispatchEvent(weewx.Event(weewx.POST_LOOP))
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 225, in dispatchEvent
Mar 25 10:25:38 pi36 tfrc[4503]: **** : callback(event)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 583, in post_loop
Mar 25 10:25:38 pi36 tfrc[4503]: **** : self._software_catchup()
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 647, in _software_catchup
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
self.engine.dispatchEvent(weewx.Event(weewx.NEW_ARCHIVE_RECORD,
record=record, origin='software'))
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/engine.py", line 225, in dispatchEvent
Mar 25 10:25:38 pi36 tfrc[4503]: **** : callback(event)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/user/cmon.py", line 727, in new_archive_record
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
self.save_data(self.get_data(now, self.last_ts))
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/user/cmon.py", line 734, in save_data
Mar 25 10:25:38 pi36 tfrc[4503]: **** : self.dbm.addRecord(record)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/manager.py", line 249, in addRecord
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
self._addSingleRecord(record, cursor, log_level)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/manager.py", line 1234, in _addSingleRecord
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
self._set_day_summary(_day_summary, record['dateTime'], cursor)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weewx/manager.py", line 1584, in _set_day_summary
Mar 25 10:25:38 pi36 tfrc[4503]: **** :
cursor.execute(_sql_replace_str, _write_tuple)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : File
"/home/weewx/bin/weedb/mysql.py", line 60, in guarded_fn
Mar 25 10:25:38 pi36 tfrc[4503]: **** : raise klass(e)
Mar 25 10:25:38 pi36 tfrc[4503]: **** : weedb.DatabaseError: (1213,
'Deadlock found when trying to get lock; try restarting transaction')
Mar 25 10:25:38 pi36 tfrc[4503]: **** Exiting.
I changed lines 727 and 728 in cmon.py:
snippet from cmon.py:
===========================================
def new_archive_record(self, event):
"""save data to database then prune old records as needed"""
now = int(time.time() + 0.5)
delta = now - event.record['dateTime']
if delta > event.record['interval'] * 60:
logdbg("Skipping record: time difference %s too big" % delta)
return
if self.last_ts is not None:
data = self.get_data(now, self.last_ts) ### line 727
self.save_data(data) ### line 728
self.last_ts = now
if self.max_age is not None:
self.prune_data(now - self.max_age)
def save_data(self, record):
"""save data to database"""
self.dbm.addRecord(record)
===========================================
Again a deadlock error, but this time cmon.py is not part of the traceback
Mar 25 10:40:20 pi36 tfrc[7623]: engine: Main loop exiting. Shutting engine
down.
Mar 25 10:40:20 pi36 tfrc[7623]: engine: Shutting down StdReport thread
Mar 25 10:40:40 pi36 tfrc[7623]: engine: Unable to shut down StdReport
thread
Mar 25 10:40:40 pi36 tfrc[7623]: tfrc: MainThread: shutdown process
/home/pi/tfrec/tfrec -D -T 1
Mar 25 10:40:40 pi36 tfrc[7623]: tfrc: MainThread: tfrec with pid 7632
killed
Mar 25 10:40:40 pi36 tfrc[7623]: engine: Caught unrecoverable exception in
engine:
Mar 25 10:40:40 pi36 tfrc[7623]: **** (1213, 'Deadlock found when
trying to get lock; try restarting transaction')
Mar 25 10:40:40 pi36 tfrc[7623]: **** : Traceback (most recent call
last):
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 196, in run
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
self.dispatchEvent(weewx.Event(weewx.CHECK_LOOP, packet=packet))
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 225, in dispatchEvent
Mar 25 10:40:40 pi36 tfrc[7623]: **** : callback(event)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 565, in check_loop
Mar 25 10:40:40 pi36 tfrc[7623]: **** : raise BreakLoop
Mar 25 10:40:40 pi36 tfrc[7623]: **** : weewx.engine.BreakLoop
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
Mar 25 10:40:40 pi36 tfrc[7623]: **** : During handling of the above
exception, another exception occurred:
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
Mar 25 10:40:40 pi36 tfrc[7623]: **** : Traceback (most recent call
last):
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 581, in post_loop
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
self._catchup(self.engine.console.genArchiveRecords)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 633, in _catchup
Mar 25 10:40:40 pi36 tfrc[7623]: **** : for record in
generator(lastgood_ts):
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/drivers/__init__.py", line 30, in genArchiveRecords
Mar 25 10:40:40 pi36 tfrc[7623]: **** : raise
NotImplementedError("Method 'genArchiveRecords' not implemented")
Mar 25 10:40:40 pi36 tfrc[7623]: **** : NotImplementedError: Method
'genArchiveRecords' not implemented
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
Mar 25 10:40:40 pi36 tfrc[7623]: **** : During handling of the above
exception, another exception occurred:
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
Mar 25 10:40:40 pi36 tfrc[7623]: **** : Traceback (most recent call
last):
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weedb/mysql.py", line 51, in guarded_fn
Mar 25 10:40:40 pi36 tfrc[7623]: **** : return fn(*args, **kwargs)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weedb/mysql.py", line 261, in execute
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
self.cursor.execute(mysql_string, tuple(sql_tuple))
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 226, in execute
Mar 25 10:40:40 pi36 tfrc[7623]: **** : self.errorhandler(self,
exc, value)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 36, in
defaulterrorhandler
Mar 25 10:40:40 pi36 tfrc[7623]: **** : raise errorvalue
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 217, in execute
Mar 25 10:40:40 pi36 tfrc[7623]: **** : res = self._query(query)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 378, in _query
Mar 25 10:40:40 pi36 tfrc[7623]: **** : rowcount =
self._do_query(q)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 341, in _do_query
Mar 25 10:40:40 pi36 tfrc[7623]: **** : db.query(q)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 280, in query
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
_mysql.connection.query(self, query)
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
_mysql_exceptions.OperationalError: (1213, 'Deadlock found when trying to
get lock; try restarting transaction')
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
Mar 25 10:40:40 pi36 tfrc[7623]: **** : During handling of the above
exception, another exception occurred:
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
Mar 25 10:40:40 pi36 tfrc[7623]: **** : Traceback (most recent call
last):
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 893, in main
Mar 25 10:40:40 pi36 tfrc[7623]: **** : engine.run()
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 203, in run
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
self.dispatchEvent(weewx.Event(weewx.POST_LOOP))
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 225, in dispatchEvent
Mar 25 10:40:40 pi36 tfrc[7623]: **** : callback(event)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 583, in post_loop
Mar 25 10:40:40 pi36 tfrc[7623]: **** : self._software_catchup()
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 647, in _software_catchup
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
self.engine.dispatchEvent(weewx.Event(weewx.NEW_ARCHIVE_RECORD,
record=record, origin='software'))
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 225, in dispatchEvent
Mar 25 10:40:40 pi36 tfrc[7623]: **** : callback(event)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/engine.py", line 602, in new_archive_record
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
dbmanager.addRecord(event.record, accumulator=self.old_accumulator)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/manager.py", line 246, in addRecord
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
self._updateHiLo(accumulator, cursor)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/manager.py", line 1250, in _updateHiLo
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
self._set_day_summary(_stats_dict, accumulator.timespan.stop, cursor)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weewx/manager.py", line 1584, in _set_day_summary
Mar 25 10:40:40 pi36 tfrc[7623]: **** :
cursor.execute(_sql_replace_str, _write_tuple)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : File
"/home/weewx/bin/weedb/mysql.py", line 60, in guarded_fn
Mar 25 10:40:40 pi36 tfrc[7623]: **** : raise klass(e)
Mar 25 10:40:40 pi36 tfrc[7623]: **** : weedb.DatabaseError: (1213,
'Deadlock found when trying to get lock; try restarting transaction')
Mar 25 10:40:40 pi36 tfrc[7623]: **** Exiting.
Luc