diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-05-18 20:43:51 +0100 |
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2026-05-18 20:43:51 +0100 |
| commit | e1a6654bd5e284842ffbc3b93bd390f3bad7a187 (patch) | |
| tree | a06a68ec6741e3311b74ee347ed8eb2002dba9fa /src/ingestor.hpp | |
| parent | e8a0fb7b9c61d5603a86b52e0f2144a91fd1d84e (diff) | |
| download | webstat-e1a6654bd5e284842ffbc3b93bd390f3bad7a187.tar.bz2 webstat-e1a6654bd5e284842ffbc3b93bd390f3bad7a187.tar.xz webstat-e1a6654bd5e284842ffbc3b93bd390f3bad7a187.zip | |
Add job to retry insertion of log lines which had previously failed
Entities are reparsed and reinserted, removed on success.
Failure to parse updates the entity type to UnparsableLine.
Failure to insert again updates the detail with the reason.
Diffstat (limited to 'src/ingestor.hpp')
| -rw-r--r-- | src/ingestor.hpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/ingestor.hpp b/src/ingestor.hpp index c2a47a4..2050b7c 100644 --- a/src/ingestor.hpp +++ b/src/ingestor.hpp @@ -28,6 +28,7 @@ namespace WebStat { size_t maxBatchSize = 1; minutes checkJobsAfter = 1min; minutes freqIngestParkedLines = 30min; + minutes freqRetryUninsertableLines = 4h; minutes freqPurgeOldLogs = 6h; unsigned int purgeDaysToKeep = 61; // ~2 months unsigned int purgeDeleteMax = 10'000; @@ -78,6 +79,7 @@ namespace WebStat { Job::Result jobReadParkedLines(); Job::Result jobPurgeOldLogs(); Job::Result jobStoreQueuedLines(); + Job::Result jobRetryUninsertableLines(); template<typename... T> void storeLogLine(DB::Connection *, const std::tuple<T...> &) const; @@ -109,8 +111,8 @@ namespace WebStat { Job ingestParkedLines; Job purgeOldLogs; Job storeQueueLines; + Job retryUninsertableLines; - private: template<typename... T> static std::vector<Entity *> entities(std::tuple<T...> &); void fillKnownEntities(std::span<Entity *>) const; void storeNewEntities(DB::Connection *, std::span<Entity *>) const; |
