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.