jobs: 0.89.0 changed jobs result shapes from snake_case to camelCase

Đang mở
#699 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 3 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
48/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
typescript
Lĩnh vực
api, backend-api-design

Hướng nghiên cứu

Start with packages/appkit/src/connectors/jobs/client.ts and reproduce the runNow() result using the TypeScript snippet in the issue; compare the affected methods and status payloads with the documented behavior. The issue offers two possible resolutions, so confirm which is intended before changing code; done means either restoring the described snake_case shapes or documenting the breaking change and affected fields in the 0.89.0 release notes.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

In 0.89.0, the jobs plugin returns camelCase keys wherever it passes Jobs API objects through: the programmatic API, two routes, and the run object in status payloads. Through 0.88.1 these were snake_case. #647 says "Translate camelCase/bigint models back to the snake_case/number wire shape at the connector boundary, so the plugin's HTTP, SSE and cache output is unchanged", but the merged connector doesn't do that. The release notes list it as a feature, with no breaking-change note. Verified live against a real job on both versions.

Not affected (the common path)

Apps that trigger jobs and react to the status string see no change:

  • POST /api/jobs/:jobKey/run returns { runId } in both versions (confirmed from source).
  • GET /api/jobs/:jobKey/status and the runAndWait() / POST /run?stream=true updates keep the same status values (RUNNING, TERMINATED, and so on).
  • Failure results keep the same shape ({ ok: false, status, message }).
  • @databricks/appkit-ui doesn't read jobs results, so no built-in UI is affected.

Affected

Code that reads fields from a run or job object:

  • appkit.jobs(key).runNow(): data was { run_id, number_in_job, wait } and is now { runId }.
  • getRun, listRuns, lastRun, getRunOutput, getJob: all keys are camelCase. For example, run_id is now runId, run_page_url is now runPageUrl, and state.life_cycle_state is now state.lifeCycleState. TypeScript flags these at compile time; JavaScript gets undefined.
  • GET /runs and GET /runs/:runId: they return result.data directly, so their JSON keys changed. Client code breaks silently.
  • The run object in GET /status and in runAndWait() / streamed status updates: same key change.

Cause

packages/appkit/src/connectors/jobs/client.ts:

  • runNow returns { runId: Number(waiter.runId) }.
  • The other methods pass the modular SDK models through toNumbers. That helper converts bigints to numbers but keeps the SDK's camelCase keys.

Repro

const result = await appkit.jobs("default").runNow();
console.log(Object.keys(result.data));
// 0.88.1: ["run_id", "number_in_job", "wait"]
// 0.89.0: ["runId"]

Why it matters

jobs is exported from the package root, not /beta. The stability doc says only /beta APIs "may change between minor releases".

Ask

Either restore the snake_case shape that #647 describes, or keep camelCase and add a breaking-change note to the 0.89.0 release notes listing the affected methods and fields. Related: docs/plugins/jobs.md already changed to result.data.runId in 0.89.0.

This issue was written by Isaac.

Ngôn ngữ chính
TypeScript
Star
119
Fork
36
Merge trung bình
4 ngày 16 giờ
Pull request đã merge (30 ngày)
37

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của databricks/appkit

Tất cả issue của databricks/appkit

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.