<feed xmlns='http://www.w3.org/2005/Atom'>
<title>WebStat analyser, branch webstat-0.5.1</title>
<subtitle>WebStat web site access analyser</subtitle>
<id>http://git.randomdan.homeip.net/repo/webstat/atom?h=webstat-0.5.1</id>
<link rel='self' href='http://git.randomdan.homeip.net/repo/webstat/atom?h=webstat-0.5.1'/>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/'/>
<updated>2026-05-13T14:49:10Z</updated>
<entry>
<title>Check terminated flag in jobPurgeOldLogs</title>
<updated>2026-05-13T14:49:10Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-05-13T14:49:10Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=29f458117184af5b1507cac01b48b41bfbad568a'/>
<id>urn:sha1:29f458117184af5b1507cac01b48b41bfbad568a</id>
<content type='text'>
It's not critical to run to completion during shutdown, we can pick up
where we left off on the next run. This will allow us to bail out
instead of holding up the shutdown process.
</content>
</entry>
<entry>
<title>Fix checking of background job completeness</title>
<updated>2026-05-13T14:21:06Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-05-13T14:21:06Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=3e7a1ce999b2223b321573de19cef840021f77f5'/>
<id>urn:sha1:3e7a1ce999b2223b321573de19cef840021f77f5</id>
<content type='text'>
OK, this is on me. future::valid does not tell you if the thread has
completed and the result is ready. It tells you if there is some state
you can get() maybe later. Here we replace those checks with a 0s wait
and a test to see if the status is ready.
The exit steps are updated to reflect this. Calling reset will invoke
the future's destructor, which blocks until the thread is joined as
needed.
This should hopefully address the issue where the main thread would
still block if it attempted to runJobAsNeeded for a job that was still
running.
</content>
</entry>
<entry>
<title>Remove maxBatches</title>
<updated>2026-05-13T14:01:30Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-05-13T14:01:30Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=868446ad4d8ba33053b048dd4d82b6d4f5328f07'/>
<id>urn:sha1:868446ad4d8ba33053b048dd4d82b6d4f5328f07</id>
<content type='text'>
It's not required; DB insertion occurs only in a background thread now.
</content>
</entry>
<entry>
<title>Force use of std::launch::async</title>
<updated>2026-05-09T23:53:20Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-05-09T23:53:20Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=4739bb6a1565e69492eb0349298d86d4d0daad38'/>
<id>urn:sha1:4739bb6a1565e69492eb0349298d86d4d0daad38</id>
<content type='text'>
Deferred policy is not good enough to avoid blocking the main thread...
it would just mean in blocked later and that's not the point here.
</content>
</entry>
<entry>
<title>Be specific about values from entities table</title>
<updated>2026-05-09T23:41:56Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan@randomdan.homeip.net</email>
</author>
<published>2026-05-09T23:41:56Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=5111c39ad9c1665347471da9fc1ae5737e37cde5'/>
<id>urn:sha1:5111c39ad9c1665347471da9fc1ae5737e37cde5</id>
<content type='text'>
Fixes compatibility with PostgreSQL 18 which fails due to ambiguity.
</content>
</entry>
<entry>
<title>Handle completed curl operations in a job</title>
<updated>2026-05-07T14:41:19Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-05-07T14:41:19Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=157614349f5f4c2387e0a970a4ca3ddaeaa23446'/>
<id>urn:sha1:157614349f5f4c2387e0a970a4ca3ddaeaa23446</id>
<content type='text'>
Removes the need to block the main thread from reading stdin while
performing post curl operation actions, such as updating user agent
details.
</content>
</entry>
<entry>
<title>Add support for conditional job execution</title>
<updated>2026-05-07T14:40:11Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-05-07T14:40:11Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=cbb2035fd33ba84fea56c7a7223c563b925e8649'/>
<id>urn:sha1:cbb2035fd33ba84fea56c7a7223c563b925e8649</id>
<content type='text'>
Performs a check before launching a job thread, rather than just having
it exit immediately.
</content>
</entry>
<entry>
<title>Only call entity insert handler if detail is null</title>
<updated>2026-05-05T11:24:11Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-05-05T11:24:11Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=200c3636b600ac2f997316612f1b1321112496cd'/>
<id>urn:sha1:200c3636b600ac2f997316612f1b1321112496cd</id>
<content type='text'>
Improves handling of entity inserts where the entity already exists and
already has detail; does not call the onInsert handler. This avoids
repeatedly fetching UA detail every time the UA is first seen by a
process.
</content>
</entry>
<entry>
<title>Add override of insert helper for tuples</title>
<updated>2026-05-05T11:17:58Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-05-05T11:17:58Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=f9b4422198281410218e371ffc3e1e4513a9ba7f'/>
<id>urn:sha1:f9b4422198281410218e371ffc3e1e4513a9ba7f</id>
<content type='text'>
When Fields... is more than a single type, returns a tuple of fields,
instead of a single value.
</content>
</entry>
<entry>
<title>Switch to std::map for existingEntities cache</title>
<updated>2026-05-05T09:00:45Z</updated>
<author>
<name>Dan Goodliffe</name>
<email>dan.goodliffe@octal.co.uk</email>
</author>
<published>2026-05-05T09:00:45Z</published>
<link rel='alternate' type='text/html' href='http://git.randomdan.homeip.net/repo/webstat/commit/?id=b7346649926b4357b27aa81238eb34cebe39671b'/>
<id>urn:sha1:b7346649926b4357b27aa81238eb34cebe39671b</id>
<content type='text'>
Insertion cost of flat_map too high when map grows large.
</content>
</entry>
</feed>
