Skip to content

filer: switch workspace upload from import-file to /workspace/import#5165

Open
shreyas-goenka wants to merge 20 commits into
mainfrom
shreyas-goenka/import-api
Open

filer: switch workspace upload from import-file to /workspace/import#5165
shreyas-goenka wants to merge 20 commits into
mainfrom
shreyas-goenka/import-api

Conversation

@shreyas-goenka

@shreyas-goenka shreyas-goenka commented May 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Replace POST /api/2.0/workspace-files/import-file/{path} with the multipart variant of POST /api/2.0/workspace/import (via the SDK's Workspace.Upload + format=AUTO). The previous endpoint is being deprecated and the new endpoint is the strategic replacement.

Why

  1. The import-file file API is being deprecated.
  2. In practice /workspace/import is ~2x faster for typical bundle deployments (see benchmarks below).
  3. The import API is well supported, has a higher rate limit (30 vs 20 rps/org), and returns structured errors.

Why multipart

/workspace/import's JSON body caps at 10 MiB (databricks.webapp.autoExportFormatLimitBytes). The multipart variant accepts the same sizes import-file did — verified up to 450 MB for regular files against a real workspace.

End-to-end bundle deploy benchmark (aws-prod-ucws, direct engine)

Fresh upload of all files on every deploy (local sync state wiped between runs), 4 KiB files, binaries interleaved per iteration, 3 timed runs each:

Files import-file (median, range) workspace/import (median, range) Speedup
100 15.2 s (13.5–18.7) 8.9 s (8.7–8.9) 1.7×
400 44.4 s (44.0–51.6) 28.9 s (28.9–28.9) 1.5×

Each deploy includes ~3–4 s of fixed non-upload overhead, so the upload phase itself improves by more than the totals suggest. Also note the run-to-run variance: ±0.1 s on the new endpoint vs ±5–8 s on the legacy one (dedicated workspace-import RLv2 group + stateless WCS vs the shared Projects limiter).

File-level throughput (aws-prod-ucws, 10 workers, 4 KiB files)

Endpoint Files Wall files/s Speedup
new 10 1.01 s 9.94 0.86× (legacy faster)
legacy 10 0.86 s 11.58
new 20 1.37 s 14.61 2.22×
legacy 20 3.04 s 6.58
new 50 2.72 s 18.40 1.74×
legacy 50 4.73 s 10.57
new 100 6.12 s 16.34 2.34×
legacy 100 14.31 s 6.99
new 300 19.39 s 15.48 1.81×
legacy 300 35.16 s 8.53
new 500 34.69 s 14.41 2.27×
legacy 500 1 m 18.51 s 6.37

Crossover at ~15 files. New endpoint sustains ~15 files/s; legacy degrades from 17 → 6 files/s as count grows.

Size caps (verified)

Files (no header) Notebooks (# Databricks notebook source)
/workspace/import (this PR, multipart) OK at 450 MB hard 10 MiB cap
/workspace-files/import-file (previous) 400 MB; 450 MB → 305 s server timeout hard 10 MiB cap (same databricks.notebook.maxNotebookSizeBytes)

The 10 MiB notebook cap is server-side and applies to both endpoints — switching does not regress maximum notebook upload size.

Error mapping

errors.Is against SDK sentinels rather than raw status/error_code dispatch. All "path is occupied" surfaces map to fileAlreadyExistsError:

  • 400 RESOURCE_ALREADY_EXISTS — sequential conflict, no overwrite flag.
  • 409 ALREADY_EXISTS — concurrent contention (observed in TestLock).
  • 400 INVALID_PARAMETER_VALUE — overwrite=true on a path where the existing object's node type differs from the upload. Branches on the AIP-193 ErrorInfo reason WORKSPACE_OBJECT_TYPE_MISMATCH that WCS now attaches to import path collisions (universe PR #2019174, WP-6031), with a message-substring fallback ("type mismatch" / "node type") for workspaces where that change has not landed.

Note on the fallback: a probe against aws-prod-ucws on 2026-06-12 showed all four collision shapes still return errors without details (no ErrorInfo), i.e. the WP-6031 rollout has not reached that workspace (or /workspace/import there is not yet served by WCS). The fallback is therefore load-bearing for now; it can be removed once the rollout is confirmed.

Plus ErrNotFoundnoSuchDirectoryError (or mkdir+retry under CreateParentDirectories); ErrPermissionDeniedpermissionError.

Test plan

  • Unit tests cover all three already-exists shapes + 403 / 500, and the new ErrorInfo-reason branch via a real HTTP roundtrip (the SDK only populates error details when parsing a response).
  • libs/testserver extended with multipart /workspace/import (now attaching the AIP-193 ErrorInfo detail on collisions), notebook header detection for .py/.sql/.scala/.r, and /workspace/list.
  • acceptance/bundle/sync-upload-edge-cases exercises 12 MiB binary, empty file, 3 notebook languages, plain .py (no header), .lvdash.json dashboard, non-ASCII filename, spaced filename. Now Git-Bash-safe on Windows (MSYS_NO_PATHCONV=1).
  • ~70 acceptance fixtures regenerated; rebased onto current main and re-regenerated fixtures that changed there (user_agent/simple, cmd/sync/dryrun-missing-remote, force_pull_commands).
  • All cross-type collision shapes (4) re-verified by direct probe against a real workspace on 2026-06-12.
  • Load tested vs the previous endpoint at concurrencies 1/10/20/30 (1 KB) and at sizes up to 450 MB; end-to-end deploy benchmark above.
  • CI green on this PR.

This pull request and its description were written by Isaac, an AI coding assistant.

@shreyas-goenka shreyas-goenka force-pushed the shreyas-goenka/import-api branch from 0a9923f to e86aeba Compare May 6, 2026 10:38
@shreyas-goenka shreyas-goenka force-pushed the shreyas-goenka/import-api branch from 4db3fb6 to 6907378 Compare May 6, 2026 11:26
@shreyas-goenka shreyas-goenka force-pushed the shreyas-goenka/import-api branch 2 times, most recently from 37a1400 to 1e2fe83 Compare May 6, 2026 14:30
// Example: "Node with name /Users/me/.bundle/.../deploy.lock already
// exists. Please pass overwrite=true to update it."
//
// - 400 INVALID_PARAMETER_VALUE — overwrite=true on a path where the

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This error is not good. This then requires us to do regex on the error to figure out whether it's "already exists". I'm asking the API team to change this.

@shreyas-goenka

shreyas-goenka commented May 8, 2026

Copy link
Copy Markdown
Contributor Author

Benchmark results on the new API vs old API, the new API is 2x better when a lot of files are being uploaded:

  ┌──────────┬───────┬─────────────┬─────────┬───────────────────────┐
  │ Endpoint │ Files │    Wall     │ files/s │   Speedup vs legacy   │
  ├──────────┼───────┼─────────────┼─────────┼───────────────────────┤
  │ new      │    10 │      1.19 s │    8.37 │ 0.50× (legacy faster) │
  ├──────────┼───────┼─────────────┼─────────┼───────────────────────┤
  │ legacy   │    10 │      0.61 s │   16.45 │                     — │
  ├──────────┼───────┼─────────────┼─────────┼───────────────────────┤
  │ new      │   100 │      6.04 s │   16.56 │                  3.9× │
  ├──────────┼───────┼─────────────┼─────────┼───────────────────────┤
  │ legacy   │   100 │     23.55 s │    4.25 │                     — │
  ├──────────┼───────┼─────────────┼─────────┼───────────────────────┤
  │ new      │   300 │     19.36 s │   15.49 │                  3.2× │
  ├──────────┼───────┼─────────────┼─────────┼───────────────────────┤
  │ legacy   │   300 │ 1 m 01.62 s │    4.87 │                     — │
  ├──────────┼───────┼─────────────┼─────────┼───────────────────────┤
  │ new      │   500 │     32.74 s │   15.27 │                  3.0× │
  ├──────────┼───────┼─────────────┼─────────┼───────────────────────┤
  │ legacy   │   500 │ 1 m 38.62 s │    5.07 │                     — │
  └──────────┴───────┴─────────────┴─────────┴───────────────────────┘

  (10 workers, 4 KiB files, aws-prod-ucws.)

  Findings:
  - Crossover at ~50 files: legacy beats new for ≤ 10 files; new is 3-4× faster from 100+ on.
  - Legacy throughput collapses: 17 → 4-5 files/s as N grows, server applies escalating back-pressure.
  - New throughput is flat at ~15 files/s regardless of count — no degradation up through 500 files.
  - For typical bundle deploys (~100-1000 files), expect a 3-4× wall-clock speedup.

A future reader of this comment can't tell what "this migration" or "the
endpoint we are migrating away from" refers to once the PR commit is in
the past. Spell out /workspace-files/import-file → /workspace/import
where it matters, and re-anchor the no-regression note on those endpoint
names rather than "this migration".

Co-authored-by: Isaac
…xisting sentinels)

Verified against a real workspace by uploading varied content into pre-existing
paths of mismatched node types: every cross-type collision the server can
produce surfaces as either:

  - 400 RESOURCE_ALREADY_EXISTS, or
  - 409 ALREADY_EXISTS

both already caught by errors.Is(err, ErrResourceAlreadyExists) /
errors.Is(err, ErrAlreadyExists). The "400 INVALID_PARAMETER_VALUE with
'Requested node type [X] is different from the existing node type [Y]'"
shape was hypothesized in the original PR but does not occur in practice
on /workspace/import — the branch was dead code.

Replace the corresponding unit test with one that pins the actual cross-type
collision shape (409 ALREADY_EXISTS with "Node with name X already exists").

Co-authored-by: Isaac
…rwrite=true)

Previous commit (687c731) called the INVALID_PARAMETER_VALUE branch dead
code based on conflict scenarios that didn't pass overwrite=true. Re-probing
with overwrite=true (the mode bundle deploy uses) shows the server does
return 400 INVALID_PARAMETER_VALUE for cross-type collisions, in two
distinct message shapes:

  "Cannot overwrite the asset at X due to type mismatch (asked: ..., actual: ...)"
  "Requested node type [...] is different from the existing node type [...]"

Both fire only when the existing object's node type differs from the upload
(NOTEBOOK at /a/foo, regular-content overwrite-upload to /a/foo or /a/foo.py).
Without overwrite=true, the same scenario surfaces as RESOURCE_ALREADY_EXISTS
or ALREADY_EXISTS — which is why the no-overwrite probe missed this branch.

Restore the mapping (returning fileAlreadyExistsError so the caller's
errors.Is(err, fs.ErrExist) check still fires) and broaden the message
pattern from "Requested node type" to also match "type mismatch", so both
real-workspace messages are caught. Add unit tests for both shapes.

Co-authored-by: Isaac
…amples

Drop the abstract "Sources for the third bullet" footer and inline a concrete
example message for each of the three error shapes. Each bullet now shows
exactly what the server returns and the scenario that triggers it, so a
future reader doesn't have to re-derive which path/state combination produces
each shape.

Co-authored-by: Isaac
The previous regen sweep widened the filter from
'^//import-file/' '^//workspace/delete' (two narrow exclusions) to
'^//workspace/' (catch-all under /workspace/*). That hid the workspace/mkdirs
calls the test was previously asserting on. Restore the original intent: only
exclude the upload + delete requests, preserving the mkdirs assertions.

Also pick up the out.test.toml regeneration for the force_pull_commands
test that landed on main (5028) to switch the [Section] format to dotted
keys.

Co-authored-by: Isaac
@shreyas-goenka shreyas-goenka force-pushed the shreyas-goenka/import-api branch from 5dd5be7 to d4e962c Compare May 8, 2026 07:11
…l + scala notebooks

Extend the testserver to detect notebook headers for .sql, .scala, .r in
addition to .py (each with its language-appropriate line-comment) and to
serve GET /api/2.0/workspace/list — so acceptance tests can assert what the
server actually stored, not just what was sent on the wire.

Extend acceptance/bundle/sync-upload-edge-cases to upload pyNb.py,
sqlNb.sql, scalaNb.scala (all with the source header), plus plain-script.py
(no header), and assert via "databricks workspace list" that:
  - pyNb       → NOTEBOOK / PYTHON  (extension stripped)
  - sqlNb      → NOTEBOOK / SQL     (extension stripped)
  - scalaNb    → NOTEBOOK / SCALA   (extension stripped)
  - plain-script.py → FILE          (header missing, extension preserved)
  - dashboard.lvdash.json, large.bin, empty.txt, héllo.txt, with spaces.txt
    all → FILE

Co-authored-by: Isaac
…dge-cases

The fact that the test produces deterministic output already proves the
12 MiB binary isn't recorded byte-for-byte (otherwise the recording would
contain literal megabytes of payload). The dedicated "12 MiB binary upload
is summarized" assertion was implementation-detail noise.

Co-authored-by: Isaac
@shreyas-goenka shreyas-goenka marked this pull request as ready for review May 8, 2026 08:06
@github-actions

github-actions Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

Approval status: pending

/acceptance/bundle/ - needs approval

71 files changed
Suggested: @denik
Also eligible: @pietern, @andrewnester, @janniklasrose, @anton-107, @lennartkats-db

/libs/filer/ - needs approval

Files: libs/filer/workspace_files_client.go, libs/filer/workspace_files_client_test.go
Suggested: @simonfaltum
Also eligible: @Divyansh-db, @renaudhartert-db, @hectorcast-db, @parthban-db, @tanmay-db, @tejaskochar-db, @mihaimitrea-db, @chrisst, @rauchy

General files (require maintainer)

4 files changed
Based on git history:

  • @denik -- recent work in libs/testserver/, libs/filer/, acceptance/internal/

Any maintainer (@andrewnester, @anton-107, @denik, @pietern, @simonfaltum, @renaudhartert-db) can approve all areas.
See OWNERS for ownership rules.

Squashed rebase of shreyas-goenka/import-api onto main. Replaces the
POST /api/2.0/workspace-files/import-file/{path} call in
WorkspaceFilesClient.Write with the SDK's Workspace.Upload (multipart
POST /api/2.0/workspace/import, format=AUTO), keeping main's
errors.AsType/workspaceIDHeaders refactors in the untouched methods.

Co-authored-by: Isaac
…llisions

WCS now attaches structured ErrorInfo (reason + metadata) to
/workspace/import path-collision errors (universe PR #2019174, WP-6031).
Branch on reason WORKSPACE_OBJECT_TYPE_MISMATCH instead of only
string-matching the message. The message match is kept as a fallback:
a probe on 2026-06-12 showed aws-prod-ucws still returns these errors
without details, so the rollout has not reached all workspaces yet.

The testserver now attaches the same ErrorInfo detail to its translated
RESOURCE_ALREADY_EXISTS response to mirror the server behavior.

Co-authored-by: Isaac
- Drop the trailing blank line in bind/pipelines/update/script that
  failed the whitespace linter.
- Prefix workspace list with MSYS_NO_PATHCONV=1 in sync-upload-edge-cases
  so Git Bash on Windows does not rewrite the /Workspace/... argument
  into a C:/Program Files/... path.
- Regenerate the user_agent/simple terraform fixture against current
  main (provider 1.117.0, go 1.25.8, provider_config workspace_id).

Co-authored-by: Isaac
dryrun-missing-remote (added on main) records upload requests and still
expected the legacy import-file endpoint; force_pull_commands
out.test.toml no longer dumps GOOS keys with the current harness.

Co-authored-by: Isaac
The previous branch history is superseded by the rebased commits; this
merge keeps the rebased tree exactly and preserves the old head as an
ancestor so the PR branch can be updated without a force push.

Co-authored-by: Isaac
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 5a38b31

Run: 27448021211

Env 🟨​KNOWN 🔄​flaky 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
🟨​ aws linux 7 15 264 978 8:29
🟨​ aws windows 7 15 266 976 14:41
💚​ aws-ucws linux 7 15 360 892 7:03
💚​ aws-ucws windows 7 15 362 890 13:58
💚​ azure linux 1 17 267 976 6:28
💚​ azure windows 1 17 269 974 12:12
💚​ azure-ucws linux 1 17 365 888 7:34
💚​ azure-ucws windows 1 17 367 886 12:23
💚​ gcp linux 1 17 263 979 8:27
🔄​ gcp windows 2 1 17 263 977 14:54
24 interesting tests: 15 SKIP, 7 KNOWN, 2 flaky
Test Name aws linux aws windows aws-ucws linux aws-ucws windows azure linux azure windows azure-ucws linux azure-ucws windows gcp linux gcp windows
🟨​ TestAccept 🟨​K 🟨​K 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/invariant/no_drift 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/permissions 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions 🟨​K 🟨​K 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct 🟨​K 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 🟨​K 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions 🟨​K 🟨​K 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct 🟨​K 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 🟨​K 🟨​K 💚​R 💚​R
🙈​ TestAccept/bundle/resources/postgres_branches/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/recreate 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/replace_existing 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/update_protected 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/without_branch_id 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_endpoints/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_endpoints/recreate 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_projects/update_display_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/synced_database_tables/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/grants/select 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🔄​ TestFetchRepositoryInfoAPI_FromRepo/root ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
🔄​ TestFetchRepositoryInfoAPI_FromRepo/subdir ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p ✅​p 🔄​f
Top 29 slowest tests (at least 2 minutes):
duration env testname
6:15 aws-ucws windows TestAccept
6:14 azure windows TestAccept
6:08 gcp windows TestAccept
6:05 azure-ucws windows TestAccept
4:39 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:21 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:14 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:06 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:24 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:08 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:08 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:01 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:57 azure linux TestAccept
2:55 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:54 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:53 gcp linux TestAccept
2:53 azure-ucws linux TestAccept
2:49 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:47 aws-ucws linux TestAccept
2:46 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:40 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:40 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:37 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:35 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:29 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:24 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:24 aws linux TestSecretsPutSecretStringValue
2:21 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:21 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct

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.

2 participants