--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/a5a51863-37cf-42fd-89de-2bd57daba495n%40googlegroups.com.
On Aug 2, 2026, at 6:20 PM, Vince Skahan <vince...@gmail.com> wrote:
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/601fbfee-f261-41cf-8997-0985112939ebn%40googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/601fbfee-f261-41cf-8997-0985112939ebn%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/25409997-6a59-4d15-adc8-6da4e7954d4cn%40googlegroups.com.
On Aug 3, 2026, at 2:12 PM, Tom Keffer <tke...@gmail.com> wrote:
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/CAPq0zEBy92cG-8Le19HBnvc%3DpywTLZczNLW3YTE%2Bk0708pa7KQ%40mail.gmail.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/8183CDE9-EBB2-487F-AB16-D524374104AF%40johnkline.com.
Is there really full locking, vs using transactions? SERIALIZABLE, orjust READ COMMITTED?
--You received this message because you are subscribed to the Google Groups "weewx-user" group.To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/rmi8q6mhn2x.fsf%40s1.lexort.com.
On Aug 3, 2026, at 4:11 PM, Pablo Sanchez <pa...@hillsandlakes.com> wrote:
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/19fc9e4a240.2848.44b74f35a7a433c111dbfaee4cca1c2d%40hillsandlakes.com.
On Aug 3, 2026, at 4:58 PM, Vince Skahan <vince...@gmail.com> wrote:
No it doesn’t say that in anything I’ve read or have been told via email.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/650a2beb-76c1-4058-b0d1-5c1123b780c2n%40googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/650a2beb-76c1-4058-b0d1-5c1123b780c2n%40googlegroups.com.
On Aug 3, 2026, at 5:34 PM, Pablo Sanchez <pa...@hillsandlakes.com> wrote:
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/19fca31d010.2848.44b74f35a7a433c111dbfaee4cca1c2d%40hillsandlakes.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/650a2beb-76c1-4058-b0d1-5c1123b780c2n%40googlegroups.com.
On Aug 3, 2026, at 7:04 PM, Vince Skahan <vince...@gmail.com> wrote:
I suggested trying to bisect the commits by trying versions between what worked and what doesn’t to try to pin down which commit was the one that triggered the issue, but that’s a lot of work.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/9c49e70a-d2b2-4d1d-9e12-f8e1cd0b34f8n%40googlegroups.com.
On Aug 3, 2026, at 7:17 PM, t...@tom.org <t...@tom.org> wrote:
OP here, lol. As I said in the issue discussion, this deployment is a reference implementation for poor performance. I think the important issue is that in this instance, when the report cycle exceeded the archive interval, weewx didn't tell me that since another report was running, it would abort this cycle. It just tried to run a new cycle while the other one was still running. I get that it's not optimal for instances to take that long to run a report cycle, but it happens and weewx is designed and built to handle it. For some reason, it just plows ahead with another run which starts the crud happening.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/084f02e7-129e-4903-a500-2b9b61afd018n%40googlegroups.com.
weewx is designed and built to handle it
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/084f02e7-129e-4903-a500-2b9b61afd018n%40googlegroups.com.
• 10:00:21 → 10:04:11 — that thread is doing network I/O: forecast download finishes 10:02:34, Xweather AQI fallback 10:04:11. No “Generated N files” line ever appears, so it never finished
• 10:05:18 — next archive record written fine
• 10:05:23.827 — Main loop exiting. Shutting engine down. The engine is dying (not rotating a report cycle).
• 10:05:43.827 — Unable to shut down StdReport thread, exactly 20.000 s later (join() timeout expiring).
• 10:05:44 — database is locked
On Aug 4, 2026, at 4:47 AM, Greg Troxel <g...@lexort.com> wrote:
--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/rmimrv2f6pr.fsf%40s1.lexort.com.
On Aug 4, 2026, at 5:51 AM, t...@tom.org <t...@tom.org> wrote:
Yes this is the behavior I have seen (Matthew is not hallucinating!) for a long time and it is not happening here. Also, John showed in the logs that the extension name and version are only printed to the console on the first run. Subsequent runs are silent until the message about how many files were generated, so while it looks like there is no evidence of a rogue report run, it's happening silently (and you can see it on CPU too).
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/d8fc89c7-0550-43b0-aaed-9a7dfb8f2711n%40googlegroups.com.
On Aug 4, 2026, at 6:03 AM, John Kline <jo...@johnkline.com> wrote:
On Aug 4, 2026, at 6:11 AM, t...@tom.org <t...@tom.org> wrote:
Yes, John, except changing max_wait had no effect in my case.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/72d6e8b1-5f4f-4adc-ae77-2a1ceada1276n%40googlegroups.com.
On Aug 4, 2026, at 6:26 AM, John Kline <jo...@johnkline.com> wrote:
On Aug 4, 2026, at 8:10 AM, John Kline <jo...@johnkline.com> wrote:
On Aug 4, 2026, at 11:41 AM, John Kline <jo...@johnkline.com> wrote:
max_wait defaults to 600 (line 847). The behavior you and Matthew remember is intact.
Why you never see the message. Callbacks for an event run in registration order — bind() appends to a list, dispatchEvent() walks it (lines 224-241). Services register in the order they’re loaded, and the archive service registers for POST_LOOP ahead of the report service. Your own log shows the consequence: the archive record was written at 10:05:18, which happens inside the archive service’s POST_LOOP handler — so POST_LOOP was mid-dispatch when the OperationalError hit at 10:05:23. An exception in one callback aborts the whole dispatch. launch_report_thread(), later in the chain, was never called. The guard didn’t fail to log; it never ran.
That’s also the answer to “why did changing max_wait have no effect”: neither branch of that test is being reached.
A second report cycle did not start. Two independent reasons. The guard logs on both paths — the abort message under 600 seconds, the “Launching report thread anyway” warning over it — and neither appears anywhere in your log, which plainly isn’t filtering INFO. And the arithmetic forbids it anyway: the report thread launched at 10:00:21 and the engine died at 10:05:23. It was 302 seconds old. It cannot have reached the 600-second threshold, and the restart resets the launch clock, so nothing carries over.
If you want this settled by observation instead of argument, py-spy dump lists every thread in the process with its stack. Two report engines would be two entries. One dump ends the debate.
Where weewx could be better. It just isn’t the abort logic. Four things, and they compound:
1. There is no way to interrupt a running generator. shutDown() calls join(20.0), and that is the entire shutdown mechanism — no flag, no exception injected, nothing signalled. The report thread isn’t ignoring a request to stop; no request exists. “Unable to shut down StdReport thread” is a wait that expired, worded like an attempt that was refused.
2. The surviving thread becomes untracked. When the engine restarts, the new StdReport starts with self.thread = None. The orphan is no longer joined, checked, or counted — it is invisible to the very guard we’ve been discussing. The protection you’re asking about stops applying to the one thread that most needs it.
3. weewxd restarts the engine in the same process immediately after being told the shutdown failed. The orphan survives into the new engine’s lifetime, still holding database reads. Exiting the process and letting the supervisor restart it would kill the orphan for free.
4. The result is self-sustaining. The orphan holds reads; the new engine’s archive write collides with them; the engine dies with the same error; repeat. Your 10:07 restart is iteration two: up at 10:07:44, record at 10:07:55, dead at 10:08:00 — and no “Shutting down StdReport thread” line this time, because the new engine had no report thread of its own. On 1 vCPU, the orphan is also competing with the main loop for your only core.
Arguably a fifth: treating “database is locked” as fatal. It’s a transient condition; retrying the write would be proportionate. Tearing down the engine is what converts a slow report into a crash loop.
On beta4. I diffed it against beta3. The scan is unchanged — same _archive_latest_numeric, same unbounded query. What changed is the gating: a new aqi_source option (auto / local / forecast), with the archive path running only when
local_aqi_enabled = aqi_enabled and aqi_source in (“auto”, “local”)
aqi_source defaults to “auto” — which is in that tuple. On defaults, beta4 still runs the scans. So: which did you set? If you set aqi_source = forecast, that explains your speedup, and the bug remains live for anyone on defaults with a big database. If you’re on auto and it’s still fast, my diagnosis is incomplete and something else in beta4 deserves credit.
For the skin author: bound the lookback instead of gating the caller. The query walks backwards from the newest row — instant when the column has current data, a full scan of the table when it doesn’t. A WHERE dateTime >= ? window of a day or two gives the identical answer for any station with a working PM sensor and costs nothing for one without. Config gating leaves the landmine armed for the next person with thirteen years of data who never touches aqi_source.
--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/EFF848BB-B01B-4B73-B7C1-A3E7C06A718A%40johnkline.com.
On Aug 4, 2026, at 3:32 PM, Tom Keffer <tke...@gmail.com> wrote:
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/CAPq0zEC9LT%3DnW6JOQ1-D5iEt20u23up3Z%2B0-nKa4s3y3dbRLgg%40mail.gmail.com.
On Aug 4, 2026, at 4:27 PM, Vince Skahan <vince...@gmail.com> wrote:John - I see no aqi_source in the weectl debug the o.p. sent me. He must be running whatever the default is unless he edited skin.conf to set it there.
--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/b0f4e2d7-ceef-4ea6-a48d-aa1030f08707n%40googlegroups.com.
On Aug 4, 2026, at 5:01 PM, t...@tom.org <t...@tom.org> wrote:
OP here. No skin.conf and no aqi_source configured:
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/d91d8619-53dd-49b0-b3f0-76292f8737c8n%40googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/55F7E600-C97B-4AF1-8ECD-3A75FEC5E9EC%40johnkline.com.
--
You received this message because you are subscribed to a topic in the Google Groups "weewx-user" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/weewx-user/9AIS1DRHl00/unsubscribe.
To unsubscribe from this group and all its topics, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/B54515BC-B58E-4A04-961F-EB8E915183CC%40johnkline.com.
On Aug 4, 2026, at 6:38 PM, Tom Mitchell <t...@tom.org> wrote:
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/CAKVzASCkqR8J1Hc9cDQcmreuQRvFPN2f45MLxEGNd7-0vktK2w%40mail.gmail.com.
The 519 s cycle was a cold start: you’d just scanned the database from sqlite3 and restarted the container, so nothing was cached and the first cycle paid your measured ~190 s cold scan plus first-run forecast work. The next cycle — 103 s — is your real steady state, right in line with your ~150 s warm scan doing most of the work.
And note 21:50:20: “Launch of report thread aborted: existing report thread still running.” That’s the message this thread began by saying never appears. It was always there — it just needs the process to survive to the next archive boundary, and beta4’s shorter lock windows finally let it.
Your cycles are still spending most of their time on that one empty-column scan. Bound the lookback and they drop from ~100 s to ~10.
--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/rmiecgcbyfd.fsf%40s1.lexort.com.
--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/432b6d34-7aee-4e68-a13b-d000f355c741n%40googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/9e1a986b-2dcb-4aee-9afe-e6f16830f005n%40googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/weewx-user/b8a1201d-aa28-4cbb-b341-ba3cd9c8d971n%40googlegroups.com.