abhigyanpatwari/GitNexus · error
⚠️ embedBatch failed for ${subTexts.length} texts (first: "$
Error message
⚠️ embedBatch failed for ${subTexts.length} texts (first: "${subTexts[0]?.substring(0, 80)}...") — dropping ${droppedNodeIds.size} node(s) from this run so the next run re-embeds them (${consecutiveSubBatchFailures}/${MAX_CONSECUTIVE_SUB_BATCH_FAILURES} consecutive, ${subBatchFailures}/${subBatchesAttempted} sub-batches failed this run): What it means
Error "⚠️ embedBatch failed for ${subTexts.length} texts (first: "${subTexts[0]?.substring(0, 80)}...") — dropping ${droppedNodeIds.size} node(s) from this run so the next run re-embeds them (${consecutiveSubBatchFailures}/${MAX_CONSECUTIVE_SUB_BATCH_FAILURES} consecutive, ${subBatchFailures}/${subBatchesAttempted} sub-batches failed this run):" thrown in abhigyanpatwari/GitNexus.
Source
Thrown at gitnexus/src/core/embeddings/embedding-pipeline.ts:846
let embeddings: Float32Array[];
try {
embeddings = await embedBatch(subTexts, { signal: pipelineOptions.signal });
} catch (embedErr) {
// Never swallow a cancel as a "tolerable" failure — the operator asked
// us to stop, and the run has no business continuing (or deleting rows).
if (pipelineOptions.signal?.aborted || isCancellationError(embedErr)) throw embedErr;
// #2790: one transient hiccup used to discard an entire multi-hour run.
// Warn (not error — the run survives), drop this sub-batch's nodes, and
// keep going; the cleanup DELETE after this loop makes the drop safe.
const droppedNodeIds = new Set(subUpdates.map((u) => u.nodeId));
for (const nodeId of droppedNodeIds) batchFailedNodeIds.add(nodeId);
consecutiveSubBatchFailures += 1;
subBatchFailures += 1;
const streakError = (streakFirstError ??= { err: embedErr });
// Log under `err` so pino's standard serializer keeps the message and
// stack — the previous `{ embedErr }` key serialized to `{}` (#2114).
logger.warn(
{ err: embedErr },
`⚠️ embedBatch failed for ${subTexts.length} texts (first: "${subTexts[0]?.substring(0, 80)}...") — ` +
`dropping ${droppedNodeIds.size} node(s) from this run so the next run re-embeds them ` +
`(${consecutiveSubBatchFailures}/${MAX_CONSECUTIVE_SUB_BATCH_FAILURES} consecutive, ` +
`${subBatchFailures}/${subBatchesAttempted} sub-batches failed this run):`,
);
if (consecutiveSubBatchFailures >= MAX_CONSECUTIVE_SUB_BATCH_FAILURES) {
// Bail out — but via `break`, not `throw`, so the cleanup DELETE below
// still runs: sub-batches that succeeded before the endpoint went dark
// left partial rows carrying the CURRENT hash, which is exactly the
// read-as-fresh corruption this path exists to prevent.
abortError = streakError;
break;
}
if (
subBatchesAttempted >= minSubBatchesForRatioGuard &&
subBatchFailures / subBatchesAttempted >= MAX_SUB_BATCH_FAILURE_RATIO
) {View on GitHub (pinned to aac7515d2a)
When it happens
Trigger: Thrown at gitnexus/src/core/embeddings/embedding-pipeline.ts:846 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of abhigyanpatwari/GitNexus@aac7515d2a (2026-08-20).
Data as JSON: /api/errors/d0f933636d327b73.
Report an issue: GitHub.