If the database is myisam format that could cause it to fail to write during 
backups. 

I personally shut down weewx nightly to do my backups just so I get a clean 
backup. So you may want to have weewx shutdown just before your backup job 
kicks off then start back up again. 

> On Feb 13, 2021, at 17:37, gjr80 <[email protected]> wrote:
> 
> 
> Looks pretty clear that the issue is WeeWX losing its connection to the MySQL 
> server. WeeWX will be wanting database access each time it saves records to 
> database (every archive interval seconds) and every report cycle but I don't 
> see WeeWX doing anything to cause the error.
> 
> I guess only you know exactly what is going on with backups on your network 
> but I could certainly understand a database backup causing a problem each day 
> at 3am. Also, if the MySQL database is on another server that adds additional 
> fragility. Does the problem go away if you turn off the backup one morning 
> (if you can) or temporarily have WeeWX use a local (to the RPi) SQLite or 
> MySQL database? If so perhaps you need to re-jig your backup strategy. There 
> have been a number of threads re db backup in weew-user over the years, they 
> may provide some insights.
> 
> Gary
> 
>> On Sunday, 14 February 2021 at 07:53:13 UTC+10 [email protected] wrote:
>> To be complete , the log from messages : 
>> Feb 13 02:58:10 weatherpi /weewxd: PiSense: Pressure :1000.5552978515625
>> Feb 13 02:58:11 weatherpi /weewxd: PiSense: Lux:0.0
>> Feb 13 02:58:24 weatherpi /weewxd: PiSense: Pressure :1000.66787109375
>> Feb 13 02:58:25 weatherpi /weewxd: PiSense: Lux:0.0
>> Feb 13 02:58:25 weatherpi weewx[4256] INFO weewx.engine: Main loop exiting. 
>> Shutting engine down.
>> Feb 13 02:58:25 weatherpi weewx[4256] INFO weewx.engine: Shutting down 
>> StdReport thread
>> Feb 13 02:58:25 weatherpi weewx[4256] INFO user.sdr: shutdown process 
>> rtl_433 -M utc -F json
>> Feb 13 02:58:35 weatherpi weewx[4256] INFO user.sdr: timed out waiting for 
>> stdout-thread
>> Feb 13 02:58:45 weatherpi weewx[4256] INFO user.sdr: timed out waiting for 
>> stderr-thread
>> Feb 13 02:59:46 weatherpi weewx[4256] INFO __main__: retrying...
>> Feb 13 02:59:46 weatherpi weewx[4256] INFO __main__: Using configuration 
>> file /home/weewx/weewx.conf
>> Feb 13 02:59:46 weatherpi weewx[4256] INFO __main__: Debug is 1
>> Feb 13 02:59:46 weatherpi weewx[4256] INFO weewx.engine: Loading station 
>> type SDR (user.sdr)
>> Feb 13 02:59:46 weatherpi weewx[4256] INFO user.sdr: driver version is 0.78
>> Feb 13 02:59:46 weatherpi weewx[4256] INFO user.sdr: sensor map is 
>> {'windGust': 'wind_gust.0:*.OSWGR800Packet', 'windSpeed': 
>> 'wind_speed.0:*.OSWGR800Packet', 'windBatteryStatus': 
>> 'battery.0:*.OSWGR800Packet', 'windDir': 'wind_dir.0:*.OSWGR800Packet', 
>> 'outHumidity': 'humidity.1:*.OSTHGR810Packet', 'outTemp': 
>> 'temperature.1:*.OSTHGR810Packet', 'outTempBatteryStatus': 
>> 'battery.1:*.OSTHGR810Packet', 'rain_total': 
>> 'rain_total.0:*.OSPCR800Packet', 'rainBatteryStatus': 
>> 'battery.0:*.OSPCR800Packet', 'UV': 'uv_index.1:*.OSUV800Packet', 
>> 'extraTemp3': 'temperature.1:*.OSBTHGN129Packet', 'extraHumid1': 
>> 'humidity.1:*.OSBTHGN129Packet', 'inTempBatteryStatus': 
>> 'battery.1:*.OSBTHGN129Packet'}
>> Feb 13 02:59:46 weatherpi weewx[4256] INFO user.sdr: deltas is {'rain': 
>> 'rain_total', 'strikes': 'strikes_total'}
>> Feb 13 02:59:46 weatherpi weewx[4256] INFO user.sdr: startup process 
>> 'rtl_433 -M utc -F json'
>> Feb 13 02:59:46 weatherpi /weewxd: PiSense: PiSensewx configuration {}
>> Feb 13 02:59:46 weatherpi /weewxd: PiSense: I2C port: 1
>> Feb 13 02:59:46 weatherpi /weewxd: PiSense: I2C address: 0x5c
>> Feb 13 02:59:46 weatherpi /weewxd: PiSense: fallback default units: US
>> Feb 13 02:59:46 weatherpi weewx[4256] INFO user.sdr: shutdown process 
>> rtl_433 -M utc -F json
>> Feb 13 03:00:03 weatherpi weewx[4256] INFO user.sdr: timed out waiting for 
>> stderr-thread
>> Feb 13 17:29:51 weatherpi weewx[10237] INFO __main__: Initializing weewx 
>> version 4.3.0
>> 
>> 
>> 
>>> On Saturday, February 13, 2021 at 10:48:28 PM UTC+1 [email protected] wrote:
>>> Hi,
>>> 
>>> Ok I can try that.
>>> 
>>> I am running weewx 4.3.0 installed with setup.py.
>>> 
>>> I have a SDR with weewx SDR driver and a custom extension derived from a 
>>> BME280 extension that will inject some extra measures in the measure loop.
>>> Regarding logs, even though I set debug=1, i find only minimal info in 
>>> message and no stacktrace whatsoever.
>>> 
>>> So I run ./bin/weewxd > logfile 2>&1.
>>> Below is the crash log from last night:
>>> 
>>> LOOP:   2021-02-13 02:57:20 CET (1613181440) altimeter: 30.226434601579474, 
>>> dateTime: 1613181440, extraTemp2: 66.18199999999999, inDewpoint: 
>>> 39.600169912207505, inHumidity: 39.51263427734375, inTemp: 
>>> 64.80874633789062, maxSolarRad: 0.0, pressure: 29.54738971773132, 
>>> radiation: 0.0, rainRate: 0.0, usUnits: 1, windBatteryStatus: 1, windDir: 
>>> None, windGust: 0.0, windSpeed: 0.0Traceback (most recent call last):
>>>   File "/home/weewx/bin/weedb/mysql.py", line 52, in guarded_fn
>>>     return fn(*args, **kwargs)
>>>   File "/home/weewx/bin/weedb/mysql.py", line 133, in __init__
>>>     db=database_name, **kwargs)
>>>   File "/usr/lib/python3/dist-packages/MySQLdb/__init__.py", line 86, in 
>>> Connect
>>>     return Connection(*args, **kwargs)
>>>   File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 204, 
>>> in __init__
>>>     super(Connection, self).__init__(*args, **kwargs2)
>>> _mysql_exceptions.OperationalError: (2002, "Can't connect to MySQL server 
>>> on 'diskstation' (115)")
>>> 
>>> During handling of the above exception, another exception occurred:
>>> 
>>> Traceback (most recent call last):
>>>   File "/home/weewx/bin/weewx/reportengine.py", line 196, in run
>>>     obj.start()
>>>   File "/home/weewx/bin/weewx/reportengine.py", line 281, in start
>>>     self.run()
>>>   File "/home/weewx/bin/weewx/cheetahgenerator.py", line 146, in run
>>>     self.initExtensions(gen_dict[section_name])
>>>   File "/home/weewx/bin/weewx/cheetahgenerator.py", line 190, in 
>>> initExtensions
>>>     self.search_list_objs.append(class_(self))
>>>   File "/home/weewx/bin/weewx/cheetahgenerator.py", line 499, in __init__
>>>     archive = self.generator.db_binder.get_manager(binding)
>>>   File "/home/weewx/bin/weewx/manager.py", line 534, in get_manager
>>>     self.manager_cache[data_binding] = open_manager(manager_dict, 
>>> initialize)
>>>   File "/home/weewx/bin/weewx/manager.py", line 687, in open_manager
>>>     manager_dict['table_name'])
>>>   File "/home/weewx/bin/weewx/manager.py", line 129, in open
>>>     connection = weedb.connect(database_dict)
>>>   File "/home/weewx/bin/weedb/__init__.py", line 92, in connect
>>>     return driver_mod.connect(**db_dict)
>>>   File "/home/weewx/bin/weedb/mysql.py", line 70, in connect
>>>     database_name=database_name, engine=engine, autocommit=autocommit, 
>>> **kwargs)
>>>   File "/home/weewx/bin/weedb/mysql.py", line 61, in guarded_fn
>>>     raise klass(e)
>>> weedb.CannotConnectError: (2002, "Can't connect to MySQL server on 
>>> 'diskstation' (115)")
>>> Traceback (most recent call last):
>>>   File "/home/weewx/bin/weedb/mysql.py", line 52, in guarded_fn
>>>     return fn(*args, **kwargs)
>>>   File "/home/weewx/bin/weedb/mysql.py", line 133, in __init__
>>>     db=database_name, **kwargs)
>>>   File "/usr/lib/python3/dist-packages/MySQLdb/__init__.py", line 86, in 
>>> Connect
>>>     return Connection(*args, **kwargs)
>>>   File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 204, 
>>> in __init__
>>>     super(Connection, self).__init__(*args, **kwargs2)
>>> _mysql_exceptions.OperationalError: (2002, "Can't connect to MySQL server 
>>> on 'diskstation' (115)")
>>> 
>>> During handling of the above exception, another exception occurred:
>>> 
>>> Traceback (most recent call last):
>>>   File "/home/weewx/bin/weewx/reportengine.py", line 196, in run
>>>     obj.start()
>>>   File "/home/weewx/bin/weewx/reportengine.py", line 281, in start
>>>     self.run()
>>>   File "/home/weewx/bin/weewx/imagegenerator.py", line 41, in run
>>>     self.genImages(self.gen_ts)
>>>   File "/home/weewx/bin/weewx/imagegenerator.py", line 88, in genImages
>>>     db_manager = self.db_binder.get_manager(binding)
>>>   File "/home/weewx/bin/weewx/manager.py", line 534, in get_manager
>>>     self.manager_cache[data_binding] = open_manager(manager_dict, 
>>> initialize)
>>>   File "/home/weewx/bin/weewx/manager.py", line 687, in open_manager
>>>     manager_dict['table_name'])
>>>   File "/home/weewx/bin/weewx/manager.py", line 129, in open
>>>     connection = weedb.connect(database_dict)
>>>   File "/home/weewx/bin/weedb/__init__.py", line 92, in connect
>>>     return driver_mod.connect(**db_dict)
>>>   File "/home/weewx/bin/weedb/mysql.py", line 70, in connect
>>>     database_name=database_name, engine=engine, autocommit=autocommit, 
>>> **kwargs)
>>>   File "/home/weewx/bin/weedb/mysql.py", line 61, in guarded_fn
>>>     raise klass(e)
>>> weedb.CannotConnectError: (2002, "Can't connect to MySQL server on 
>>> 'diskstation' (115)")
>>> Traceback (most recent call last):
>>>   File "/home/weewx/bin/weedb/mysql.py", line 52, in guarded_fn
>>>     return fn(*args, **kwargs)
>>>   File "/home/weewx/bin/weedb/mysql.py", line 133, in __init__
>>>     db=database_name, **kwargs)
>>>   File "/usr/lib/python3/dist-packages/MySQLdb/__init__.py", line 86, in 
>>> Connect
>>>     return Connection(*args, **kwargs)
>>>   File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 204, 
>>> in __init__
>>>     super(Connection, self).__init__(*args, **kwargs2)
>>> _mysql_exceptions.OperationalError: (2002, "Can't connect to MySQL server 
>>> on 'diskstation' (115)")
>>> 
>>> During handling of the above exception, another exception occurred:
>>> 
>>> Traceback (most recent call last):
>>>   File "/home/weewx/bin/weewx/reportengine.py", line 196, in run
>>>     obj.start()
>>>   File "/home/weewx/bin/weewx/reportengine.py", line 281, in start
>>>     self.run()
>>>   File "/home/weewx/bin/weewx/cheetahgenerator.py", line 146, in run
>>>     self.initExtensions(gen_dict[section_name])
>>>   File "/home/weewx/bin/weewx/cheetahgenerator.py", line 190, in 
>>> initExtensions
>>>     self.search_list_objs.append(class_(self))
>>>   File "/home/weewx/bin/weewx/cheetahgenerator.py", line 499, in __init__
>>>     archive = self.generator.db_binder.get_manager(binding)
>>>   File "/home/weewx/bin/weewx/manager.py", line 534, in get_manager
>>>     self.manager_cache[data_binding] = open_manager(manager_dict, 
>>> initialize)
>>>   File "/home/weewx/bin/weewx/manager.py", line 687, in open_manager
>>>     manager_dict['table_name'])
>>>   File "/home/weewx/bin/weewx/manager.py", line 129, in open
>>>     connection = weedb.connect(database_dict)
>>>   File "/home/weewx/bin/weedb/__init__.py", line 92, in connect
>>>     return driver_mod.connect(**db_dict)
>>>   File "/home/weewx/bin/weedb/mysql.py", line 70, in connect
>>>     database_name=database_name, engine=engine, autocommit=autocommit, 
>>> **kwargs)
>>>   File "/home/weewx/bin/weedb/mysql.py", line 61, in guarded_fn
>>>     raise klass(e)
>>> weedb.CannotConnectError: (2002, "Can't connect to MySQL server on 
>>> 'diskstation' (115)")
>>> 
>>> 0:00:08.384725
>>> 1000.589306640625
>>> [1000.06640625, 999.97119140625, 1001.36669921875, 1000.1455078125, 
>>> 1000.163330078125, 999.9951171875, 1000.04296875, 1000.19921875, 
>>> 1001.275146484375, 1001.266845703125]
>>> LOOP:   2021-02-13 02:57:28 CET (1613181448) altimeter: 30.222221545855962, 
>>> barometer: 30.262156773782465, cloudbase: 1454.6444807035157, dateTime: 
>>> 1613181448, dewpoint: 24.9344792686867, extraTemp2: 66.2, heatindex: 28.58, 
>>> humidex: 28.58, inDewpoint: 39.49696677266399, inHumidity: 39.373779296875, 
>>> inTemp: 64.79432678222656, maxSolarRad: 0.0, outHumidity: 86.0, outTemp: 
>>> 28.58, outTempBatteryStatus: 1, outTempDay: None, outTempNight: 28.58, 
>>> pressure: 29.543253645019227, radiation: 0.0, rainRate: 0.0, usUnits: 1
>>> 0:00:27.803524
>>> 1000.4492431640625
>>> [1000.06640625, 999.97119140625, 1001.279296875, 1000.1455078125, 
>>> 1000.163330078125, 999.9951171875, 1000.04296875, 1000.19921875, 
>>> 1001.275146484375, 1001.266845703125]
>>> LOOP:   2021-02-13 02:57:56 CET (1613181476) altimeter: 30.221958642886392, 
>>> dateTime: 1613181476, extraTemp2: 66.2, inDewpoint: 39.50952906952261, 
>>> inHumidity: 39.3798828125, inTemp: 64.80393981933594, maxSolarRad: 0.0, 
>>> pressure: 29.542995546007383, radiation: 0.016213107638888887, rain: 0.0, 
>>> rainBatteryStatus: 1, rainRate: 0.0, rain_total: 86.704, usUnits: 1
>>> 0:00:10.993303
>>> 1000.4405029296875
>>> [1000.06640625, 999.97119140625, 1001.279296875, 1001.29345703125, 
>>> 1000.163330078125, 999.9951171875, 1000.04296875, 1000.19921875, 
>>> 1001.275146484375, 1001.266845703125]
>>> LOOP:   2021-02-13 02:58:06 CET (1613181486) altimeter: 30.22541163041881, 
>>> dateTime: 1613181486, extraHumid1: 43.0, extraTemp2: 66.18199999999999, 
>>> extraTemp3: 63.5, inDewpoint: 39.55189165879104, inHumidity: 
>>> 39.4317626953125, inTemp: 64.81355285644531, inTempBatteryStatus: 1, 
>>> maxSolarRad: 0.0, pressure: 29.546385438615417, radiation: 0.0, rainRate: 
>>> 0.0, usUnits: 1
>>> 0:00:00.313137
>>> LOOP:   2021-02-13 02:58:07 CET (1613181487) dateTime: 1613181487, 
>>> extraHumid1: 43.0, extraTemp3: 63.5, inTempBatteryStatus: 1, maxSolarRad: 
>>> 0.0, rainRate: 0.0, usUnits: 1
>>> 0:00:14.156020
>>> 1000.5552978515625
>>> [1000.06640625, 999.97119140625, 1001.279296875, 1001.29345703125, 
>>> 1001.2890625, 999.9951171875, 1000.04296875, 1000.19921875, 
>>> 1001.275146484375, 1001.266845703125]
>>> LOOP:   2021-02-13 02:58:19 CET (1613181499) altimeter: 30.228797789343705, 
>>> dateTime: 1613181499, extraTemp2: 66.18199999999999, inDewpoint: 
>>> 39.459679025970544, inHumidity: 39.3890380859375, inTemp: 64.741455078125, 
>>> maxSolarRad: 0.0, pressure: 29.54970972505005, radiation: 0.0, rainRate: 
>>> 0.0, usUnits: 1, UV: 0.0
>>> Traceback (most recent call last):
>>>   File "/home/weewx/bin/user/TCS34725.py", line 115, in __init__
>>>     self.pwm = GPIO.PWM(18, 1000)
>>> RuntimeError: A PWM object already exists for this GPIO channel
>>> 
>>> During handling of the above exception, another exception occurred:
>>> 
>>> Traceback (most recent call last):
>>>   File "./bin/weewxd", line 261, in <module>
>>>     main()
>>>   File "./bin/weewxd", line 148, in main
>>>     engine = weewx.engine.StdEngine(config_dict)
>>>   File "/home/weewx/bin/weewx/engine.py", line 93, in __init__
>>>     self.loadServices(config_dict)
>>>   File "/home/weewx/bin/weewx/engine.py", line 161, in loadServices
>>>     obj = weeutil.weeutil.get_object(svc)(self, config_dict)
>>>   File "/home/weewx/bin/user/PiSensewx.py", line 121, in __init__
>>>     self.Light=TCS34725(0X29, debug=False)
>>>   File "/home/weewx/bin/user/TCS34725.py", line 122, in __init__
>>>     loginf(" Exception during GPIO Init "+ str(Exception))
>>> NameError: name 'loginf' is not defined
>>> 
>>> the mysql exception may be linked to the mysql instance nightly backup. I 
>>> don't remembet having these on the previous nights.
>>> 
>>> the loginf is not defined (I botched my traces in exception handling), 
>>> should have been a print.
>>> ;
>>> PISenseWX.py is the fancy name I gave to my extension.
>>> TCS32725.py is the sample python module provided with the pisense for 
>>> lightsensor use.
>>>  
>>> 
>>>> On Saturday, February 13, 2021 at 7:15:45 PM UTC+1 gjr80 wrote:
>>>> Hi,
>>>> 
>>>> Probably easiest if you post a log extract showing the lead up to a 
>>>> failure and the actual error trace. Also what version of WeeWX are you 
>>>> running and is WeeWX running under python 2 or python 3?
>>>> 
>>>> Gary
>>>>> On Sunday, 14 February 2021 at 03:39:13 UTC+10 [email protected] wrote:
>>>>> Hi, 
>>>>> 
>>>>> My Weewx dies on a daily basis a little before 3AM. The cause for the 
>>>>> dying is some not properly handled exception that I need to fix on my own.
>>>>> 
>>>>> However, the faulty code is in a constructor class call by the 
>>>>> constructor of my user extension (so I would expect it to only be called 
>>>>> once). So the question is : Is there recycling of the user extensions 
>>>>> happening daily?
>>>>> 
>>>>> If yes, is there a clean-up method I can implement in my extension to 
>>>>> prevent the next constructor call from failing.
>>>>> 
>>>>> Regards,
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "weewx-development" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/weewx-development/d8d5ce00-7442-445b-bc6c-d4183b89fcb9n%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-development/1158CEDF-7663-4684-803C-4AB2B03F67CC%40gmail.com.

Reply via email to