Skip to content

[SEA-NodeJS] (3/8) Kernel ErrorCode → JS error-class mapping (M0 minimum)#377

Draft
msrathore-db wants to merge 1 commit into
msrathore/sea-napi-bindingfrom
msrathore/sea-errors-logging
Draft

[SEA-NodeJS] (3/8) Kernel ErrorCode → JS error-class mapping (M0 minimum)#377
msrathore-db wants to merge 1 commit into
msrathore/sea-napi-bindingfrom
msrathore/sea-errors-logging

Conversation

@msrathore-db
Copy link
Copy Markdown
Contributor

@msrathore-db msrathore-db commented May 16, 2026

Stack

Linear stack of 8 PRs landing the M0 + M1 Phase 1 SEA NodeJS work. Merge in order from base ↑ to tip. The tip branch (msrathore/sea-auth-u2m, PR #383) is the single snapshot containing everything in flight — point your test or benchmark harness at it for an end-to-end check.

Pos PR Branch Scope
1/8 #378 sea-abstraction IBackend / ISessionBackend / IOperationBackend interfaces
2/8 #380 sea-napi-binding TS loader + build script for the kernel-provided .node artifact
3/8 #377 sea-errors-logging Kernel ErrorCode → JS error-class mapping (M0 minimum)
4/8 #379 sea-auth PAT auth via useSEA: true
5/8 #382 sea-execution executeStatement + openSession (sessionConfig, initialCatalog/Schema)
6/8 #381 sea-results CloudFetch + Inline Arrow result fetching
7/8 #384 sea-operation cancel / close / finished lifecycle + INTERVAL parity + napi-relocation acceptance (absorbed sea-integration content)
8/8 #383 sea-auth-u2m ← TIP M1 Phase 1 OAuth M2M + U2M (5 review rounds, ZERO HIGH at close)

Companion kernel stack (databricks/databricks-sql-kernel): 8 PRs — root #26 (async-public-api) → #27#25#29#28#30#24#23 (tip).

Policy: new PRs always stack on the current tip. No sibling/parallel topology. No force-pushes on existing PRs unless absolutely necessary; if a PR's content is wrong, add a fix-up commit on top of the stack tip rather than rewriting history.


This PR is position 3/8.

Summary

SeaErrorMapping.ts decodes the kernel's __databricks_error__:<json> napi error envelope into typed JS errors (AuthenticationError, NetworkError, OperationStateError, etc.). M0-minimum mapping covers 13 kernel ErrorCode variants.

The decoder gets significantly hardened later in #383 (M1 OAuth) — namespace under error.kernelMetadata.*, sentinel-strip on corrupted envelopes, type-guards — but the M0 baseline is here.

Draft until you give the go for review.

Co-authored-by: Isaac

@msrathore-db msrathore-db deployed to azure-prod May 16, 2026 12:16 — with GitHub Actions Active
@github-actions
Copy link
Copy Markdown

Thanks for your contribution! To satisfy the DCO policy in our contributing guide every commit message must include a sign-off message. One or more of your commits is missing this message. You can reword previous commit messages with an interactive rebase (git rebase -i main).

Single mapping function in lib/sea/SeaErrorMapping.ts converts the
napi-binding's surfaced kernel error (code+message+sqlstate) to the
appropriate existing JS error class. M0 minimum: PAT auth errors
land as AuthenticationError; cancel/timeout as OperationStateError;
network/internal as HiveDriverError. SQLSTATE preserved on the
error object via .sqlState property.

No new error classes. M1 may add nuance.
@msrathore-db msrathore-db force-pushed the msrathore/sea-errors-logging branch from f7cdb80 to 8ccc8e2 Compare May 17, 2026 13:22
@msrathore-db msrathore-db changed the base branch from main to msrathore/sea-abstraction May 17, 2026 13:22
@msrathore-db msrathore-db changed the base branch from msrathore/sea-abstraction to msrathore/sea-napi-binding May 17, 2026 13:22
@github-actions
Copy link
Copy Markdown

Thanks for your contribution! To satisfy the DCO policy in our contributing guide every commit message must include a sign-off message. One or more of your commits is missing this message. You can reword previous commit messages with an interactive rebase (git rebase -i main).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant