mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-11-01 18:19:43 +00:00
perf(api): bound worker pools and add telemetry
Share one configured PostgreSQL pool across worker repositories and make API and worker connection budgets explicit. Add privacy-safe aggregate request, query, pool, sync, and outbox telemetry, a loopback-only representative load fixture, bounded worker shutdown, and focused regression and integration coverage. Document the database-wide budget formula and defer pg_stat_statements activation to a reviewed migration and planned restart.
This commit is contained in:
1 parent
a13bbc3f65
commit
5c973c4ac5
25 files changed
+471
-16
No files matched your search
@@ -27,6 +27,7 @@ import type { FilesystemMediaStorage } from './domains/media/storage.js';
|
||||
import type { AdminRequestAuth } from './domains/admin/auth.js';
|
||||
import type { AdminRepository } from './domains/admin/repository.js';
|
||||
import { registerAdminRoutes } from './domains/admin/routes.js';
|
||||
import { recordRequest } from './telemetry.js';
|
||||
|
||||
type Variables = { identity: AuthIdentity };
|
||||
|
||||
@@ -57,6 +58,18 @@ function error(code: string, message: string): ApiErrorResponse {
|
||||
export function createApp(deps: AppDependencies): Hono<{ Variables: Variables }> {
|
||||
const app = new Hono<{ Variables: Variables }>();
|
||||
|
||||
app.use('*', async (c, next) => {
|
||||
const startedAt = performance.now();
|
||||
try {
|
||||
await next();
|
||||
} finally {
|
||||
// Hono returns the matched template after dispatch, never the raw path.
|
||||
const candidate = c.req.routePath;
|
||||
const route = candidate && !/[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}/i.test(candidate) && !candidate.includes('?') ? candidate : 'unmatched';
|
||||
recordRequest(c.req.method, route, c.res.status, startedAt);
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/health/live', (c) => c.json({ status: 'ok' }));
|
||||
app.get('/health/ready', async (c) => {
|
||||
try {
|
||||
|
||||
Reference in new issue
Block a user