Some checks failed
deploy / deploy (push) Failing after 47s
Proof: Live investigation showed doran-1 entered NodeNotReady with kubelet SystemOOM and TLS/control-plane timeouts while near-intents-ingest, history-writer, and operator-dashboard were the largest Node memory consumers. This commit adds websocket publish backpressure for the raw quote firehose and pod memory guardrails for the affected services. Assumptions: Dropping quote frames while Kafka publishing is backpressured is safer than allowing unbounded in-flight publishes to take down the single-node cluster; retained Kafka/Postgres history remains best-effort under overload until the platform has enough capacity for full raw retention. Still fake: This does not add durable queue spillover for skipped raw websocket frames, does not resize the node, and does not prove fee-complete trading PnL.
23 lines
875 B
JavaScript
23 lines
875 B
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { readFileSync } from 'node:fs';
|
|
|
|
const manifest = readFileSync(new URL('../deploy/k8s/base/unrip.yaml', import.meta.url), 'utf8');
|
|
|
|
function deploymentBlock(name) {
|
|
const pattern = new RegExp(
|
|
`kind: Deployment\\nmetadata:\\n name: ${name}\\n[\\s\\S]*?(?=\\n---\\napiVersion:|\\n?$)`,
|
|
);
|
|
const match = manifest.match(pattern);
|
|
assert.ok(match, `expected deployment ${name}`);
|
|
return match[0];
|
|
}
|
|
|
|
for (const name of ['near-intents-ingest', 'history-writer', 'operator-dashboard']) {
|
|
test(`${name} has memory guardrails for live quote pressure`, () => {
|
|
const block = deploymentBlock(name);
|
|
|
|
assert.match(block, /name: NODE_OPTIONS\s+value: "--max-old-space-size=896"/);
|
|
assert.match(block, /resources:\s+requests:\s+memory: 256Mi\s+limits:\s+memory: 1280Mi/);
|
|
});
|
|
}
|