@secondlayer/subgraphs 1.3.3 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/runtime/processor.js +47 -4
- package/dist/src/runtime/processor.js.map +3 -3
- package/dist/src/runtime/reorg.d.ts +13 -2
- package/dist/src/runtime/reorg.js +47 -4
- package/dist/src/runtime/reorg.js.map +3 -3
- package/dist/src/service.js +47 -4
- package/dist/src/service.js.map +3 -3
- package/package.json +2 -2
|
@@ -2075,12 +2075,55 @@ async function handleSubgraphReorg(blockHeight, loadSubgraphDef) {
|
|
|
2075
2075
|
if (!schema)
|
|
2076
2076
|
continue;
|
|
2077
2077
|
const schemaName = sg.schema_name ?? pgSchemaName(sg.name);
|
|
2078
|
-
|
|
2079
|
-
|
|
2078
|
+
const tableNames = Object.keys(schema);
|
|
2079
|
+
const revertedByTable = {};
|
|
2080
|
+
for (const tableName of tableNames) {
|
|
2081
|
+
const rows = await client.unsafe(`SELECT * FROM "${schemaName}"."${tableName}" WHERE "_block_height" >= $1 LIMIT 1000`, [blockHeight]);
|
|
2082
|
+
if (rows.length > 0)
|
|
2083
|
+
revertedByTable[tableName] = rows;
|
|
2084
|
+
}
|
|
2085
|
+
for (const tableName of tableNames) {
|
|
2086
|
+
await client.unsafe(`DELETE FROM "${schemaName}"."${tableName}" WHERE "_block_height" >= $1`, [blockHeight]);
|
|
2087
|
+
}
|
|
2088
|
+
for (const [tableName, rows] of Object.entries(revertedByTable)) {
|
|
2089
|
+
if (rows.length === 0)
|
|
2090
|
+
continue;
|
|
2091
|
+
await targetDb.insertInto("subscription_outbox").columns([
|
|
2092
|
+
"subscription_id",
|
|
2093
|
+
"event_type",
|
|
2094
|
+
"payload",
|
|
2095
|
+
"dedup_key",
|
|
2096
|
+
"row_pk",
|
|
2097
|
+
"status"
|
|
2098
|
+
]).expression((eb) => eb.selectFrom("subscriptions").select((eb2) => [
|
|
2099
|
+
"id as subscription_id",
|
|
2100
|
+
eb2.val(`${sg.name}.${tableName}.reverted`).as("event_type"),
|
|
2101
|
+
eb2.val(JSON.stringify({
|
|
2102
|
+
subgraph: sg.name,
|
|
2103
|
+
table: tableName,
|
|
2104
|
+
reorgFromHeight: blockHeight,
|
|
2105
|
+
rows
|
|
2106
|
+
})).as("payload"),
|
|
2107
|
+
eb2.val(`reorg:${sg.name}:${tableName}:${blockHeight}`).as("dedup_key"),
|
|
2108
|
+
eb2.val({
|
|
2109
|
+
subgraph: sg.name,
|
|
2110
|
+
table: tableName,
|
|
2111
|
+
reorgRoot: blockHeight
|
|
2112
|
+
}).as("row_pk"),
|
|
2113
|
+
eb2.val("pending").as("status")
|
|
2114
|
+
]).where("subgraph_name", "=", sg.name).where("table_name", "=", tableName).where("status", "=", "active")).onConflict((oc) => oc.column("dedup_key").doNothing()).execute().catch((err) => {
|
|
2115
|
+
logger7.warn("Failed to emit revert event for subscriptions", {
|
|
2116
|
+
subgraph: sg.name,
|
|
2117
|
+
table: tableName,
|
|
2118
|
+
blockHeight,
|
|
2119
|
+
error: getErrorMessage3(err)
|
|
2120
|
+
});
|
|
2121
|
+
});
|
|
2080
2122
|
}
|
|
2081
2123
|
logger7.info("Subgraph reorg cleanup done", {
|
|
2082
2124
|
subgraph: sg.name,
|
|
2083
|
-
blockHeight
|
|
2125
|
+
blockHeight,
|
|
2126
|
+
tablesAffected: Object.keys(revertedByTable).length
|
|
2084
2127
|
});
|
|
2085
2128
|
const def = await loadSubgraphDef(sg);
|
|
2086
2129
|
await processBlock(def, sg.name, blockHeight);
|
|
@@ -2993,5 +3036,5 @@ export {
|
|
|
2993
3036
|
startSubgraphOperationRunner
|
|
2994
3037
|
};
|
|
2995
3038
|
|
|
2996
|
-
//# debugId=
|
|
3039
|
+
//# debugId=6BCC2C34E1ACFA3464756E2164756E21
|
|
2997
3040
|
//# sourceMappingURL=processor.js.map
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"import type { ColumnType, SubgraphDefinition } from \"../types.ts\";\nimport { pgSchemaName } from \"./utils.ts\";\n\nexport const TYPE_MAP: Record<ColumnType, string> = {\n\ttext: \"TEXT\",\n\tuint: \"NUMERIC\",\n\tint: \"NUMERIC\",\n\tprincipal: \"TEXT\",\n\tboolean: \"BOOLEAN\",\n\ttimestamp: \"TIMESTAMPTZ\",\n\tjsonb: \"JSONB\",\n};\n\nexport interface GeneratedSQL {\n\tstatements: string[];\n\thash: string;\n}\n\nfunction escapeLiteralDefault(value: unknown): string {\n\tif (value === null || value === undefined) return \"NULL\";\n\tif (typeof value === \"number\" || typeof value === \"bigint\")\n\t\treturn String(value);\n\tif (typeof value === \"boolean\") return value ? \"TRUE\" : \"FALSE\";\n\treturn `'${String(value).replace(/'/g, \"''\")}'`;\n}\n\n/**\n * Generates PostgreSQL DDL statements for a subgraph definition.\n * Creates a dedicated schema `subgraph_<name>` with one table per schema entry,\n * each with auto-columns and indexes.\n */\nexport function generateSubgraphSQL(\n\tdef: SubgraphDefinition,\n\tschemaNameOverride?: string,\n): GeneratedSQL {\n\tconst schemaName = schemaNameOverride ?? pgSchemaName(def.name);\n\tconst statements: string[] = [];\n\n\t// Check if any column uses search (trigram)\n\tconst needsTrgm = Object.values(def.schema).some((table) =>\n\t\tObject.values(table.columns).some((col) => col.search),\n\t);\n\n\tif (needsTrgm) {\n\t\tstatements.push(\"CREATE EXTENSION IF NOT EXISTS pg_trgm\");\n\t}\n\n\t// Schema namespace\n\tstatements.push(`CREATE SCHEMA IF NOT EXISTS ${schemaName}`);\n\n\t// One table per schema entry\n\tfor (const [tableName, tableDef] of Object.entries(def.schema)) {\n\t\tconst qualifiedName = `${schemaName}.${tableName}`;\n\n\t\t// Auto-columns + user columns\n\t\tconst columnDefs: string[] = [\n\t\t\t\"_id BIGSERIAL PRIMARY KEY\",\n\t\t\t\"_block_height BIGINT NOT NULL\",\n\t\t\t\"_tx_id TEXT NOT NULL\",\n\t\t\t\"_created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()\",\n\t\t];\n\n\t\tfor (const [colName, col] of Object.entries(tableDef.columns)) {\n\t\t\tconst sqlType = TYPE_MAP[col.type];\n\t\t\tconst nullable = col.nullable ? \"\" : \" NOT NULL\";\n\t\t\tlet colDef = `${colName} ${sqlType}${nullable}`;\n\t\t\tif (col.default !== undefined) {\n\t\t\t\tcolDef += ` DEFAULT ${escapeLiteralDefault(col.default)}`;\n\t\t\t}\n\t\t\tcolumnDefs.push(colDef);\n\t\t}\n\n\t\tstatements.push(\n\t\t\t`CREATE TABLE IF NOT EXISTS ${qualifiedName} (\\n ${columnDefs.join(\",\\n \")}\\n)`,\n\t\t);\n\n\t\t// Auto-indexes on meta columns\n\t\tstatements.push(\n\t\t\t`CREATE INDEX IF NOT EXISTS idx_${schemaName}_${tableName}_block_height ON ${qualifiedName} (_block_height)`,\n\t\t);\n\t\tstatements.push(\n\t\t\t`CREATE INDEX IF NOT EXISTS idx_${schemaName}_${tableName}_tx_id ON ${qualifiedName} (_tx_id)`,\n\t\t);\n\n\t\t// Single-column indexes\n\t\tfor (const [colName, col] of Object.entries(tableDef.columns)) {\n\t\t\tif (col.indexed) {\n\t\t\t\tstatements.push(\n\t\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_${schemaName}_${tableName}_${colName} ON ${qualifiedName} (${colName})`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Trigram GIN indexes for search columns\n\t\tfor (const [colName, col] of Object.entries(tableDef.columns)) {\n\t\t\tif (col.search) {\n\t\t\t\tstatements.push(\n\t\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_${schemaName}_${tableName}_${colName}_trgm ON ${qualifiedName} USING gin (${colName} gin_trgm_ops)`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Composite indexes\n\t\tif (tableDef.indexes) {\n\t\t\tfor (let i = 0; i < tableDef.indexes.length; i++) {\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tconst cols = tableDef.indexes[i]!;\n\t\t\t\tconst idxName = `idx_${schemaName}_${tableName}_composite_${i}`;\n\t\t\t\tstatements.push(\n\t\t\t\t\t`CREATE INDEX IF NOT EXISTS ${idxName} ON ${qualifiedName} (${cols.join(\", \")})`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Unique constraints (required for upsert ON CONFLICT)\n\t\tif (tableDef.uniqueKeys) {\n\t\t\tfor (let i = 0; i < tableDef.uniqueKeys.length; i++) {\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tconst cols = tableDef.uniqueKeys[i]!;\n\t\t\t\tconst constraintName = `uq_${schemaName}_${tableName}_${cols.join(\"_\")}`;\n\t\t\t\tstatements.push(\n\t\t\t\t\t`ALTER TABLE ${qualifiedName} ADD CONSTRAINT ${constraintName} UNIQUE (${cols.join(\", \")})`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Hash based on schema structure only — version intentionally excluded\n\t// so server-managed version bumps don't look like schema changes\n\tconst hashInput = JSON.stringify(\n\t\t{\n\t\t\tname: def.name,\n\t\t\tschema: def.schema,\n\t\t\tsources: def.sources,\n\t\t},\n\t\t(_key, value) => (typeof value === \"bigint\" ? value.toString() : value),\n\t);\n\tconst hash = String(Bun.hash(hashInput));\n\n\treturn { statements, hash };\n}\n",
|
|
17
17
|
"import type {\n\tBlock,\n\tDatabase,\n\tEvent,\n\tTransaction,\n} from \"@secondlayer/shared/db\";\nimport type { Kysely } from \"kysely\";\n\nexport interface BlockData {\n\tblock: Block;\n\ttxs: Transaction[];\n\tevents: Event[];\n}\n\n/**\n * Load a range of blocks with their transactions and events in 3 parallel queries.\n * Returns a Map keyed by block height. Non-canonical blocks are excluded.\n */\nexport async function loadBlockRange(\n\tdb: Kysely<Database>,\n\tfromHeight: number,\n\ttoHeight: number,\n): Promise<Map<number, BlockData>> {\n\tconst [blocks, txs, events] = await Promise.all([\n\t\tdb\n\t\t\t.selectFrom(\"blocks\")\n\t\t\t.selectAll()\n\t\t\t.where(\"height\", \">=\", fromHeight)\n\t\t\t.where(\"height\", \"<=\", toHeight)\n\t\t\t.where(\"canonical\", \"=\", true)\n\t\t\t.execute(),\n\t\tdb\n\t\t\t.selectFrom(\"transactions\")\n\t\t\t.selectAll()\n\t\t\t.where(\"block_height\", \">=\", fromHeight)\n\t\t\t.where(\"block_height\", \"<=\", toHeight)\n\t\t\t.execute(),\n\t\tdb\n\t\t\t.selectFrom(\"events\")\n\t\t\t.selectAll()\n\t\t\t.where(\"block_height\", \">=\", fromHeight)\n\t\t\t.where(\"block_height\", \"<=\", toHeight)\n\t\t\t.execute(),\n\t]);\n\n\t// Index by block height (coerce to number — bigint columns may return as string or number)\n\tconst txsByHeight = new Map<number, Transaction[]>();\n\tfor (const tx of txs) {\n\t\tconst h = Number(tx.block_height);\n\t\tconst list = txsByHeight.get(h) ?? [];\n\t\tlist.push(tx);\n\t\ttxsByHeight.set(h, list);\n\t}\n\n\tconst eventsByHeight = new Map<number, Event[]>();\n\tfor (const evt of events) {\n\t\tconst h = Number(evt.block_height);\n\t\tconst list = eventsByHeight.get(h) ?? [];\n\t\tlist.push(evt);\n\t\teventsByHeight.set(h, list);\n\t}\n\n\tconst result = new Map<number, BlockData>();\n\tfor (const block of blocks) {\n\t\tconst h = Number(block.height);\n\t\tresult.set(h, {\n\t\t\tblock,\n\t\t\ttxs: txsByHeight.get(h) ?? [],\n\t\t\tevents: eventsByHeight.get(h) ?? [],\n\t\t});\n\t}\n\n\treturn result;\n}\n\n/**\n * Compute average events per block from a loaded batch.\n * Used for adaptive batch sizing.\n */\nexport function avgEventsPerBlock(batch: Map<number, BlockData>): number {\n\tif (batch.size === 0) return 0;\n\tlet totalEvents = 0;\n\tfor (const data of batch.values()) {\n\t\ttotalEvents += data.events.length;\n\t}\n\treturn totalEvents / batch.size;\n}\n",
|
|
18
18
|
"import { getSourceDb, getTargetDb } from \"@secondlayer/shared/db\";\nimport {\n\ttype GapRange,\n\trecordGapBatch,\n} from \"@secondlayer/shared/db/queries/subgraph-gaps\";\nimport { getSubgraph } from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { avgEventsPerBlock, loadBlockRange } from \"./batch-loader.ts\";\nimport { type ProcessBlockResult, processBlock } from \"./block-processor.ts\";\nimport { StatsAccumulator } from \"./stats.ts\";\n\nconst LOG_INTERVAL = 1000;\nconst HOBBY_CATCHUP_BATCH_CONFIG = {\n\tdefaultBatchSize: 50,\n\tminBatchSize: 25,\n\tmaxBatchSize: 100,\n\tprefetch: false,\n};\nconst STANDARD_CATCHUP_BATCH_CONFIG = {\n\tdefaultBatchSize: 500,\n\tminBatchSize: 100,\n\tmaxBatchSize: 1000,\n\tprefetch: true,\n};\n\nconst catchingUp = new Set<string>();\n\ntype CatchupBatchConfig = {\n\tdefaultBatchSize: number;\n\tminBatchSize: number;\n\tmaxBatchSize: number;\n\tprefetch: boolean;\n};\n\ntype CatchupBatchEnv = {\n\tTENANT_PLAN?: string;\n\tSUBGRAPH_CATCHUP_BATCH_SIZE?: string;\n\tSUBGRAPH_CATCHUP_MIN_BATCH_SIZE?: string;\n\tSUBGRAPH_CATCHUP_MAX_BATCH_SIZE?: string;\n\tSUBGRAPH_CATCHUP_PREFETCH?: string;\n};\n\nfunction parsePositiveInt(value: string | undefined): number | undefined {\n\tif (value == null || value.trim() === \"\") return undefined;\n\tconst parsed = Number.parseInt(value, 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction parseBoolean(value: string | undefined): boolean | undefined {\n\tif (value == null || value.trim() === \"\") return undefined;\n\tconst normalized = value.trim().toLowerCase();\n\tif (normalized === \"true\") return true;\n\tif (normalized === \"false\") return false;\n\treturn undefined;\n}\n\nexport function resolveCatchupBatchConfig(\n\tenv: CatchupBatchEnv = process.env as CatchupBatchEnv,\n): CatchupBatchConfig {\n\tconst base =\n\t\tenv.TENANT_PLAN?.trim().toLowerCase() === \"hobby\"\n\t\t\t? HOBBY_CATCHUP_BATCH_CONFIG\n\t\t\t: STANDARD_CATCHUP_BATCH_CONFIG;\n\tconst minBatchSize =\n\t\tparsePositiveInt(env.SUBGRAPH_CATCHUP_MIN_BATCH_SIZE) ?? base.minBatchSize;\n\tconst maxBatchSize =\n\t\tparsePositiveInt(env.SUBGRAPH_CATCHUP_MAX_BATCH_SIZE) ?? base.maxBatchSize;\n\tconst defaultBatchSize =\n\t\tparsePositiveInt(env.SUBGRAPH_CATCHUP_BATCH_SIZE) ?? base.defaultBatchSize;\n\n\treturn {\n\t\tminBatchSize,\n\t\tmaxBatchSize,\n\t\tdefaultBatchSize: Math.min(\n\t\t\tMath.max(defaultBatchSize, minBatchSize),\n\t\t\tmaxBatchSize,\n\t\t),\n\t\tprefetch: parseBoolean(env.SUBGRAPH_CATCHUP_PREFETCH) ?? base.prefetch,\n\t};\n}\n\n/**\n * Coalesce individual block heights + reasons into contiguous gap ranges.\n */\nfunction coalesceGaps(\n\tblocks: { height: number; reason: string }[],\n): GapRange[] {\n\tif (blocks.length === 0) return [];\n\tblocks.sort((a, b) => a.height - b.height);\n\n\tconst ranges: GapRange[] = [];\n\tlet start = blocks[0].height;\n\tlet end = blocks[0].height;\n\tlet reason = blocks[0].reason;\n\n\tfor (let i = 1; i < blocks.length; i++) {\n\t\tconst b = blocks[i];\n\t\tif (b.height === end + 1 && b.reason === reason) {\n\t\t\tend = b.height;\n\t\t} else {\n\t\t\tranges.push({ start, end, reason });\n\t\t\tstart = b.height;\n\t\t\tend = b.height;\n\t\t\treason = b.reason;\n\t\t}\n\t}\n\tranges.push({ start, end, reason });\n\treturn ranges;\n}\n\n/**\n * Adjust batch size based on event density.\n * Sparse blocks (early chain) → larger batches. Dense blocks → smaller batches.\n */\nfunction adjustBatchSize(\n\tcurrent: number,\n\tavgEvents: number,\n\tconfig: CatchupBatchConfig,\n): number {\n\tif (avgEvents > 50)\n\t\treturn Math.max(Math.round(current * 0.5), config.minBatchSize);\n\tif (avgEvents < 10)\n\t\treturn Math.min(Math.round(current * 1.5), config.maxBatchSize);\n\treturn current;\n}\n\n/**\n * Catch a subgraph up from its last_processed_block to the chain tip.\n * Uses batch loading (3 queries per batch instead of 3 per block) and\n * plan-aware pipeline prefetching.\n */\nexport async function catchUpSubgraph(\n\tsubgraph: SubgraphDefinition,\n\tsubgraphName: string,\n): Promise<number> {\n\tif (catchingUp.has(subgraphName)) return 0;\n\tcatchingUp.add(subgraphName);\n\n\ttry {\n\t\tconst sourceDb = getSourceDb();\n\t\tconst targetDb = getTargetDb();\n\n\t\t// Re-read from DB to avoid stale lastProcessedBlock\n\t\tconst subgraphRow = await getSubgraph(targetDb, subgraphName);\n\t\tif (!subgraphRow) return 0;\n\t\tconst lastProcessedBlock = Number(subgraphRow.last_processed_block);\n\n\t\t// Chain tip lives in the shared indexer DB (source)\n\t\tconst progress = await sourceDb\n\t\t\t.selectFrom(\"index_progress\")\n\t\t\t.selectAll()\n\t\t\t.where(\"network\", \"=\", process.env.NETWORK ?? \"mainnet\")\n\t\t\t.executeTakeFirst();\n\n\t\tif (!progress) return 0;\n\n\t\tconst chainTip = Number(progress.highest_seen_block);\n\t\tif (lastProcessedBlock >= chainTip) return 0;\n\n\t\tconst subgraphStart = Number(subgraphRow.start_block) || 1;\n\t\tconst startBlock = Math.max(lastProcessedBlock + 1, subgraphStart);\n\t\tconst totalBlocks = chainTip - lastProcessedBlock;\n\n\t\tlogger.info(\"Subgraph catch-up starting\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tfrom: startBlock,\n\t\t\tto: chainTip,\n\t\t\tblocks: totalBlocks,\n\t\t});\n\n\t\tconst stats = new StatsAccumulator(subgraphName, true);\n\t\tlet processed = 0;\n\t\tconst batchConfig = resolveCatchupBatchConfig();\n\t\tlet batchSize = batchConfig.defaultBatchSize;\n\t\tlet currentHeight = startBlock;\n\n\t\t// Pipeline: start loading first batch and track the prefetched range.\n\t\t// batchEnd must match what was actually loaded — not recalculated from a\n\t\t// potentially resized batchSize (adaptive sizing can change it between iterations).\n\t\tlet prefetchedBatchEnd = Math.min(currentHeight + batchSize - 1, chainTip);\n\t\tlet nextBatchPromise = batchConfig.prefetch\n\t\t\t? loadBlockRange(sourceDb, currentHeight, prefetchedBatchEnd)\n\t\t\t: undefined;\n\n\t\twhile (currentHeight <= chainTip) {\n\t\t\t// Check if subgraph status changed (e.g. reindex started) — bail if so\n\t\t\tconst currentRow = await getSubgraph(targetDb, subgraphName);\n\t\t\tif (!currentRow || currentRow.status !== \"active\") {\n\t\t\t\tlogger.info(\"Subgraph status changed, stopping catch-up\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\tstatus: currentRow?.status ?? \"deleted\",\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tlet batchEnd: number;\n\t\t\tlet batch: Awaited<ReturnType<typeof loadBlockRange>>;\n\t\t\tif (nextBatchPromise) {\n\t\t\t\tbatch = await nextBatchPromise;\n\t\t\t\tbatchEnd = prefetchedBatchEnd;\n\n\t\t\t\t// Start prefetching next batch while we process this one.\n\t\t\t\tconst nextStart = batchEnd + 1;\n\t\t\t\tif (nextStart <= chainTip) {\n\t\t\t\t\tprefetchedBatchEnd = Math.min(nextStart + batchSize - 1, chainTip);\n\t\t\t\t\tnextBatchPromise = loadBlockRange(\n\t\t\t\t\t\tsourceDb,\n\t\t\t\t\t\tnextStart,\n\t\t\t\t\t\tprefetchedBatchEnd,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tnextBatchPromise = undefined;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Low-memory mode: load only the current batch, process it, then size\n\t\t\t\t// and load the next batch after this iteration completes.\n\t\t\t\tbatchEnd = Math.min(currentHeight + batchSize - 1, chainTip);\n\t\t\t\tbatch = await loadBlockRange(sourceDb, currentHeight, batchEnd);\n\t\t\t}\n\n\t\t\t// Process each block from pre-loaded data\n\t\t\tconst batchFailedBlocks: { height: number; reason: string }[] = [];\n\n\t\t\tfor (let height = currentHeight; height <= batchEnd; height++) {\n\t\t\t\tconst blockData = batch.get(height);\n\t\t\t\tif (!blockData) {\n\t\t\t\t\t// Block missing (gap) — skip\n\t\t\t\t\tbatchFailedBlocks.push({ height, reason: \"block_missing\" });\n\t\t\t\t\tprocessed++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet result: ProcessBlockResult;\n\t\t\t\ttry {\n\t\t\t\t\tresult = await processBlock(subgraph, subgraphName, height, {\n\t\t\t\t\t\tpreloaded: blockData,\n\t\t\t\t\t});\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlogger.error(\"Block processing error during catch-up\", {\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\tblockHeight: height,\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t\tbatchFailedBlocks.push({ height, reason: \"processing_error\" });\n\t\t\t\t\t// Update progress past this block so we don't retry it forever\n\t\t\t\t\tconst { updateSubgraphStatus } = await import(\n\t\t\t\t\t\t\"@secondlayer/shared/db/queries/subgraphs\"\n\t\t\t\t\t);\n\t\t\t\t\tawait updateSubgraphStatus(\n\t\t\t\t\t\ttargetDb,\n\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\t\"active\",\n\t\t\t\t\t\theight,\n\t\t\t\t\t).catch(() => {});\n\t\t\t\t\tprocessed++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tprocessed++;\n\n\t\t\t\tif (result.timing) {\n\t\t\t\t\tstats.record(result.timing, result.processed);\n\t\t\t\t\tif (stats.shouldFlush()) {\n\t\t\t\t\t\tawait stats.flush(targetDb);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (processed % LOG_INTERVAL === 0) {\n\t\t\t\t\tlogger.info(\"Subgraph catch-up progress\", {\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\tprocessed,\n\t\t\t\t\t\ttotal: totalBlocks,\n\t\t\t\t\t\tcurrentBlock: height,\n\t\t\t\t\t\tpct: Math.round((processed / totalBlocks) * 100),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Record any gaps from this batch\n\t\t\tif (batchFailedBlocks.length > 0) {\n\t\t\t\tconst gaps = coalesceGaps(batchFailedBlocks);\n\t\t\t\tawait recordGapBatch(\n\t\t\t\t\ttargetDb,\n\t\t\t\t\tsubgraphRow.id,\n\t\t\t\t\tsubgraphName,\n\t\t\t\t\tgaps,\n\t\t\t\t).catch((err: unknown) => {\n\t\t\t\t\tlogger.warn(\"Failed to record subgraph gaps\", {\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Adaptive batch sizing based on event density\n\t\t\tconst avg = avgEventsPerBlock(batch);\n\t\t\tbatchSize = adjustBatchSize(batchSize, avg, batchConfig);\n\n\t\t\tcurrentHeight = batchEnd + 1;\n\t\t}\n\n\t\t// Flush remaining stats\n\t\tawait stats.flush(targetDb);\n\n\t\tlogger.info(\"Subgraph catch-up complete\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tprocessed,\n\t\t});\n\n\t\treturn processed;\n\t} finally {\n\t\tcatchingUp.delete(subgraphName);\n\t}\n}\n",
|
|
19
|
-
"import { getErrorMessage } from \"@secondlayer/shared\";\nimport { getRawClient, getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph } from \"@secondlayer/shared/db\";\nimport { listSubgraphs } from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition, SubgraphSchema } from \"../types.ts\";\nimport { processBlock } from \"./block-processor.ts\";\n\n/**\n * Handle a chain reorg for all active subgraphs.\n *
|
|
19
|
+
"import { getErrorMessage } from \"@secondlayer/shared\";\nimport { getRawClient, getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph } from \"@secondlayer/shared/db\";\nimport { listSubgraphs } from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition, SubgraphSchema } from \"../types.ts\";\nimport { processBlock } from \"./block-processor.ts\";\n\n/**\n * Handle a chain reorg for all active subgraphs.\n *\n * `blockHeight` is the **shallowest** height where the chain diverged. The\n * indexer's `handleReorg` has already marked every block ≥ `blockHeight`\n * as non-canonical (a Stacks reorg can span many blocks). We mirror that\n * here: delete rows where `_block_height >= blockHeight` from every\n * subgraph table, then reprocess `blockHeight` (subsequent heights will\n * be reprocessed as the indexer ingests new-chain blocks).\n *\n * Subscription receivers that already consumed the now-reverted events\n * need to know about the rollback. We emit one `<table>.reverted` event\n * per affected table per subscription. The receiver is expected to\n * reverse any side-effects keyed on the rolled-back rows; if they ignore\n * revert events, at least we provided the signal.\n */\nexport async function handleSubgraphReorg(\n\tblockHeight: number,\n\tloadSubgraphDef: (sg: Subgraph) => Promise<SubgraphDefinition>,\n): Promise<void> {\n\t// Subgraphs table + tenant schemas (and thus the DELETE DDL target) live\n\t// in the target DB; source DB is unrelated here.\n\tconst targetDb = getTargetDb();\n\tconst client = getRawClient(\"target\");\n\tconst activeSubgraphs = (await listSubgraphs(targetDb)).filter(\n\t\t(v: Subgraph) => v.status === \"active\",\n\t);\n\n\tif (activeSubgraphs.length === 0) return;\n\n\tlogger.info(\"Propagating reorg to subgraphs\", {\n\t\tblockHeight,\n\t\tsubgraphCount: activeSubgraphs.length,\n\t});\n\n\tfor (const sg of activeSubgraphs) {\n\t\ttry {\n\t\t\tconst schema = sg.definition.schema as SubgraphSchema | undefined;\n\t\t\tif (!schema) continue;\n\n\t\t\tconst schemaName = sg.schema_name ?? pgSchemaName(sg.name);\n\n\t\t\t// Snapshot affected rows BEFORE deletion so we can surface them\n\t\t\t// to subscription receivers as revert events. Cap at 1k rows\n\t\t\t// per (table, reorg) to bound memory; deeper reverts are rare\n\t\t\t// and at-volume the receiver should be reading from the table\n\t\t\t// directly anyway.\n\t\t\tconst tableNames = Object.keys(schema);\n\t\t\tconst revertedByTable: Record<string, unknown[]> = {};\n\t\t\tfor (const tableName of tableNames) {\n\t\t\t\tconst rows = await client.unsafe<unknown[]>(\n\t\t\t\t\t`SELECT * FROM \"${schemaName}\".\"${tableName}\" WHERE \"_block_height\" >= $1 LIMIT 1000`,\n\t\t\t\t\t[blockHeight],\n\t\t\t\t);\n\t\t\t\tif (rows.length > 0) revertedByTable[tableName] = rows;\n\t\t\t}\n\n\t\t\t// Delete rows at-or-above the reorg root from all tables.\n\t\t\tfor (const tableName of tableNames) {\n\t\t\t\tawait client.unsafe(\n\t\t\t\t\t`DELETE FROM \"${schemaName}\".\"${tableName}\" WHERE \"_block_height\" >= $1`,\n\t\t\t\t\t[blockHeight],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Emit revert events to dependent subscriptions so receivers\n\t\t\t// know to roll back. Insert into subscription_outbox with a\n\t\t\t// stable dedup_key keyed on (subscription, table, height,\n\t\t\t// \"revert\") so a duplicate reorg notification is a no-op.\n\t\t\tfor (const [tableName, rows] of Object.entries(revertedByTable)) {\n\t\t\t\tif (rows.length === 0) continue;\n\t\t\t\tawait targetDb\n\t\t\t\t\t.insertInto(\"subscription_outbox\")\n\t\t\t\t\t.columns([\n\t\t\t\t\t\t\"subscription_id\",\n\t\t\t\t\t\t\"event_type\",\n\t\t\t\t\t\t\"payload\",\n\t\t\t\t\t\t\"dedup_key\",\n\t\t\t\t\t\t\"row_pk\",\n\t\t\t\t\t\t\"status\",\n\t\t\t\t\t])\n\t\t\t\t\t.expression((eb) =>\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"subscriptions\")\n\t\t\t\t\t\t\t.select((eb2) => [\n\t\t\t\t\t\t\t\t\"id as subscription_id\",\n\t\t\t\t\t\t\t\teb2.val(`${sg.name}.${tableName}.reverted`).as(\"event_type\"),\n\t\t\t\t\t\t\t\teb2\n\t\t\t\t\t\t\t\t\t.val(\n\t\t\t\t\t\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\t\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\t\t\t\t\t\t\ttable: tableName,\n\t\t\t\t\t\t\t\t\t\t\treorgFromHeight: blockHeight,\n\t\t\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.as(\"payload\"),\n\t\t\t\t\t\t\t\teb2\n\t\t\t\t\t\t\t\t\t.val(`reorg:${sg.name}:${tableName}:${blockHeight}`)\n\t\t\t\t\t\t\t\t\t.as(\"dedup_key\"),\n\t\t\t\t\t\t\t\teb2\n\t\t\t\t\t\t\t\t\t.val({\n\t\t\t\t\t\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\t\t\t\t\t\ttable: tableName,\n\t\t\t\t\t\t\t\t\t\treorgRoot: blockHeight,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.as(\"row_pk\"),\n\t\t\t\t\t\t\t\teb2.val(\"pending\").as(\"status\"),\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.where(\"subgraph_name\", \"=\", sg.name)\n\t\t\t\t\t\t\t.where(\"table_name\", \"=\", tableName)\n\t\t\t\t\t\t\t.where(\"status\", \"=\", \"active\"),\n\t\t\t\t\t)\n\t\t\t\t\t.onConflict((oc) => oc.column(\"dedup_key\").doNothing())\n\t\t\t\t\t.execute()\n\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t// Don't fail the reorg cleanup if the revert event\n\t\t\t\t\t\t// emission errors — subscriptions can't be more\n\t\t\t\t\t\t// broken than they were pre-reorg.\n\t\t\t\t\t\tlogger.warn(\"Failed to emit revert event for subscriptions\", {\n\t\t\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\t\t\ttable: tableName,\n\t\t\t\t\t\t\tblockHeight,\n\t\t\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tlogger.info(\"Subgraph reorg cleanup done\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t\ttablesAffected: Object.keys(revertedByTable).length,\n\t\t\t});\n\n\t\t\t// Reprocess the new canonical block. Subsequent blocks above\n\t\t\t// `blockHeight` will be reprocessed as the indexer ingests\n\t\t\t// them — they're already marked non-canonical by handleReorg.\n\t\t\tconst def = await loadSubgraphDef(sg);\n\t\t\tawait processBlock(def, sg.name, blockHeight);\n\n\t\t\tlogger.info(\"Subgraph reorg reprocessed\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tlogger.error(\"Subgraph reorg handling failed\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t}\n}\n",
|
|
20
20
|
"import { randomUUID } from \"node:crypto\";\nimport { hostname } from \"node:os\";\nimport { resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { getErrorMessage } from \"@secondlayer/shared\";\nimport { getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph, SubgraphOperation } from \"@secondlayer/shared/db\";\nimport {\n\tcancelSubgraphOperation,\n\tclaimSubgraphOperation,\n\tcompleteSubgraphOperation,\n\tcreateSubgraphOperation,\n\tfailSubgraphOperation,\n\tfindActiveSubgraphOperation,\n\tgetSubgraphOperation,\n\theartbeatSubgraphOperation,\n\tisActiveSubgraphOperationConflict,\n} from \"@secondlayer/shared/db/queries/subgraph-operations\";\nimport {\n\tlistSubgraphs,\n\tpgSchemaName,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { listen } from \"@secondlayer/shared/queue/listener\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { catchUpSubgraph } from \"./catchup.ts\";\nimport { startEmitter } from \"./emitter.ts\";\nimport { backfillSubgraph, reindexSubgraph, resumeReindex } from \"./reindex.ts\";\nimport { handleSubgraphReorg } from \"./reorg.ts\";\n\nconst CHANNEL_NEW_BLOCK = \"indexer:new_block\";\nconst CHANNEL_SUBGRAPH_OPERATIONS = \"subgraph_operations:new\";\nconst DEFAULT_CONCURRENCY = 5;\nconst DEFAULT_OPERATION_CONCURRENCY = 1;\nconst POLL_INTERVAL_MS = 5_000;\nconst HEARTBEAT_INTERVAL_MS = 15_000;\nconst CANCEL_POLL_INTERVAL_MS = 1_000;\n\nfunction handlerImportUrl(handlerPath: string, cacheBust = Date.now()) {\n\treturn `${pathToFileURL(resolve(handlerPath)).href}?t=${cacheBust}`;\n}\n\n/**\n * URL to LISTEN on for indexer-fired channels (`indexer:new_block`,\n * `subgraph_reorg`). In dual-DB mode the indexer writes to the shared\n * source DB, so listeners must bind there. In single-DB mode this falls\n * back to `DATABASE_URL` — identical to pre-dual-DB behavior.\n */\nfunction sourceListenerUrl(): string | undefined {\n\treturn process.env.SOURCE_DATABASE_URL ?? process.env.DATABASE_URL;\n}\n\nfunction targetListenerUrl(): string | undefined {\n\treturn process.env.TARGET_DATABASE_URL ?? process.env.DATABASE_URL;\n}\n\nfunction isHandlerNotFoundError(err: unknown): boolean {\n\tif (!(err instanceof Error)) return false;\n\tconst code = (err as NodeJS.ErrnoException).code;\n\tif (\n\t\tcode === \"MODULE_NOT_FOUND\" ||\n\t\tcode === \"ERR_MODULE_NOT_FOUND\" ||\n\t\tcode === \"ENOENT\"\n\t)\n\t\treturn true;\n\t// fallback: Bun may not always set code on dynamic import failures\n\treturn (\n\t\terr.message.includes(\"Cannot find module\") || err.message.includes(\"ENOENT\")\n\t);\n}\n\n// Caches for hot-reload detection — only re-import when version changes\nconst knownVersions = new Map<string, string>();\nconst definitionCache = new Map<string, SubgraphDefinition>();\n\n/**\n * Load a SubgraphDefinition, reusing the cache unless the version changed.\n * On version change, writes latest handler_code from DB to disk and\n * cache-busts the dynamic import.\n */\nasync function loadSubgraphDefinition(\n\tsg: Subgraph,\n): Promise<SubgraphDefinition> {\n\tconst cached = definitionCache.get(sg.name);\n\tif (cached && knownVersions.get(sg.name) === sg.version) {\n\t\treturn cached;\n\t}\n\n\t// Write latest handler code from DB to disk before importing\n\tif (sg.handler_code) {\n\t\tconst { mkdirSync, writeFileSync } = await import(\"node:fs\");\n\t\tconst { dirname } = await import(\"node:path\");\n\t\tmkdirSync(dirname(sg.handler_path), { recursive: true });\n\t\twriteFileSync(sg.handler_path, sg.handler_code);\n\t}\n\n\tconst mod = await import(handlerImportUrl(sg.handler_path));\n\tconst def = mod.default ?? mod;\n\n\tconst prevVersion = knownVersions.get(sg.name);\n\tknownVersions.set(sg.name, sg.version);\n\tdefinitionCache.set(sg.name, def);\n\n\tif (prevVersion && prevVersion !== sg.version) {\n\t\tlogger.info(\"Subgraph handler reloaded\", {\n\t\t\tsubgraph: sg.name,\n\t\t\tfrom: prevVersion,\n\t\t\tto: sg.version,\n\t\t});\n\t}\n\n\treturn def;\n}\n\n/** Remove cached entries for subgraphs that no longer exist. */\nfunction cleanupCaches(active: Subgraph[]): void {\n\tconst names = new Set(active.map((sg) => sg.name));\n\tfor (const name of knownVersions.keys()) {\n\t\tif (!names.has(name)) {\n\t\t\tknownVersions.delete(name);\n\t\t\tdefinitionCache.delete(name);\n\t\t}\n\t}\n}\n\nasync function synthesizeLegacyReindexOperations(): Promise<void> {\n\tconst db = getTargetDb();\n\tconst stale = (await listSubgraphs(db)).filter(\n\t\t(sg) => sg.status === \"reindexing\",\n\t);\n\n\tfor (const sg of stale) {\n\t\tconst active = await findActiveSubgraphOperation(db, sg.id);\n\t\tif (active) continue;\n\n\t\ttry {\n\t\t\tawait createSubgraphOperation(db, {\n\t\t\t\tsubgraphId: sg.id,\n\t\t\t\tsubgraphName: sg.name,\n\t\t\t\taccountId: sg.account_id,\n\t\t\t\tkind: \"reindex\",\n\t\t\t\tfromBlock:\n\t\t\t\t\tsg.reindex_from_block == null\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: Number(sg.reindex_from_block),\n\t\t\t\ttoBlock:\n\t\t\t\t\tsg.reindex_to_block == null ? undefined : Number(sg.reindex_to_block),\n\t\t\t});\n\t\t\tlogger.info(\"Queued legacy reindex resume operation\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (isActiveSubgraphOperationConflict(err)) continue;\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nasync function runSubgraphOperation(\n\toperation: SubgraphOperation,\n\tsignal: AbortSignal,\n): Promise<number> {\n\tif (operation.cancel_requested) {\n\t\treturn 0;\n\t}\n\n\tconst db = getTargetDb();\n\tconst subgraph = await db\n\t\t.selectFrom(\"subgraphs\")\n\t\t.selectAll()\n\t\t.where(\"id\", \"=\", operation.subgraph_id)\n\t\t.executeTakeFirst();\n\tif (!subgraph)\n\t\tthrow new Error(`Subgraph not found: ${operation.subgraph_id}`);\n\n\tconst def = await loadSubgraphDefinition(subgraph);\n\tconst schemaName = subgraph.schema_name ?? pgSchemaName(subgraph.name);\n\n\tif (operation.kind === \"backfill\") {\n\t\tif (operation.from_block == null || operation.to_block == null) {\n\t\t\tthrow new Error(\"Backfill operation is missing from_block or to_block\");\n\t\t}\n\t\tconst result = await backfillSubgraph(def, {\n\t\t\tfromBlock: Number(operation.from_block),\n\t\t\ttoBlock: Number(operation.to_block),\n\t\t\tschemaName,\n\t\t\tsignal,\n\t\t});\n\t\treturn result.processed;\n\t}\n\n\tconst hasResumeMetadata =\n\t\tsubgraph.status === \"reindexing\" &&\n\t\tsubgraph.reindex_from_block != null &&\n\t\tsubgraph.reindex_to_block != null;\n\n\tif (hasResumeMetadata) {\n\t\tconst result = await resumeReindex(def, { schemaName, signal });\n\t\treturn result.processed;\n\t}\n\n\tconst result = await reindexSubgraph(def, {\n\t\tfromBlock:\n\t\t\toperation.from_block == null ? undefined : Number(operation.from_block),\n\t\ttoBlock:\n\t\t\toperation.to_block == null ? undefined : Number(operation.to_block),\n\t\tschemaName,\n\t\tsignal,\n\t});\n\treturn result.processed;\n}\n\nexport async function startSubgraphOperationRunner(opts?: {\n\tconcurrency?: number;\n}): Promise<() => Promise<void>> {\n\tconst concurrency = opts?.concurrency ?? DEFAULT_OPERATION_CONCURRENCY;\n\tconst db = getTargetDb();\n\tconst lockedBy = `${hostname()}:${process.pid}:${randomUUID()}`;\n\tconst active = new Map<string, AbortController>();\n\tconst activeRuns = new Map<string, Promise<void>>();\n\tlet running = true;\n\tlet draining = false;\n\n\tlogger.info(\"Starting subgraph operation runner\", { concurrency, lockedBy });\n\n\tconst startOperation = (operation: SubgraphOperation) => {\n\t\tconst controller = new AbortController();\n\t\tactive.set(operation.id, controller);\n\n\t\tconst heartbeat = setInterval(() => {\n\t\t\tif (!running) return;\n\t\t\theartbeatSubgraphOperation(db, operation.id, lockedBy).catch((err) => {\n\t\t\t\tlogger.warn(\"Subgraph operation heartbeat failed\", {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t});\n\t\t}, HEARTBEAT_INTERVAL_MS);\n\n\t\tconst cancelPoll = setInterval(() => {\n\t\t\tgetSubgraphOperation(db, operation.id)\n\t\t\t\t.then((row) => {\n\t\t\t\t\tif ((!row || row.cancel_requested) && !controller.signal.aborted) {\n\t\t\t\t\t\tcontroller.abort(\"user-cancelled\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tlogger.warn(\"Subgraph operation cancel poll failed\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}, CANCEL_POLL_INTERVAL_MS);\n\n\t\tconst run = (async () => {\n\t\t\tlet processed = 0;\n\t\t\ttry {\n\t\t\t\tif (operation.cancel_requested) {\n\t\t\t\t\tcontroller.abort(\"user-cancelled\");\n\t\t\t\t} else {\n\t\t\t\t\tprocessed = await runSubgraphOperation(operation, controller.signal);\n\t\t\t\t}\n\n\t\t\t\tconst reason = String(controller.signal.reason ?? \"\");\n\t\t\t\tif (controller.signal.aborted && reason === \"user-cancelled\") {\n\t\t\t\t\tawait cancelSubgraphOperation(db, operation.id, lockedBy, processed);\n\t\t\t\t\tlogger.info(\"Subgraph operation cancelled\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (controller.signal.aborted) {\n\t\t\t\t\tlogger.info(\"Subgraph operation interrupted\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\t\treason,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait completeSubgraphOperation(db, operation.id, lockedBy, processed);\n\t\t\t\tlogger.info(\"Subgraph operation completed\", {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\tprocessed,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconst reason = String(controller.signal.reason ?? \"\");\n\t\t\t\tif (controller.signal.aborted && reason === \"shutdown\") {\n\t\t\t\t\tlogger.info(\"Subgraph operation interrupted by shutdown\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (controller.signal.aborted && reason === \"user-cancelled\") {\n\t\t\t\t\tawait cancelSubgraphOperation(db, operation.id, lockedBy, processed);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait failSubgraphOperation(\n\t\t\t\t\tdb,\n\t\t\t\t\toperation.id,\n\t\t\t\t\tlockedBy,\n\t\t\t\t\tgetErrorMessage(err),\n\t\t\t\t\tprocessed,\n\t\t\t\t);\n\t\t\t\tlogger.error(\"Subgraph operation failed\", {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tclearInterval(heartbeat);\n\t\t\t\tclearInterval(cancelPoll);\n\t\t\t\tactive.delete(operation.id);\n\t\t\t\tactiveRuns.delete(operation.id);\n\t\t\t\tif (running) void drain();\n\t\t\t}\n\t\t})();\n\n\t\tactiveRuns.set(operation.id, run);\n\t};\n\n\tconst drain = async () => {\n\t\tif (!running || draining) return;\n\t\tdraining = true;\n\t\ttry {\n\t\t\twhile (running && active.size < concurrency) {\n\t\t\t\tconst operation = await claimSubgraphOperation(db, lockedBy);\n\t\t\t\tif (!operation) break;\n\t\t\t\tstartOperation(operation);\n\t\t\t}\n\t\t} finally {\n\t\t\tdraining = false;\n\t\t}\n\t};\n\n\tawait synthesizeLegacyReindexOperations();\n\tawait drain();\n\n\tconst stopListening = await listen(\n\t\tCHANNEL_SUBGRAPH_OPERATIONS,\n\t\t() => {\n\t\t\tvoid drain();\n\t\t},\n\t\t{ connectionString: targetListenerUrl() },\n\t);\n\n\tconst pollInterval = setInterval(() => {\n\t\tvoid drain();\n\t}, POLL_INTERVAL_MS);\n\n\treturn async () => {\n\t\trunning = false;\n\t\tclearInterval(pollInterval);\n\t\tawait stopListening();\n\t\tfor (const controller of active.values()) {\n\t\t\tcontroller.abort(\"shutdown\");\n\t\t}\n\t\tawait Promise.allSettled(activeRuns.values());\n\t\tlogger.info(\"Subgraph operation runner stopped\");\n\t};\n}\n\n/**\n * Start the subgraph processor service.\n * Listens for new blocks via NOTIFY and processes them through all active subgraphs.\n */\nexport async function startSubgraphProcessor(opts?: {\n\tconcurrency?: number;\n}): Promise<() => Promise<void>> {\n\tconst concurrency = opts?.concurrency ?? DEFAULT_CONCURRENCY;\n\tlet running = true;\n\n\tlogger.info(\"Starting subgraph processor\", { concurrency });\n\n\tconst stopOperations = await startSubgraphOperationRunner({\n\t\tconcurrency: Number.parseInt(\n\t\t\tprocess.env.SUBGRAPH_OPERATION_CONCURRENCY ??\n\t\t\t\tString(DEFAULT_OPERATION_CONCURRENCY),\n\t\t),\n\t});\n\n\t// Catch-up all subgraphs on startup (subgraphs table lives in target DB)\n\tconst targetDb = getTargetDb();\n\tconst activeSubgraphs = (await listSubgraphs(targetDb)).filter(\n\t\t(v: Subgraph) => v.status === \"active\",\n\t);\n\tfor (const sg of activeSubgraphs) {\n\t\ttry {\n\t\t\tconst def = await loadSubgraphDefinition(sg);\n\t\t\tawait catchUpSubgraph(def, sg.name);\n\t\t} catch (err) {\n\t\t\tconst msg = getErrorMessage(err);\n\t\t\tif (isHandlerNotFoundError(err)) {\n\t\t\t\tawait updateSubgraphStatus(targetDb, sg.name, \"error\");\n\t\t\t}\n\t\t\tlogger.error(\"Subgraph catch-up failed on startup\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\terror: msg,\n\t\t\t});\n\t\t}\n\t}\n\n\t// Listen for new blocks — NOTIFY is fired from the indexer on the source DB\n\tconst stopListening = await listen(\n\t\tCHANNEL_NEW_BLOCK,\n\t\tasync () => {\n\t\t\tif (!running) return;\n\t\t\t// The NOTIFY payload doesn't include block height — we rely on\n\t\t\t// each subgraph's last_processed_block to determine what to process.\n\t\t\t// Trigger catch-up for all subgraphs.\n\t\t\tconst db = getTargetDb();\n\t\t\tconst subgraphs = (await listSubgraphs(db)).filter(\n\t\t\t\t(v: Subgraph) => v.status === \"active\",\n\t\t\t);\n\t\t\tcleanupCaches(subgraphs);\n\t\t\tfor (const sg of subgraphs) {\n\t\t\t\ttry {\n\t\t\t\t\tconst def = await loadSubgraphDefinition(sg);\n\t\t\t\t\tawait catchUpSubgraph(def, sg.name);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconst msg = getErrorMessage(err);\n\t\t\t\t\tif (isHandlerNotFoundError(err)) {\n\t\t\t\t\t\tawait updateSubgraphStatus(db, sg.name, \"error\");\n\t\t\t\t\t}\n\t\t\t\t\tlogger.error(\"Subgraph processing failed\", {\n\t\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\t\terror: msg,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ connectionString: sourceListenerUrl() },\n\t);\n\n\t// Listen for reorgs — also fired from the indexer on the source DB\n\tconst stopReorgListening = await listen(\n\t\t\"subgraph_reorg\",\n\t\tasync (payload: string | undefined) => {\n\t\t\tif (!running) return;\n\t\t\ttry {\n\t\t\t\tconst data = JSON.parse(payload ?? \"{}\");\n\t\t\t\tconst blockHeight = data.blockHeight;\n\t\t\t\tif (typeof blockHeight === \"number\") {\n\t\t\t\t\tawait handleSubgraphReorg(blockHeight, loadSubgraphDefinition);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(\"Subgraph reorg handling failed\", {\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t{ connectionString: sourceListenerUrl() },\n\t);\n\n\t// Poll as backup (reads subgraphs table — target DB)\n\tconst pollInterval = setInterval(async () => {\n\t\tif (!running) return;\n\t\tconst db = getTargetDb();\n\t\tconst subgraphs = (await listSubgraphs(db)).filter(\n\t\t\t(v: Subgraph) => v.status === \"active\",\n\t\t);\n\t\tcleanupCaches(subgraphs);\n\t\tfor (const sg of subgraphs) {\n\t\t\ttry {\n\t\t\t\tconst def = await loadSubgraphDefinition(sg);\n\t\t\t\tawait catchUpSubgraph(def, sg.name);\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(\"Subgraph poll processing failed\", {\n\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, POLL_INTERVAL_MS);\n\n\t// Boot subscription emitter in same process — shares pool, shares\n\t// LISTEN connection. Platform mode is control plane only and does not\n\t// need the emitter, but processor itself isn't started there.\n\tconst stopEmitter = await startEmitter();\n\n\tlogger.info(\"Subgraph processor ready\");\n\n\t// Return shutdown function\n\treturn async () => {\n\t\trunning = false;\n\t\tclearInterval(pollInterval);\n\t\tawait stopListening();\n\t\tawait stopReorgListening();\n\t\tawait stopOperations();\n\t\tawait stopEmitter();\n\t\tlogger.info(\"Subgraph processor stopped\");\n\t};\n}\n",
|
|
21
21
|
"import {\n\ttype Database,\n\ttype Subscription,\n\ttype SubscriptionOutbox,\n\tgetTargetDb,\n} from \"@secondlayer/shared/db\";\nimport { getSubscriptionSigningSecret } from \"@secondlayer/shared/db/queries/subscriptions\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { listen } from \"@secondlayer/shared/queue/listener\";\nimport { type Kysely, sql } from \"kysely\";\nimport { buildForFormat } from \"./formats/index.ts\";\nimport { refreshMatcher } from \"./subscription-state.ts\";\n\n/**\n * Subscription emitter — drains `subscription_outbox` and POSTs deliveries.\n *\n * Hot path: LISTEN on `subscriptions:new_outbox` and `subscriptions:changed`.\n * On notify, claim a batch with `FOR UPDATE SKIP LOCKED LIMIT 50`, dispatch\n * each row via HTTP, write a `subscription_deliveries` attempt row, then\n * either mark `status='delivered'` or schedule the next attempt.\n *\n * Backoff schedule (attempt → wait):\n * 0 → 30s, 1 → 2m, 2 → 10m, 3 → 1h, 4 → 6h, 5 → 24h, 6 → 72h.\n * After `max_retries` (default 7) attempts → `status='dead'`.\n *\n * Per-sub circuit breaker: 20 consecutive failures → sub flipped to\n * `paused` with `circuit_opened_at=NOW()`. Manual /resume drains backlog.\n *\n * Per-sub concurrency cap: in-memory semaphore, default 4 in-flight HTTP\n * requests per subscription. Sprint-4 adds SSRF allowlist.\n */\n\nconst BATCH_SIZE = 50;\nconst LIVE_SHARE = 0.9; // 90% of batch to non-replay, 10% to replay\nconst BACKOFF_SECONDS = [30, 120, 600, 3600, 21600, 86400, 259200];\nconst CIRCUIT_THRESHOLD = 20;\n/**\n * When a batch is claimed the outbox row's `next_attempt_at` is pushed\n * `LOCK_WINDOW_MS` into the future. Any crash between claim + settle\n * leaves the row re-claimable after this window expires — the SSOT for\n * double-dispatch prevention.\n */\nconst LOCK_WINDOW_MS = 60_000;\n\ninterface RunningState {\n\trunning: boolean;\n\tinFlightBySub: Map<string, number>;\n\tclaimInFlight: boolean;\n}\n\nfunction nextDelaySeconds(attempt: number): number {\n\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\treturn BACKOFF_SECONDS[Math.min(attempt, BACKOFF_SECONDS.length - 1)]!;\n}\n\n// ── SSRF guard ────────────────────────────────────────────────────────\n// Block deliveries to private/loopback/link-local ranges unless\n// SECONDLAYER_ALLOW_PRIVATE_EGRESS=true (self-host + local-dev opt-in).\n\nconst PRIVATE_V4_PATTERNS = [\n\t/^127\\./, // loopback\n\t/^10\\./, // private class A\n\t/^172\\.(1[6-9]|2\\d|3[01])\\./, // private class B\n\t/^192\\.168\\./, // private class C\n\t/^169\\.254\\./, // link-local\n\t/^0\\./, // \"this\" network\n\t/^100\\.(6[4-9]|[7-9]\\d|1[01]\\d|12[0-7])\\./, // CGNAT 100.64/10\n];\n\n/**\n * Reject hostnames that resolve to, or are spelled as, private IPs.\n * Covers v4 literal, v6 literal, IPv4-mapped IPv6 (`::ffff:127.0.0.1`),\n * and the `localhost` alias. DNS-level rebinding still bypasses this\n * check (hostname that resolves to a private IP at egress time) — mitigate\n * with an egress allowlist at the network level if that matters.\n */\nfunction isPrivateEgress(url: string): boolean {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(url);\n\t} catch {\n\t\treturn true; // malformed URL: reject\n\t}\n\tif (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n\t\treturn true;\n\t}\n\n\t// Strip brackets from IPv6 literals.\n\tconst raw = parsed.hostname.toLowerCase();\n\tconst host =\n\t\traw.startsWith(\"[\") && raw.endsWith(\"]\") ? raw.slice(1, -1) : raw;\n\n\tif (host === \"localhost\" || host === \"0.0.0.0\") return true;\n\tif (host === \"::\" || host === \"::1\") return true;\n\t// Unique-local (fc00::/7) + link-local (fe80::/10)\n\tif (/^f[cd][0-9a-f]{2}:/.test(host)) return true;\n\tif (/^fe[89ab][0-9a-f]:/.test(host)) return true;\n\n\t// IPv4-mapped IPv6 — `::ffff:127.0.0.1` or `::ffff:7f00:0001`\n\tconst mapped = host.match(/^::ffff:(.+)$/);\n\tif (mapped) {\n\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\tconst inner = mapped[1]!;\n\t\t// Dotted form: rerun v4 checks.\n\t\tif (/^\\d+\\.\\d+\\.\\d+\\.\\d+$/.test(inner)) {\n\t\t\tfor (const p of PRIVATE_V4_PATTERNS) if (p.test(inner)) return true;\n\t\t}\n\t\t// Hex form: 7f00:0001 → 127.0.0.1\n\t\tconst hex = inner.match(/^([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);\n\t\tif (hex) {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tconst a = Number.parseInt(hex[1]!, 16);\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tconst b = Number.parseInt(hex[2]!, 16);\n\t\t\tconst dotted = `${(a >> 8) & 0xff}.${a & 0xff}.${(b >> 8) & 0xff}.${b & 0xff}`;\n\t\t\tfor (const p of PRIVATE_V4_PATTERNS) if (p.test(dotted)) return true;\n\t\t}\n\t}\n\n\tfor (const p of PRIVATE_V4_PATTERNS) {\n\t\tif (p.test(host)) return true;\n\t}\n\treturn false;\n}\n\nfunction allowPrivateEgress(): boolean {\n\treturn process.env.SECONDLAYER_ALLOW_PRIVATE_EGRESS === \"true\";\n}\n\nasync function dispatchOne(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): Promise<{\n\tok: boolean;\n\tstatusCode: number | null;\n\terror: string | null;\n\tdurationMs: number;\n}> {\n\tconst { body, headers } = buildForFormat(\n\t\toutboxRow,\n\t\tsub,\n\t\tgetSubscriptionSigningSecret(sub),\n\t);\n\n\tconst start = performance.now();\n\tlet statusCode: number | null = null;\n\tlet error: string | null = null;\n\tlet ok = false;\n\tlet responseBody = \"\";\n\tlet responseHeaders: Record<string, string> = {};\n\n\tif (isPrivateEgress(sub.url) && !allowPrivateEgress()) {\n\t\terror =\n\t\t\t\"refused private egress (set SECONDLAYER_ALLOW_PRIVATE_EGRESS=true to allow)\";\n\t\tlogger.warn(\"[emitter] refused private egress\", {\n\t\t\tsubscription: sub.name,\n\t\t\turl: sub.url,\n\t\t});\n\t\tconst durationMs = 0;\n\t\tconst attempt = outboxRow.attempt + 1;\n\t\tawait db\n\t\t\t.insertInto(\"subscription_deliveries\")\n\t\t\t.values({\n\t\t\t\toutbox_id: outboxRow.id,\n\t\t\t\tsubscription_id: outboxRow.subscription_id,\n\t\t\t\tattempt,\n\t\t\t\tstatus_code: null,\n\t\t\t\tresponse_headers: null,\n\t\t\t\tresponse_body: null,\n\t\t\t\terror_message: error,\n\t\t\t\tduration_ms: durationMs,\n\t\t\t})\n\t\t\t.execute();\n\t\treturn { ok: false, statusCode: null, error, durationMs };\n\t}\n\n\ttry {\n\t\tconst res = await fetch(sub.url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody,\n\t\t\tsignal: AbortSignal.timeout(sub.timeout_ms),\n\t\t});\n\t\tstatusCode = res.status;\n\t\tok = res.ok;\n\t\t// Collect small response preview for the delivery log (≤8KB).\n\t\tconst buf = await res.arrayBuffer();\n\t\tconst truncated = buf.byteLength > 8192 ? buf.slice(0, 8192) : buf;\n\t\tresponseBody = Buffer.from(truncated).toString(\"utf8\");\n\t\tresponseHeaders = Object.fromEntries(res.headers.entries());\n\t} catch (err) {\n\t\terror = err instanceof Error ? err.message : String(err);\n\t}\n\tconst durationMs = Math.round(performance.now() - start);\n\n\tconst attempt = outboxRow.attempt + 1;\n\tawait db\n\t\t.insertInto(\"subscription_deliveries\")\n\t\t.values({\n\t\t\toutbox_id: outboxRow.id,\n\t\t\tsubscription_id: outboxRow.subscription_id,\n\t\t\tattempt,\n\t\t\tstatus_code: statusCode,\n\t\t\tresponse_headers: responseHeaders,\n\t\t\tresponse_body: responseBody || null,\n\t\t\terror_message: error,\n\t\t\tduration_ms: durationMs,\n\t\t})\n\t\t.execute();\n\n\treturn { ok, statusCode, error, durationMs };\n}\n\nasync function settleDelivered(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n): Promise<void> {\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tstatus: \"delivered\",\n\t\t\t\tdelivered_at: new Date(),\n\t\t\t\tattempt: outboxRow.attempt + 1,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\t\tawait tx\n\t\t\t.updateTable(\"subscriptions\")\n\t\t\t.set({\n\t\t\t\tlast_delivery_at: new Date(),\n\t\t\t\tlast_success_at: new Date(),\n\t\t\t\tcircuit_failures: 0,\n\t\t\t\tlast_error: null,\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.subscription_id)\n\t\t\t.execute();\n\t});\n}\n\nasync function settleFailed(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n\terrText: string,\n): Promise<void> {\n\tconst attempt = outboxRow.attempt + 1;\n\tconst isDead = attempt >= sub.max_retries;\n\tconst nextAt = isDead\n\t\t? null\n\t\t: new Date(Date.now() + nextDelaySeconds(outboxRow.attempt) * 1000);\n\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tattempt,\n\t\t\t\tnext_attempt_at: nextAt ?? new Date(),\n\t\t\t\tstatus: isDead ? \"dead\" : \"pending\",\n\t\t\t\tfailed_at: isDead ? new Date() : null,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\n\t\t// Atomic increment — concurrent failures must not clobber each other.\n\t\t// `RETURNING circuit_failures` gives us the post-increment value to\n\t\t// decide whether this failure tripped the circuit.\n\t\tconst incResult = await sql<{ circuit_failures: number }>`\n\t\t\tUPDATE subscriptions\n\t\t\tSET circuit_failures = circuit_failures + 1,\n\t\t\t\tlast_delivery_at = NOW(),\n\t\t\t\tlast_error = ${errText.slice(0, 500)},\n\t\t\t\tupdated_at = NOW()\n\t\t\tWHERE id = ${sub.id}\n\t\t\tRETURNING circuit_failures\n\t\t`.execute(tx);\n\t\tconst newFailures =\n\t\t\tincResult.rows[0]?.circuit_failures ?? sub.circuit_failures + 1;\n\t\tconst shouldTripCircuit = newFailures >= CIRCUIT_THRESHOLD;\n\n\t\tif (shouldTripCircuit) {\n\t\t\t// Transition to paused only on the first failure that crossed\n\t\t\t// the threshold — additional failures in-flight harmlessly\n\t\t\t// re-set the same fields.\n\t\t\tawait tx\n\t\t\t\t.updateTable(\"subscriptions\")\n\t\t\t\t.set({\n\t\t\t\t\tstatus: \"paused\",\n\t\t\t\t\tcircuit_opened_at: new Date(),\n\t\t\t\t\tupdated_at: new Date(),\n\t\t\t\t})\n\t\t\t\t.where(\"id\", \"=\", sub.id)\n\t\t\t\t.execute();\n\t\t\tlogger.warn(\n\t\t\t\t\"Subscription circuit tripped — paused after consecutive failures\",\n\t\t\t\t{\n\t\t\t\t\tsubscription: sub.name,\n\t\t\t\t\tfailures: newFailures,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t});\n}\n\nasync function claimAndDrain(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\temitterId: string,\n): Promise<number> {\n\tif (state.claimInFlight) return 0;\n\tstate.claimInFlight = true;\n\ttry {\n\t\t// FOR UPDATE SKIP LOCKED — multiple emitters split the batch.\n\t\t// 90/10 live vs replay so a big replay doesn't starve live emits.\n\t\tconst liveLimit = Math.max(1, Math.round(BATCH_SIZE * LIVE_SHARE));\n\t\tconst replayLimit = BATCH_SIZE - liveLimit;\n\t\tconst claimed = await db.transaction().execute(async (tx) => {\n\t\t\tconst live = await sql<SubscriptionOutbox>`\n\t\t\t\t\tSELECT * FROM subscription_outbox\n\t\t\t\t\tWHERE status = 'pending'\n\t\t\t\t\t\tAND next_attempt_at <= NOW()\n\t\t\t\t\t\tAND is_replay = FALSE\n\t\t\t\t\tORDER BY next_attempt_at ASC\n\t\t\t\t\tFOR UPDATE SKIP LOCKED\n\t\t\t\t\tLIMIT ${sql.lit(liveLimit)}\n\t\t\t\t`.execute(tx);\n\t\t\tconst replay = await sql<SubscriptionOutbox>`\n\t\t\t\t\tSELECT * FROM subscription_outbox\n\t\t\t\t\tWHERE status = 'pending'\n\t\t\t\t\t\tAND next_attempt_at <= NOW()\n\t\t\t\t\t\tAND is_replay = TRUE\n\t\t\t\t\tORDER BY next_attempt_at ASC\n\t\t\t\t\tFOR UPDATE SKIP LOCKED\n\t\t\t\t\tLIMIT ${sql.lit(replayLimit)}\n\t\t\t\t`.execute(tx);\n\n\t\t\tconst combined = [...live.rows, ...replay.rows];\n\t\t\tif (combined.length === 0) return [];\n\n\t\t\t// Push `next_attempt_at` forward by the lock window. This is\n\t\t\t// the only defense against double-dispatch if the emitter\n\t\t\t// process crashes mid-HTTP-call: the row won't be re-claimable\n\t\t\t// until `LOCK_WINDOW_MS` elapses, giving us a stale-lock\n\t\t\t// recovery window. `settleDelivered`/`settleFailed` overrides\n\t\t\t// this on the success/failure path.\n\t\t\tconst now = new Date();\n\t\t\tconst lockUntil = new Date(now.getTime() + LOCK_WINDOW_MS);\n\t\t\tawait tx\n\t\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t\t.set({\n\t\t\t\t\tlocked_by: emitterId,\n\t\t\t\t\tlocked_until: lockUntil,\n\t\t\t\t\tnext_attempt_at: lockUntil,\n\t\t\t\t})\n\t\t\t\t.where(\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"in\",\n\t\t\t\t\tcombined.map((r) => r.id),\n\t\t\t\t)\n\t\t\t\t.execute();\n\t\t\treturn combined;\n\t\t});\n\n\t\tif (claimed.length === 0) return 0;\n\n\t\t// Hydrate each claimed row's sub once, then dispatch with per-sub\n\t\t// concurrency cap enforced via in-memory semaphore.\n\t\tconst bySubId = new Map<string, SubscriptionOutbox[]>();\n\t\tfor (const row of claimed) {\n\t\t\tconst arr = bySubId.get(row.subscription_id);\n\t\t\tif (arr) arr.push(row);\n\t\t\telse bySubId.set(row.subscription_id, [row]);\n\t\t}\n\n\t\tconst subIds = Array.from(bySubId.keys());\n\t\tconst subs = await db\n\t\t\t.selectFrom(\"subscriptions\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"in\", subIds)\n\t\t\t.execute();\n\t\tconst subById = new Map(subs.map((s) => [s.id, s]));\n\n\t\tawait Promise.all(\n\t\t\tsubIds.map((subId) =>\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\t\tdrainForSub(db, state, subById.get(subId)!, bySubId.get(subId)!),\n\t\t\t),\n\t\t);\n\n\t\treturn claimed.length;\n\t} finally {\n\t\tstate.claimInFlight = false;\n\t}\n}\n\nasync function drainForSub(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\tsub: Subscription,\n\trows: SubscriptionOutbox[],\n): Promise<void> {\n\tconst cap = sub.concurrency || 4;\n\tconst counter = () => state.inFlightBySub.get(sub.id) ?? 0;\n\tconst inc = () => state.inFlightBySub.set(sub.id, counter() + 1);\n\tconst dec = () => state.inFlightBySub.set(sub.id, Math.max(0, counter() - 1));\n\n\tconst queue = [...rows];\n\tconst workers: Promise<void>[] = [];\n\tconst slots = Math.min(cap, queue.length);\n\n\tfor (let i = 0; i < slots; i++) {\n\t\tworkers.push(\n\t\t\t(async () => {\n\t\t\t\twhile (state.running && queue.length > 0) {\n\t\t\t\t\tconst row = queue.shift();\n\t\t\t\t\tif (!row) break;\n\t\t\t\t\tinc();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await dispatchOne(db, row, sub);\n\t\t\t\t\t\tif (result.ok) {\n\t\t\t\t\t\t\tawait settleDelivered(db, row);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst err = result.error ?? `HTTP ${result.statusCode ?? \"?\"}`;\n\t\t\t\t\t\t\tawait settleFailed(db, row, sub, err);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.error(\"Emitter dispatch crashed\", {\n\t\t\t\t\t\t\toutboxId: row.id,\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait settleFailed(\n\t\t\t\t\t\t\tdb,\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\tsub,\n\t\t\t\t\t\t\terr instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tdec();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})(),\n\t\t);\n\t}\n\tawait Promise.all(workers);\n}\n\nexport interface StartEmitterOptions {\n\t/** Interval for the background poll (ms). Defaults to 2 minutes. */\n\tpollIntervalMs?: number;\n\t/** Retention sweep interval (ms). Defaults to 1 hour. */\n\tretentionIntervalMs?: number;\n}\n\nasync function runRetention(db: Kysely<Database>): Promise<void> {\n\t// delivered outbox >7d, deliveries >30d, dead outbox >90d\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'delivered' AND delivered_at < NOW() - interval '7 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_deliveries\n\t\tWHERE dispatched_at < NOW() - interval '30 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'dead' AND failed_at < NOW() - interval '90 days'\n\t`.execute(db);\n}\n\nexport async function startEmitter(\n\topts?: StartEmitterOptions,\n): Promise<() => Promise<void>> {\n\tconst emitterId = `emitter-${Math.random().toString(36).slice(2, 10)}`;\n\tconst db = getTargetDb();\n\tconst state: RunningState = {\n\t\trunning: true,\n\t\tinFlightBySub: new Map(),\n\t\tclaimInFlight: false,\n\t};\n\tconst pollIntervalMs = opts?.pollIntervalMs ?? 120_000;\n\tconst retentionIntervalMs = opts?.retentionIntervalMs ?? 60 * 60_000;\n\n\tlogger.info(\"[emitter] started\", { id: emitterId });\n\n\t// Bootstrap matcher from active subs. Retry with backoff — if this\n\t// stays broken, fail loud rather than run with an empty matcher (which\n\t// would silently drop every block's outbox emissions until the next\n\t// subscription CRUD fired `subscriptions:changed`).\n\tconst MATCHER_BOOT_ATTEMPTS = 5;\n\tlet lastErr: unknown = null;\n\tfor (let i = 0; i < MATCHER_BOOT_ATTEMPTS; i++) {\n\t\ttry {\n\t\t\tawait refreshMatcher(db);\n\t\t\tlastErr = null;\n\t\t\tbreak;\n\t\t} catch (err) {\n\t\t\tlastErr = err;\n\t\t\tconst delayMs = 500 * 2 ** i; // 500ms, 1s, 2s, 4s, 8s\n\t\t\tlogger.warn(\"[emitter] matcher refresh failed, retrying\", {\n\t\t\t\tattempt: i + 1,\n\t\t\t\tdelayMs,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\tawait new Promise((r) => setTimeout(r, delayMs));\n\t\t}\n\t}\n\tif (lastErr) {\n\t\tthrow new Error(\n\t\t\t`[emitter] matcher refresh failed ${MATCHER_BOOT_ATTEMPTS}×; aborting boot: ${\n\t\t\t\tlastErr instanceof Error ? lastErr.message : String(lastErr)\n\t\t\t}`,\n\t\t);\n\t}\n\n\t// LISTEN on new outbox + sub changes\n\tconst stopNew = await listen(\"subscriptions:new_outbox\", () => {\n\t\tif (!state.running) return;\n\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\tlogger.error(\"[emitter] claim failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t});\n\tconst stopChanged = await listen(\"subscriptions:changed\", () => {\n\t\tif (!state.running) return;\n\t\tvoid refreshMatcher(db).catch((err) =>\n\t\t\tlogger.error(\"[emitter] matcher refresh failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t});\n\n\t// Poll every pollIntervalMs as a safety net for missed notifications +\n\t// backoff wakeups (rows whose next_attempt_at has passed).\n\tconst poll = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\tlogger.error(\"[emitter] poll claim failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, pollIntervalMs);\n\n\t// Kick once on startup so any rows that arrived before we started drain.\n\tvoid claimAndDrain(db, state, emitterId);\n\n\t// Retention sweep — hourly by default.\n\tconst retention = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid runRetention(db).catch((err) =>\n\t\t\tlogger.error(\"[emitter] retention failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, retentionIntervalMs);\n\n\treturn async () => {\n\t\tstate.running = false;\n\t\tclearInterval(poll);\n\t\tclearInterval(retention);\n\t\tawait stopNew();\n\t\tawait stopChanged();\n\t\tlogger.info(\"[emitter] stopped\", { id: emitterId });\n\t};\n}\n",
|
|
22
22
|
"import type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { buildCloudEvents } from \"./cloudevents.ts\";\nimport { buildCloudflare } from \"./cloudflare.ts\";\nimport { buildInngest } from \"./inngest.ts\";\nimport { buildRaw } from \"./raw.ts\";\nimport { buildStandardWebhooks } from \"./standard-webhooks.ts\";\nimport { buildTrigger } from \"./trigger.ts\";\n\nexport interface FormatBuildResult {\n\tbody: string;\n\theaders: Record<string, string>;\n}\n\n/**\n * Dispatch an outbox row through the format matching the subscription's\n * `format` column. Unknown formats fall back to `standard-webhooks` with\n * a warning log — receivers always get something deliverable.\n */\nexport function buildForFormat(\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n\tsigningSecret: string,\n): FormatBuildResult {\n\tswitch (sub.format) {\n\t\tcase \"inngest\":\n\t\t\treturn buildInngest(outboxRow);\n\t\tcase \"trigger\":\n\t\t\treturn buildTrigger(outboxRow, sub);\n\t\tcase \"cloudflare\":\n\t\t\treturn buildCloudflare(outboxRow, sub);\n\t\tcase \"cloudevents\":\n\t\t\treturn buildCloudEvents(outboxRow, sub);\n\t\tcase \"raw\":\n\t\t\treturn buildRaw(outboxRow, sub);\n\t\tcase \"standard-webhooks\":\n\t\t\treturn buildStandardWebhooks(outboxRow, signingSecret);\n\t\tdefault:\n\t\t\tlogger.warn(\n\t\t\t\t\"Unknown subscription format, falling back to standard-webhooks\",\n\t\t\t\t{\n\t\t\t\t\tformat: sub.format,\n\t\t\t\t\tsubscriptionId: sub.id,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn buildStandardWebhooks(outboxRow, signingSecret);\n\t}\n}\n\nexport {\n\tbuildStandardWebhooks,\n\tbuildInngest,\n\tbuildTrigger,\n\tbuildCloudflare,\n\tbuildCloudEvents,\n\tbuildRaw,\n};\n",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"import { sign } from \"@secondlayer/shared/crypto/standard-webhooks\";\nimport type { SubscriptionOutbox } from \"@secondlayer/shared/db\";\n\n/**\n * Build a Standard Webhooks POST body + headers for an outbox row.\n * https://standardwebhooks.com\n *\n * Body shape: `{ type, timestamp, data }`\n * - `type` — `<subgraph>.<table>.<verb>` (e.g. `bitcoin.transfers.created`)\n * - `timestamp` — ISO 8601 at DISPATCH time (not row creation). Receivers\n * verify `webhook-timestamp` against a tolerance window (default 300s per\n * Svix); stamping at creation would fail verification on every retry\n * beyond the first, since retries fire up to 72h after the row was\n * written. The `webhook-id` header stays stable across retries for\n * receiver dedup.\n * - `data` — row payload (bigints already stringified by flush manifest).\n *\n * Headers: the three standardwebhooks.com headers + Content-Type.\n */\n\nexport interface StandardWebhooksPayload {\n\ttype: string;\n\ttimestamp: string;\n\tdata: Record<string, unknown>;\n}\n\nexport function buildStandardWebhooks(\n\toutboxRow: SubscriptionOutbox,\n\tsigningSecret: string,\n): { body: string; headers: Record<string, string> } {\n\tconst nowSeconds = Math.floor(Date.now() / 1000);\n\tconst payload: StandardWebhooksPayload = {\n\t\ttype: outboxRow.event_type,\n\t\ttimestamp: new Date(nowSeconds * 1000).toISOString(),\n\t\tdata: outboxRow.payload as Record<string, unknown>,\n\t};\n\tconst body = JSON.stringify(payload);\n\tconst sigHeaders = sign(body, signingSecret, {\n\t\tid: outboxRow.id,\n\t\ttimestampSeconds: nowSeconds,\n\t});\n\treturn {\n\t\tbody,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/json\",\n\t\t\t...sigHeaders,\n\t\t},\n\t};\n}\n",
|
|
28
28
|
"import { decryptSecret } from \"@secondlayer/shared/crypto/secrets\";\nimport type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\n\n/**\n * Trigger.dev v3 task trigger — https://trigger.dev/docs/tasks/overview\n *\n * POST https://api.trigger.dev/api/v1/tasks/{taskId}/trigger\n * Authorization: Bearer <TRIGGER_SECRET_KEY>\n *\n * Body:\n * - `payload` — the row payload\n * - `options` — currently `{ idempotencyKey }` so Trigger dedupes replays\n *\n * The Trigger secret lives in `sub.auth_config.tokenEnc` (encrypted by\n * `crypto/secrets`) or `sub.auth_config.token` (plaintext, dev only).\n */\n\nfunction resolveBearer(sub: Subscription): string | null {\n\tconst cfg = sub.auth_config as {\n\t\tauthType?: string;\n\t\ttoken?: string;\n\t\ttokenEnc?: string;\n\t};\n\tif (cfg.tokenEnc) {\n\t\t// Let decrypt errors propagate — silently sending unauthenticated\n\t\t// requests produces downstream 401s with no hint the secret failed\n\t\t// to decrypt. Surface as a dispatch-time error so the delivery log\n\t\t// records the real cause.\n\t\treturn decryptSecret(Buffer.from(cfg.tokenEnc, \"base64\"));\n\t}\n\treturn cfg.token ?? null;\n}\n\nexport function buildTrigger(\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): { body: string; headers: Record<string, string> } {\n\tconst body = JSON.stringify({\n\t\tpayload: outboxRow.payload,\n\t\toptions: {\n\t\t\tidempotencyKey: outboxRow.id,\n\t\t},\n\t});\n\tconst headers: Record<string, string> = {\n\t\t\"content-type\": \"application/json\",\n\t};\n\tconst token = resolveBearer(sub);\n\tif (token) headers.authorization = `Bearer ${token}`;\n\treturn { body, headers };\n}\n"
|
|
29
29
|
],
|
|
30
|
-
"mappings": "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",
|
|
31
|
-
"debugId": "
|
|
30
|
+
"mappings": "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",
|
|
31
|
+
"debugId": "6BCC2C34E1ACFA3464756E2164756E21",
|
|
32
32
|
"names": []
|
|
33
33
|
}
|