diff options
| author | Dan Goodliffe <dan.goodliffe@octal.co.uk> | 2026-05-01 10:32:48 +0100 |
|---|---|---|
| committer | Dan Goodliffe <dan.goodliffe@octal.co.uk> | 2026-05-01 10:32:48 +0100 |
| commit | 1c929e46d8e7b14a74f80a21b5f30c9abbee410f (patch) | |
| tree | 9fa41d54696d91ce523a3830640d949e98f31760 /src/ingestor.hpp | |
| parent | ada3ab9f84dfa2df733d48d516476203a361ac63 (diff) | |
| download | webstat-1c929e46d8e7b14a74f80a21b5f30c9abbee410f.tar.bz2 webstat-1c929e46d8e7b14a74f80a21b5f30c9abbee410f.tar.xz webstat-1c929e46d8e7b14a74f80a21b5f30c9abbee410f.zip | |
Limit the number lines stored at once
Limits the number lines inserted per transactions, and the number of
transactions before returning to reading input.
Prevents long running transactions in the case when queued lines has
grown in size.
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 195f325..916f200 100644 --- a/src/ingestor.hpp +++ b/src/ingestor.hpp @@ -26,6 +26,7 @@ namespace WebStat { unsigned int dbMax = 4; unsigned int dbKeep = 2; size_t maxBatchSize = 1; + size_t maxBatches = 5; minutes checkJobsAfter = 1min; minutes freqIngestParkedLines = 30min; minutes freqPurgeOldLogs = 6h; @@ -39,6 +40,7 @@ namespace WebStat { class Ingestor { public: using LineBatch = std::vector<std::string>; + using LinesView = std::span<const std::string>; Ingestor(const utsname &, IngestorSettings); Ingestor(const utsname &, DB::ConnectionPoolPtr, IngestorSettings); @@ -54,7 +56,7 @@ namespace WebStat { void ingestLog(std::FILE *); void tryIngestQueuedLogLines(); - void ingestLogLines(DB::Connection *, const LineBatch & lines); + void ingestLogLines(DB::Connection *, LinesView lines); std::expected<std::filesystem::path, int> parkQueuedLogLines(); void runJobsAsNeeded(); |
