fix(netflow): починить live-аналитику и снизить запись в PostgreSQL
Docker images / prepare-release (push) Successful in 11s
Docker images / backend-test (push) Successful in 2m9s
Docker images / frontend-image (push) Successful in 3m20s
Docker images / updater-image (push) Successful in 49s
Docker images / backend-image (push) Successful in 2m44s
Docker images / notify-webhook (push) Skipped
Docker images / publish-release (push) Successful in 10s

Коллектор снова отдаёт назначения в живом потоке. Ошибки записи видны в статусе, лишние перезаписи минутных агрегатов убраны.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-09-08 12:46:37 +07:00
co-authored by Cursor
parent c6c859a495
commit 39c8ec4a02
15 changed files with 300 additions and 52 deletions
@@ -16,6 +16,29 @@ import {
seedRipeCacheForTests,
} from "./traffic-flow-ripe.js"
{
const liveErr = await formatLiveSseFromBuilder(() => {
throw new Error("SQLITE_BUSY")
})
assert.equal(liveErr.event, "error")
assert.equal((liveErr.data as { error: string }).error, "SQLITE_BUSY")
const liveOk = await formatLiveSseFromBuilder(() => ({ ok: true }))
assert.equal(liveOk.event, "sample")
const liveAsync = await formatLiveSseFromBuilder(async () => ({
uniqueSrc: 3,
destinations: [{ id: "8.8.8.8", label: "8.8.8.8", bytes: 1, packets: 1, bps: 1, percent: 100 }],
}))
assert.equal(liveAsync.event, "sample")
assert.notEqual(JSON.stringify(liveAsync.data), "{}")
assert.equal((liveAsync.data as { uniqueSrc: number }).uniqueSrc, 3)
assert.ok(Array.isArray((liveAsync.data as { destinations: unknown[] }).destinations))
const liveReject = await formatLiveSseFromBuilder(async () => {
throw new Error("pg down")
})
assert.equal(liveReject.event, "error")
assert.equal((liveReject.data as { error: string }).error, "pg down")
}
if (!(await withPgOrSkip())) {
console.log("traffic-flow-analytics.test.ts: skip")
process.exit(0)
@@ -248,13 +271,6 @@ try {
assert.equal(degraded.degraded, true)
assert.equal(degraded.conversationsList.length, 0)
assert.ok((degraded.bytes ?? 0) >= 12_000)
const liveErr = formatLiveSseFromBuilder(() => {
throw new Error("SQLITE_BUSY")
})
assert.equal(liveErr.event, "error")
assert.equal((liveErr.data as { error: string }).error, "SQLITE_BUSY")
const liveOk = formatLiveSseFromBuilder(() => ({ ok: true }))
assert.equal(liveOk.event, "sample")
const exporters = await listFlowExporters(5)
const clients = await listFlowClients(5)
assert.ok(Array.isArray(exporters.exporters))