stablyai/orca · error · JiraSummaryLookupError

read-failed

read-failed

Error message

jira_summary_lookup:read-failed

What it means

Thrown inside getIssueSummary's request body for any failure that is neither auth nor 404 — network errors, timeouts (withJiraDeadline expires), 5xx responses, or aborts. This is the catch-all JiraSummaryLookupError code 'read-failed' with the original error as cause.

Source

Thrown at src/main/jira/issues.ts:706

    try {
      const params = new URLSearchParams({ fields: ISSUE_SUMMARY_FIELDS.join(',') })
      const issue = await settleJiraSummaryRead(
        jiraRequest<JiraRecord>(
          entry,
          `${apiBasePath(entry.site)}/issue/${encodeURIComponent(key)}?${params.toString()}`,
          { signal: requestSignal }
        ),
        requestSignal
      )
      return mapJiraIssue(entry.site, issue)
    } catch (error) {
      if (isAuthError(error)) {
        throw new JiraSummaryLookupError('auth', error)
      }
      if (getErrorStatus(error) === 404) {
        throw new JiraSummaryLookupError('not-found', error)
      }
      throw new JiraSummaryLookupError('read-failed', error)
    } finally {
      release()
    }
  })
}

export async function createIssue(args: JiraCreateIssueArgs): Promise<JiraCreateIssueResult> {
  const entry = getClients(args.siteId)[0]
  if (!entry) {
    return { ok: false, error: 'Not connected to Jira.' }
  }
  const title = args.title.trim()
  if (!title) {
    return { ok: false, error: 'Title is required.' }
  }

  await acquire()
  try {

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Retry with backoff for code 'read-failed' (transient by nature).
  2. Increase ISSUE_SUMMARY_TIMEOUT_MS if payloads are consistently slow.
  3. Check the cause error for status: 5xx → Atlassian side; network → local connectivity.
  4. Abort gracefully if the user navigated away (signal.aborted).

Example fix

// before
try { await getIssueSummary(key, siteId) } catch (e) { giveUp() }
// after
try { return await getIssueSummary(key, siteId) }
catch (e) {
  if (getJiraSummaryLookupErrorCode(e) === 'read-failed' && !signal.aborted) { await backoffRetry(() => getIssueSummary(key, siteId, signal)) }
  else throw e
}
Defensive patterns

Strategy: retry

Validate before calling

if (signal.aborted) return null

Type guard

function isJiraSummaryReadFailedError(e: unknown): boolean {
  return getJiraSummaryLookupErrorCode(e) === 'read-failed'
}

Try / catch

try { return await getIssueSummary(key, siteId, signal) }
catch (e) {
  if (getJiraSummaryLookupErrorCode(e) === 'read-failed' && !signal.aborted) { await sleep(backoffMs); return getIssueSummary(key, siteId, signal) }
  throw e
}

Prevention

When it happens

Trigger: Network drop or proxy failure during the GET, the withJiraDeadline timeout (ISSUE_SUMMARY_TIMEOUT_MS) elapsing, the AbortSignal aborting, or Jira returning 500/502/503.

Common situations: Flaky connectivity, VPN interruption, Atlassian incident, or a very large/slow issue payload exceeding the summary timeout.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/88a7cf6fccfaf973. Report an issue: GitHub.