fix(audit): do not record-audit indexing bookkeeping #61

Merged
KofTwentyTwo merged 1 commits from feature/quiet-index-bookkeeping-audits into develop 2026-10-15 12:52:27 +00:00
KofTwentyTwo commented 2026-10-15 12:47:41 +00:00 (Migrated from github.com)

Problem

On kof22 production, quick_search_index produced 2,806 audit rows in 6 hours ("Record was Edited during process: Update search index"), plus settings edits on every startup. The fields involved are indexing bookkeeping: lastBasepullTime, documentCount, status, last run, realTimeErrorCount, and the settings row's lastPrimedAt and summary.

Change

  • AbstractIndexingStep.updateIndexRow (every runtime write to the index row from basepull and full reindex) sets omitDmlAudit.
  • The real-time error counter increment sets omitDmlAudit.
  • The primer's update of the settings row, which only records the priming outcome, sets omitDmlAudit through a new updateAll(table, records, omitAudit) overload.
  • Admin edits through the tables, the config processes (pause, stop, enable) and the first creation of rows are still audited.

Tests

  • BasepullIndexStepTest.testBasepullBookkeeping_isNotAudited_adminEditIs: a basepull writes no edit audit (it wrote 2 before this change), and an admin interval edit writes one.
  • QuickSearchConfigPrimerTest.testRepriming_settingsBookkeepingIsNotAudited: re-priming adds no audit, and an admin settings edit adds one.
  • ./mvnw verify passes, including the OpenSearch integration tests.

Merging with release:rc cuts the next RC.

🤖 Generated with Claude Code

## Problem On kof22 production, `quick_search_index` produced 2,806 audit rows in 6 hours ("Record was Edited during process: Update search index"), plus settings edits on every startup. The fields involved are indexing bookkeeping: `lastBasepullTime`, `documentCount`, status, last run, `realTimeErrorCount`, and the settings row's `lastPrimedAt` and summary. ## Change - `AbstractIndexingStep.updateIndexRow` (every runtime write to the index row from basepull and full reindex) sets `omitDmlAudit`. - The real-time error counter increment sets `omitDmlAudit`. - The primer's update of the settings row, which only records the priming outcome, sets `omitDmlAudit` through a new `updateAll(table, records, omitAudit)` overload. - Admin edits through the tables, the config processes (pause, stop, enable) and the first creation of rows are still audited. ## Tests - `BasepullIndexStepTest.testBasepullBookkeeping_isNotAudited_adminEditIs`: a basepull writes no edit audit (it wrote 2 before this change), and an admin interval edit writes one. - `QuickSearchConfigPrimerTest.testRepriming_settingsBookkeepingIsNotAudited`: re-priming adds no audit, and an admin settings edit adds one. - `./mvnw verify` passes, including the OpenSearch integration tests. Merging with `release:rc` cuts the next RC. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.