| Commit message (Collapse) | Author | Age | |
|---|---|---|---|
| * | Insert log entries in batches | Dan Goodliffe | 2026-03-20 |
| | | | | | | | | | | | Store log lines in memory until threshold is reach or idle occurs, then insert all the lines in a single transaction. Save points handle the case of insertion errors. On success the queue is cleared. Parked lines also saved in bulk, only necessary if queued lines could not be inserted on shutdown, else the queue simply grows until ability to insert is restored. Importing parked lines just adds them to the queue and the normal process then follows. | ||
| * | Gracefully handle SIGTERM | Dan Goodliffe | 2026-03-19 |
| | | | | | | Apache sends SIGTERM to the logger process to it shutdown. Honestly I thought it would just close stdin and I should have checked. | ||
| * | Count and return the number of parked lines ingested | Dan Goodliffe | 2026-03-18 |
| | | |||
| * | Replace unique constraint on entity value with index on hash | Dan Goodliffe | 2026-03-18 |
| | | | | | | | | UNIQUE CONSTRAINT is limited to 2704 bytes, which prevents inserting large values. Here we swap to a unique index on the MD5 hash of the value. This should more than suffice given we already map to a 32bit for the id and the index size is much much smaller. | ||
| * | Fix typo in access_log_view definition | Dan Goodliffe | 2026-03-18 |
| | | | | | Replaces accidentally duplicated user_agent for correct content_type. | ||
| * | Use std::future over std::thread for background jobs | Dan Goodliffe | 2026-03-17 |
| | | | | | | Easier checking if a job has completed [successfully] and reseting state for the next time. | ||
| * | Don't start new curl operations outside the main thread | Dan Goodliffe | 2026-03-17 |
| | | | | | | Neither the curl handle, not the operation map is thread safe. This isn't ideal, but it does solve the problem in a safe manor. | ||
| * | Execute jobs even when processing incoming logs | Dan Goodliffe | 2026-03-17 |
| | | | | | | Jobs run on background threads now, so we can happily run them even when we're busy. | ||
| * | Run jobs on a background thread | Dan Goodliffe | 2026-03-17 |
| | | |||
| * | Process new field, content-type, in input stream | Dan Goodliffe | 2026-01-18 |
| | | |||
| * | Attempt to save uninsertable log lines to the entities table | Dan Goodliffe | 2026-01-17 |
| | | | | | | | If that fails, we still park them as before, such as when the DB is unavailable. Those which are saved as entities require investigation why they couldn't be saved, much like UnparsableLines. | ||
| * | pg_format schema.sql and sql/*.sql | Dan Goodliffe | 2026-01-17 |
| | | | | | No changes. | ||
| * | Add job for puring old access log entries from the database | Dan Goodliffe | 2025-12-20 |
| | | |||
| * | Add a few no lint comments | Dan Goodliffe | 2025-12-20 |
| | | |||
| * | Add support for configuring frequency of parked line job | Dan Goodliffe | 2025-12-20 |
| | | |||
| * | Add utility for parsing an ISO like duration | Dan Goodliffe | 2025-12-20 |
| | | |||
| * | Replace that awful magic number heavy mapping function | Dan Goodliffe | 2025-10-16 |
| | | | | | | Now a tuple of mapping functors and we pass each value through its corresponding converter. | ||
| * | Refactor handling of new entity insert | Dan Goodliffe | 2025-10-15 |
| | | | | | | Replaces weird select with one thing with a function pointer stored in the type definition array. | ||
| * | Update comments on custom_log format | Dan Goodliffe | 2025-10-15 |
| | | |||
| * | Add access_log_view | Dan Goodliffe | 2025-10-15 |
| | | | | | | A pre-joined with entities view showing all the original data along with ids; ideal for human readable stuff. | ||
| * | Allows handle curl things if there are anywebstat-0.2.2 | Dan Goodliffe | 2025-10-10 |
| | | |||
| * | Fix premature remembering of saved entity idswebstat-0.2.1 | Dan Goodliffe | 2025-10-09 |
| | | | | | | | | Don't persist entity ids saved to the DB until the transaction is committed. Prevents the issue where a later DB operation fails, the transaction is rolled back, but we still think the entity has been saved. | ||
| * | Fix up QuotedString/CLFString parsing | Dan Goodliffe | 2025-10-09 |
| | | | | | | | | | Refactors CLFString in terms of QuotedString, but with the optional of being null (nullopt) Moves the whole decode function into QuotedString's parser, fixing support for escaping of " which would otherwise prematurely end the string in the middle. | ||
| * | Add PROPFIND to http_verb list | Dan Goodliffe | 2025-10-09 |
| | | |||
| * | Add parked line import jobwebstat-0.2 | Dan Goodliffe | 2025-10-06 |
| | | | | | Periodically, on idle, scan for and import previously parked lines. | ||
| * | Add point to execute scheduled jobs when idle | Dan Goodliffe | 2025-10-02 |
| | | |||
| * | Switch to PostgreSQL's oid type for entity ids | Dan Goodliffe | 2025-09-30 |
| | | | | | | oid is an "unsigned 4 byte integer", which matches our crc32 approach perfectly, and is half the storage cost of bigint. | ||
| * | Write log lines to files on error | Dan Goodliffe | 2025-09-30 |
| | | | | | | We call this parking, later we can reattempt ingestion after whatever caused the failure has been fixed. | ||
| * | Create settings structure | Dan Goodliffe | 2025-09-24 |
| | | | | | | | | Holds all the settings and their defaults for use in program_options and tests. Disables missing-field-initializers in tests because its over sensitive to structures with defaults where you only provide some values specifically. | ||
| * | Write unparsable lines to the entity table | Dan Goodliffe | 2025-09-23 |
| | | | | | Diagnostics and the ability to ingest later. | ||
| * | Make DB pool protected for access from unit tests | Dan Goodliffe | 2025-09-23 |
| | | |||
| * | Gracefully handle fatal exceptions and display message | Dan Goodliffe | 2025-09-19 |
| | | |||
| * | Create and perform UA lookup curl op when new user agent is encountered | Dan Goodliffe | 2025-09-13 |
| | | |||
| * | Perform background curl operations when not processing log input | Dan Goodliffe | 2025-09-13 |
| | | |||
| * | Always pass API URL to curlGetUserAgentDetail | Dan Goodliffe | 2025-09-13 |
| | | |||
| * | Simplify storeEntities with bindMany | Dan Goodliffe | 2025-09-10 |
| | | |||
| * | Use curl_multi_poll in main ingestLog loop | Dan Goodliffe | 2025-09-10 |
| | | | | | Preparation step for having background curl operations. | ||
| * | Change getUserAgentDetail to return a packaged CURL object | Dan Goodliffe | 2025-09-05 |
| | | | | | | This will be usable with curl_multi_* instead of being a single synchronous request. | ||
| * | Replace DeleteWith lambda with a normal type | Dan Goodliffe | 2025-09-05 |
| | | | | | Lambdas have internal linkage. | ||
| * | Add function to grab UA details from useragentstring.com | Dan Goodliffe | 2025-09-04 |
| | | |||
| * | Add libcurl | Dan Goodliffe | 2025-09-04 |
| | | |||
| * | Move DeleteWith helper in src/util | Dan Goodliffe | 2025-09-04 |
| | | |||
| * | Store utsname details in the host's detail field | Dan Goodliffe | 2025-09-02 |
| | | |||
| * | Add bindMany helper | Dan Goodliffe | 2025-09-02 |
| | | |||
| * | Add entity detail column | Dan Goodliffe | 2025-09-02 |
| | | |||
| * | Tag entities with their typewebstat-0.1.1 | Dan Goodliffe | 2025-09-01 |
| | | |||
| * | Reuse same insert entity command | Dan Goodliffe | 2025-09-01 |
| | | |||
| * | Support configuring the DB pool | Dan Goodliffe | 2025-09-01 |
| | | |||
| * | Use a DB connection pool rather than a single connection | Dan Goodliffe | 2025-09-01 |
| | | |||
| * | Add basic boost::program_options support | Dan Goodliffe | 2025-09-01 |
| | | |||
