These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)
| Commit: | 9141939 | |
|---|---|---|
| Author: | Arjit Jaiswal | |
| Committer: | fa-assistant | |
Capture thread start telemetry errors * Capture thread start telemetry errors * Send thread start errors before analytics * Address thread start telemetry review GitOrigin-RevId: d223790a8056072ec41067b2d28c568b0188e087
The documentation is generated from this commit.
| Commit: | 6d4c091 | |
|---|---|---|
| Author: | Colin Rogers | |
| Committer: | fa-assistant | |
telemetry: capture manage_state on invocation span * telemetry: capture manage_state on invocation span Adds a `manage_state` boolean to the InvocationEvalArgs telemetry proto so we can track when users enable dbt State management (auto-deferral). The value is the resolved flag from `--manage-state`, `DBT_ENGINE_MANAGE_STATE`, or `flags.manage_state` in dbt_project.yml / user settings, populated onto the structured invocation span. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * telemetry: source manage_state from existing run_cache_service Per review: drop the redundant EvalArgs.manage_state field. In production `run_cache_service` is only ever assigned the resolved manage-state value (in configure_run_cache) or the default false, so the invocation telemetry span can read it directly instead of shadowing it with a new field. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * changelog: add entry for manage_state telemetry Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Add issue reference to telemetry change * test: regenerate otel telemetry golden files for manage_state; move changelog to repo root Add `manage_state` to the eval_args in all otel telemetry snapshot golden files (.otel.jsonl / .otel.parquet.jsonl) to reflect the new InvocationEvalArgs field. Move the changelog entry from fs/sa/.changes to the repo-root .changes/unreleased so the changelog-existence check passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> GitOrigin-RevId: 26113e0c59c52a6d82e55072b5803019ef682c2e
| Commit: | 20e88a9 | |
|---|---|---|
| Author: | Andrew Meredith | |
| Committer: | fa-assistant | |
feat(telemetry): emit Vortex Login event on dbt login * feat(telemetry): emit Vortex Login event on dbt login; sync protos to v1.0.528 Adds a Login Vortex event emitted at the end of every `dbt login` attempt (success or failure). The event captures: - success/failure and which OAuth flow completed (platform or state) - user cookie from ~/.dbt/.user.yml - project_id (MD5 of project name) if run inside a dbt project - platform identity fields (user ID, account ID, account identifier) decoded from the JWT, falling back to the cached session token on failure so expired-credential runs still populate identity context Also syncs proto definitions to v1.0.528 and regenerates Rust bindings. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: add changie for Login Vortex event Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(telemetry): use log_proto instead of log_proto_and_shutdown in login_event log_proto_and_shutdown triggered Vortex flush from inside the instrumented async context, causing the background producer task to emit tracing events with no root span and hitting the debug_assert in data_layer.rs. Using log_proto lets the event get queued and flushed by the normal invocation_end_event shutdown path, which runs inside spawn_blocking instrumented with the invocation span. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: propagate tracing span into license fetch spawned task did_login spawns a tokio task to fetch the platform license without inheriting the caller's span. That task then uses block_in_place + Handle::block_on to drive an async future synchronously; exit_runtime clears the thread-local span context before the closure runs. Two-part fix: - dbt-feature-gating: instrument the spawned task so it enters with the invocation span, covering the warn! on failure too - dbt-licensing: capture Span::current() before block_in_place so the future passed to block_on carries the span across the exit_runtime boundary Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(lint): remove unused import --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> GitOrigin-RevId: a78cfb5b2efff5610c9f0e74f227f252e7878de4
| Commit: | 798525c | |
|---|---|---|
| Author: | Felipe Oliveira Carvalho | |
| Committer: | fa-assistant | |
mv fs/sa/crates/dbt-run-cache fs/sa/crates/dbt-state * mv fs/sa/crates/dbt-run-cache fs/sa/crates/dbt-state * Rename dbt-run-cache crate to dbt-state Update package/lib name and all workspace, dependency, and import references to follow the directory rename. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> GitOrigin-RevId: 008e87e880655d0e4583eba79db66ab646098600
| Commit: | b0f0e37 | |
|---|---|---|
| Author: | Anders | |
| Committer: | fa-assistant | |
feat(telemetry): emit catalog_type on RunModel event * feat(telemetry): emit catalog_type on RunModel event Add a catalog_type field to the RunModel telemetry event, mirroring how PR #9888 added catalog_name. catalog_type is resolved from the model's catalog_name by following the catalog's active write integration in catalogs.yml (same resolution the adapter uses at materialization time). The proto binding is hand-stubbed (tag 23) pending merge of proto PR dbt-labs/proto#629; it will be regenerated by sync_protos.sh pull. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(telemetry): resolve catalog_type for catalogs.yml v2 Wire up v2 catalog_type resolution in resolve_catalog_type. v2 declares `type` directly on each catalog (no write integrations), so resolve via view_v2() and read catalog.catalog_type. v1 path unchanged. Addresses review feedback on #10761 (VersusFacit: "Add v2 :D"). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(proto): sync catalog_type from merged proto#629 Replace the hand-stubbed RunModel.catalog_type field with the real generated binding now that dbt-labs/proto#629 has merged. Adds the field to the vendored fusion.proto and regenerates via `cargo xtask protogen`. Scoped to catalog_type only (catalogs count is proto#630 / fs#10762). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> GitOrigin-RevId: fefcef2fa15555d4a14c13b7daacf1dbd8449f8d
| Commit: | 9b6d8f2 | |
|---|---|---|
| Author: | Anders | |
| Committer: | fa-assistant | |
feat(telemetry): emit catalogs count on ResourceCounts event * feat(telemetry): emit catalogs count on ResourceCounts event Add a project-wide `catalogs` count (int32, tag 18) to the parse-time ResourceCounts telemetry event. The count is derived from the parsed catalogs.yml (DbtState.catalogs) at the compilation call site and threaded into resource_counts_event. The proto binding is hand-stubbed pending the merge of dbt-labs/proto#630; once that lands the field will be regenerated via sync_protos.sh pull. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(proto): sync catalogs count from merged proto#630 Replace the hand-stubbed ResourceCounts.catalogs field with the real generated binding now that dbt-labs/proto#630 has merged. Adds the field to the vendored fusion.proto and regenerates via `cargo xtask protogen`. Scoped to the catalogs count only (catalog_type is proto#629 / fs#10761). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * style: use Vec::len for catalog count, matching surrounding counts resource_counts_event computes every other resource count with `.len() as i32`; catalogs_seq() returns a &yml::Sequence (a Vec), so use `.len()` instead of `.iter().count()` for consistency. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> GitOrigin-RevId: 952b4346a1e73bb975ed29f55a73285fde76827e
| Commit: | 98b6669 | |
|---|---|---|
| Author: | Walther Lalk | |
| Committer: | fa-assistant | |
feat(dbt-onboard): drive onboarding auth via AuthChain + dbt login (#10646) * feat(proto): add Login screen variant to OnboardingScreen enums * refactor(dbt-onboard): extract ask_have_project helper * feat(dbt-onboard): add LoginStep that shells out to dbt login * feat(dbt-onboard): replace dbt_cloud.yml autodetect with AuthChain + login prompt * refactor(dbt-onboard): drop LinkAccount step (replaced by LoginStep) * test(dbt-onboard): unit-test retry parsing; split WelcomeStep into named helpers * docs(dbt-onboard): update README flow for login-based onboarding * chore: changie entry for dbt-onboard login flow * fix(dbt-onboard): invoke current binary for dbt login subprocess PATH-based lookup of 'dbt' is intercepted by version-manager shims (asdf, mise) and fails when no version is configured. Use None so run_streaming_program resolves the current_exe(), matching the existing pattern in dbt_parse, compile_sa_off, and other steps. Also commits Cargo.lock for the dbt-platform-auth dep introduced in d17b40a282. * fix(dbt-onboard): split multi-line connect prompt to avoid double-render dialoguer::Confirm re-renders its prompt after the user submits an answer, which doesn't handle embedded \n\n cleanly — the first line of a multi-line prompt prints twice. Move the explanatory text into write_paragraph calls before the Confirm, and keep the Confirm prompt single-line, matching every other prompt in this crate. * feat(dbt-onboard): skip strict static analysis when not signed in to dbt platform Strict mode requires a dbt platform account. When the user declines to connect (or the login flow fails and they choose Continue), the onboarding now skips the 'Want to try strict mode?' prompt at the baseline-compile step and routes straight to CompileSaBaselineSuccess. Track auth state via a new IS_AUTHED context-store key set by: - WelcomeStep::show_authed_path (AuthChain auto-resume succeeded) - LoginStep on successful 'dbt login' exit Absent / false at CompileSaBaseline = skip strict. * fix(sdf-features): exit after `dbt init --fusion-upgrade` onboarding succeeds OnboardingFlow::run returns Ok(()) on the Success terminal state, which will_init_project propagated unchanged - so after onboarding finished cleanly, control returned and the regular `dbt init` flow then ran on top. The intent (per the inline comment) is that onboarding runs INSTEAD of init; collapse both branches into a single exit-with-status path so this is true regardless of success or failure. * feat(dbt-onboard): offer sign-in at baseline-success prompt instead of skipping strict Previously, unauthed users hit a skip message after baseline compile and the strict step was unreachable. Now the baseline-success prompt itself reframes for unauthed users: 'Yes, sign in to dbt platform and try strict mode.' On choosing that, route through LoginStep with a context-stored return-screen pointer; LoginStep honors it on success and goes directly to CompileSaStrict instead of its default ProfileCheck. The authed path (Yes, let's try running in strict mode -> CompileSaStrict) and the EndEarly branch are unchanged. * Set author to 'dakota' in onboarding feature Updated author field in the onboarding feature description. GitOrigin-RevId: 295ba64f3d2ddb28dc2e3ca1a25fd3551d6638df
| Commit: | b417dfc | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Populate Vortex invocation distribution (#10626) * Discover proto checkout in sync script * pull updated protos * Populate Vortex invocation distribution * Move invocation distribution onto event emitter * Configure invocation distribution via builders GitOrigin-RevId: 6c2e69d0a71cdb0df719991a7be16583ea7ba316
| Commit: | 3271802 | |
|---|---|---|
| Author: | Alexander Bogdanowicz | |
| Committer: | fa-assistant | |
Bring Renderable and RunCache out to SA (#10578) * Move task-cache into SA fully - refactor TaskRunnerCtx * remove unit test dependency on sdf-frontend pt.1 * Unit test should use TypeOps for formatting types * Fix fmt * changie * Add TypeOps::format_ident and remove sdf-frontend format_ident from unit_test Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * Fix failing unit tests * move run-cache to oss * fix snowflake quoting handling in oss * Fix format ident failing test * Fix copybara failing workflow * Move renderable tasks to SA along with task cache dependency * Use typeops to fmt identifier * Remove sdf_frontend deps from unit_test: FormatAs and TypeConversion - Replace format_fqn to use TypeOps::format_ident per component instead of FullyQualifiedName::format_as (FormatAs trait) - Add TypeOps::can_cast_literal_to_type with default Ok(true); override in sdf-adapter TypeOpsImpl for Snowflake and DuckDB decimal checks (TypeConversion trait) - Fix pre-existing fmt and clippy warnings across dbt-tasks-sa Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * enable tls-native-roots and transport for tonic --------- Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Felipe Oliveira Carvalho <felipekde@gmail.com> GitOrigin-RevId: 098cd972f2ded6efb748bdee2a01ac2a31c13248
| Commit: | 05887cf | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Record structured clone cache reasons (#10520) * Record structured clone cache reasons * Simplify clone reuse node status * Rename clone cache telemetry reason GitOrigin-RevId: 5124ccb9497b395e5f29cb87c88ca12dda98228a
| Commit: | 0c5a6e4 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Add error code names to log telemetry (#10519) * Add error code names to log telemetry * Address log telemetry review comments GitOrigin-RevId: 8ddccad0da2ae27b04a1c79fa6a91e5b83c1d6c7
| Commit: | 6a8adbf | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Exclude connection waits from node duration (#10421) * Exclude connection waits from node duration * Remove TUI progress unit tests * Rename node wait metric to idle time * Move connection wait formatters * Exclude idle time from node evaluated logs * Update workspace hack formatting * fix hakari * formatting bug GitOrigin-RevId: 42d19949a0f4cc7ad6ccedce0712c6daf99053a1
| Commit: | 6db2286 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Add trace events for adapter connection lifecycle (#10408) * add connection open/close events * chore: add connection telemetry changelog GitOrigin-RevId: 82a02c8b0e7a99019c3d4ee7beb40fa3db07bd14
| Commit: | f540a48 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Instrument adapter connection backpressure (#10293) * use intrumentation helpers * Instrument adapter connection backpressure * Add adapter connection wait changelog * Document adapter connection wait event * Refresh remaining telemetry goldens * add trace level metrics to connection backpressure span * goldies GitOrigin-RevId: ee389219dea03d036ac45dd241bdbdb523f50de7
| Commit: | 4d5d1e8 | |
|---|---|---|
| Author: | milevin | |
| Committer: | fa-assistant | |
feat(run-cache): port gRPC run-cache service integration from monorepo (#10184) * feat(run-cache): port gRPC run-cache service integration from monorepo Ports 17 merged PRs (#57–#303) from dbt-fivetran-collab/june-1-tmp-monorepo fs/ subtree into this repo, forked at v2.0.0-preview.175. **What's included** Run-cache gRPC service (Skip / Execute / Clone decisions): - New files: dbt-run-cache/{build.rs, proto/, src/metadata_cache.rs, src/proto.rs, src/request_builder.rs, src/service_client.rs, src/service_config.rs, src/view_traversal.rs} - New task files: dbt-tasks/src/{run_cache_lifecycle.rs, runnable/run_cache_{dev_clone,request,service}.rs} - Run-cache service dispatch wired into RunExecutionPath::Remote; after_success forwarded so ConfirmExecution fires and Skip/Clone work on subsequent runs - SAO (Redis) task cache replaced with TaskCacheNoop when gRPC service is active to prevent interference between the two caching layers Run-cache auto-deferral: - synthesize_defer_nodes synthesises prod-target defer nodes from the run-cache service config when no manifest-backed state is present - defer_common called immediately after synthesis so the node resolver is populated with deferred relations before precompile runs View-definition traversal (supporting Clone decisions): - fetch_view_definitions added to Snowflake, BigQuery, Databricks adapters - New view_definition.rs type; ViewDefinitionTraverser in dbt-run-cache Telemetry: - NodeCacheReason::Clone variant added to proto + generated code - task_spans.rs maps ReusedNoChanges("Cloned…") → Clone reason - formatters/node.rs emits "Cloned from cached relation" terminal message Other fixes ported: - DbtMaterialization::Incremental → RelationType::Table (fixes is_incremental() returning false after dev-clone) - run_cache_service flag gate added to sdf-features - RunTasksArgs.run_cache_service field; RunCacheLifecycle threaded through run_tasks_with_listener → context_factory → TaskRunnerCtxInner - TaskRunnerCtxInner (dbt-tasks-core) extended with run-cache fields (run_cache_metadata, service_requested/config/client, view_traverser, execute, run_cache_deferred_fqns) * fix(dbt-main): allow dbt-run-cache as sdf-frontend wrapper in deny.toml The run-cache merge introduced a new dbt-run-cache crate that depends on sdf-frontend. dbt-main transitively pulls it in, which triggered the unmatched-wrapper / banned errors in the cargo-deny consistency check. * fix(dbt-index): remove duplicate test_parquet_grain_declared_priority_chain The function was ported from the monorepo in the previous commit but had already been added independently to main via b9c7e0990a (dbt-index: Deferral Index #10117). Both definitions were identical; keeping the fs-repo version per source-of-truth policy. * refactor(dbt-tasks-core): move run-cache fields out of TaskRunnerCtxInner The public dbt-tasks-core crate was depending on the private dbt-run-cache crate, which broke the Copybara public export: cargo metadata in the copybara-transformed tree failed with "dependency.dbt-run-cache was not found in workspace.dependencies" because the workspace entry is stripped on export. Move the six run-cache-related fields off TaskRunnerCtxInner and onto ExtendedCtxImpl (already private, already a designated holder for "information not coupled to the tasks runner"). Access sites in crates/dbt-tasks/ go through a new TaskRunnerCtx::ext() accessor. Drops the dbt-run-cache dep from dbt-tasks-core/Cargo.toml. * Mr. Clipster * fix(run-cache): remove AUTODEBUG prints leftover from monorepo port The eprintln! in RefFunction was leaking into stdout and breaking goldie snapshot tests; the two tracing::warn! calls in RunCacheProfileResolver were equally unintended. * fix(run-cache): require explicit opt-in for gRPC service The gRPC Run Cache service was initializing whenever the legacy SAO task cache was active (`run_cache_mode.write_cache()`), conflating two unrelated features. State-aware tests using `--task-cache-url redis://...` silently triggered service init, which then failed in CI (no RUN_CACHE_OAUTH_CLIENT_SECRET) and leaked warnings into goldie outputs. Drop `|| arg.run_cache_mode.write_cache()` from both gates so the service is a no-op unless the user explicitly opts in via `--run-cache-service` or `RUN_CACHE_*` env vars: - run_cache_lifecycle.rs: initialize_run_cache_service - compilation.rs: run_cache_auto_defer_requested Also bundles PR-feedback cleanups: - context_factory.rs + task_runner.rs: consolidate four run-cache fields (requested / metadata / config / client) into a single `run_cache_lifecycle: RunCacheLifecycle` on the factory, destructured at ExtendedCtxImpl construction. - runnable/mod.rs: rename `record_sao_skip` → `record_cache_skip`; final arg renamed `actual_hash` → `source` since it also tags run-cache-service skips. Adds comment on SAO/service mutual exclusion. - runnable/run_cache_service.rs: refactor `prepare_write_only_execution_record` to an `else if` chain instead of early returns. - metadata/view_definition.rs: doc comment no longer references dbt-run-cache (traversal now lives in callers). - schemas/common.rs: explain why `DbtMaterialization::Incremental → RelationType::Table` matters for dev-cloned incrementals (is_incremental() checks relation.type). * fix(run-cache): run defer pipeline whenever defer_nodes is present The run-cache auto-defer flow synthesizes profile-target defer_nodes on augmented_resolved_state before precompile, but precompile gated all defer machinery (defer_common, defer_sa_upstreams, set_defer_context_on_resolver, persistence) on `arg.defer && defer_nodes.is_some()`. Since auto-defer runs without `--defer` (arg.defer == false), the pipeline never fired for it, which broke 8 Snowflake integration tests: test_dev_run_clones_prod_and_appends test_dev_run_clones_when_prod_table_has_no_cache_metadata test_dev_run_defers_when_upstream_exists test_dev_run_with_clone_incremental_in_dev_always test_dev_run_defer_favor_state test_incremental_multiple_runs_no_clone_across_dev_envs test_dbt_show_favor_state_defers_to_prod test_deferred_dependencies_use_lenient_matching The monorepo's port (314adec) papered over this with a one-shot defer_common call before precompile and `BTreeSet::new()` for run_cache_deferred_fqns — but that skipped defer_sa_upstreams and set_defer_context_on_resolver entirely, and lost defer_common's deferred_unique_ids return value. Widen precompile to gate on defer_nodes.is_some() regardless of source: - dbt-precompile/src/lib.rs: - Take any pre-populated augmented_resolved_state.defer_nodes (run-cache auto-defer source) before manifest loading. Manifest wins when both are present. - Drop `arg.defer &&` from the five gate sites; defer pipeline now fires whenever defer_nodes is set, regardless of source. - Unconditionally persist defer_nodes back to augmented_resolved_state. - Return (StaticAnalysisBucketsImpl, HashMap<CanonicalFqn, String>) so callers can thread deferred_unique_ids onward. - dbt-main/src/compilation.rs: - Drop the inline defer_common call from the auto-defer block; just synthesize and store on augmented_resolved_state.defer_nodes. Precompile now runs the full defer pipeline against them. - Destructure precompile's return value, pass deferred_unique_ids.keys() to run_tasks_with_listener (replacing the BTreeSet::new() placeholder that broke lenient dependency matching). Bundled PR-feedback refactor (orthogonal to the bug fix): - metadata_adapter.rs + metadata/mod.rs: rename run_cache_relation_metadata{,_inner} → relations_exist{,_inner}, return BTreeMap<String, bool> directly and drop the RunCacheRelationMetadata wrapper struct. Only `exists` was ever consumed. - runnable/run_cache_dev_clone.rs: caller renames to match. * fix(seed): restore Snowflake column-change hint on with-task-result path The monorepo port (314adec209) factored RunTask::run_task's "default execution" branch into execute_remote_node_with_after_success and dropped the post-call wrap to seed::maybe_resolve_remote_seed_column_hint. The resolver still ran on the no-task-result path (execute_remote_node_no_result), but Snowflake seeds always carry a task result and so lost the user-facing diagnostic: Seed 'my_seed' has column schema changes that require a full refresh. Existing columns: [...] New CSV columns: [...] Re-run with `--full-refresh` to drop and recreate the table. Restore the call inside execute_remote_node_with_after_success so the with-task-result path enriches the FsError before cache finalization. The resolver early-returns for non-seed nodes. Repros / verifies: commands_seed::seed_column_change_without_full_refresh_snowflake. * refactor(run-cache): address PR #10184 review Move run-cache-specific code out of dbt-main per Felipe's review: - Comment 1 + 3: call site and the full RunCacheProfileResolver family (~440 lines + 6 helpers) move from dbt-main into a new dbt-precompile::run_cache_defer module. precompile gains a jinja_env parameter and invokes the synthesizer at the top of defer_pre_classify_static_analysis, replacing the prior implicit augmented_resolved_state.defer_nodes pre-population hand-off. Manifest-vs-synth precedence and warn-and-continue degradation semantics preserved. dbt-main drops 7 imports plus the dbt-profile + dbt-run-cache crate deps. - Comment 2: RunCacheLifecycle::initialize moves out of compilation.rs into run_tasks_with_listener, where arg + execute_mode were already in scope. compilation.rs drops the RunCacheLifecycle import. * refactor(run-cache): unify CacheDecision into RunCacheServiceDecision Collapse the SAO-specific CacheDecision enum into RunCacheServiceDecision so both caching paths produce the same decision shape. Skip carries an optional sao_stored_hash, Execute an optional sao_guard, and a Disabled variant covers the cache-off case. `check_cache` returns the unified type directly; node_hash and finalize_sao_guard replace the removed CacheDecision methods. The Remote dispatch is now a single match on all four variants and execute_remote_node_with_after_success no longer recomputes the decision. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * more cleanup * refactor(run-cache): proto stopgap and emit_* sweep Address mishamsk's review on #10184: - Drop NODE_CACHE_REASON_CLONE from the public proto; carry the cache decision text via a new optional NodeCacheDetail.message instead. Formatter prefers the message when set, falls back to enum-derived default. Keeps "Cloned from cached relation" terminal text without committing to a Snowflake-named or Skipped-categorized variant; field is marked stopgap pending the planned NodeOutcome::Success(Clone). - Replace bare tracing::{debug,warn,info,error}! macros across the run-cache surface with dbt_common::tracing::emit::* APIs. Drop the meaningless `target =` structured-field usage. Warns route through the new RunCacheServiceWarn ErrorCode (1410). Internal-only diagnostics moved to trace; "service disabled by configuration" stays at debug as a user-facing operational signal. * more cleanup * fix(run-cache): restore run_stats insert on Clone-success path The merge resolution in 828c34cd3d combined the if/else shape from 4d10576f13 with the Err-warn block from 903073cb1f and ended up using `return Ok(status)` for the Clone-success arm. That early-returned from `RunTask::run_task`, bypassing `run_stats.insert`, so the cloned node never appeared in run_results.json. Six integration tests started failing with `Node 'X' not found in run_results.json`. Capture the Clone success into a sentinel and short-circuit the model body via `if let Some(status) = clone_status`, so the cloned status flows back into the outer `result` and post-processing (run_stats, report_completed, telemetry) still fires. * proto gen * build break fix --------- Co-authored-by: Alexander Bogdanowicz <alexkbog@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> GitOrigin-RevId: de7b2b699377af3d56a19ee159c2b2581b277fc1
| Commit: | 05bc477 | |
|---|---|---|
| Author: | Mila Page | |
| Committer: | fa-assistant | |
chore(telemetry): add some new catalogs.yml info into RunModel (#9888) * chore(telemetry): add some new catalogs.yml info into run model information * chore(agents): Add instructions for working with Vortex. * chore(fusion-telemetry): sync relevant proto files GitOrigin-RevId: 6fa12d263dad6e4ddd35ea9ec1c1de49a202cdb0
| Commit: | 3114009 | |
|---|---|---|
| Author: | Hannan Naeem | |
| Committer: | fa-assistant | |
feat: Add NodeStatus::SucceededWithWarning (#9311) * feat: Add new nodeSucceedWithWarn execution status * feat: propogate warn-on-success through run_results.json and CLI summary * test: update gitignore * chore: add change log entry * chore: updated opt-out list registry * refactor: simplify proto * test: update golden files + fix for failing tests * refactor: address code review: wrap NodeWarningOutcome in message * doc: proto comments * refactor: minor refactor helper function + fix: update golden files * chore: regen proto * code review: - Add NodeSubOutcome enum to replace TestOutcome as general sub-outcome discriminator - Add TelemetryNodeWarnOutcome middleware which automatically stamps WithWarnings - Clean up for helper surface and compact call-sites * chore: update change log to be more user friendly * refactor: remove find_and_record_span_status_from_attrs callsites now that middleware is in place * Address code review: Clean up SucceededWithWarning implementation * address code review: use data_provider API instead of find_and_update_span + update golden files and comments * fix: update tests + stamp warn authoritatively * chore: update golden files GitOrigin-RevId: fccc2ac36a9fea10354b2be9ca20e44f39b8d8f0
| Commit: | 47c56d9 | |
|---|---|---|
| Author: | Peter Bertuglia | |
| Committer: | fa-assistant | |
feat(telemetry): add group field to NodeProcessed telemetry events (#8716) * feat(telemetry): add group field to NodeProcessed telemetry events Add `Group` (name + owner with email/slack) to the `NodeProcessed` proto and wire it through to the otel parquet output. Proto / generated code: - Add `Owner` and `Group` messages to the node proto - Add `group` field (tag 44) to `NodeProcessed` - Regenerate serde impls and binary descriptors Telemetry serialization: - Add `group: Option<Group>` to `ArrowAttributes` - Add nested Arrow schema for `Group` and `Owner` (including email as `List<LargeUtf8>` and slack as `LargeUtf8`) to `create_arrow_schema()` - Populate `group` in `NodeProcessed::to_arrow_record()` and round-trip it back in `from_arrow_record()` Schema / parser: - Add `group_ref: Option<Arc<DbtGroup>>` to `DbtTestAttr` - Override `get_node_processed_event()` for both `DbtModel` and `DbtTest` to populate `Group` from the attached `DbtGroup` (name, owner email from `StringOrArrayOfStrings`, slack from `__common_attr__.meta`) - Add `infer_and_apply_test_groups()` in `resolve_data_tests.rs` that copies each test's attached model's `group_ref` onto the test after resolution; call it from the resolver after `infer_and_apply_primary_keys` * test: add unit tests for group telemetry wiring Add tests for two functions introduced in the group-notification feature: - `infer_and_apply_test_groups` (4 tests): verifies group_ref is copied from a model to its attached tests, and that missing/dangling references are handled gracefully. - `group_from_dbt_group` (3 tests): verifies DbtGroup → telemetry Group proto conversion, including email as array vs. single string, slack from meta, and missing optional fields. Also fix exhaustive DbtTestAttr/DbtModelAttr struct literals in primary_key_inference.rs and dbt-lsp/column_handler.rs that were missing the new `group_ref` field. * updated registry * Pivot to only outputting group name in otel * feat(telemetry): emit Groups log event before node execution Promote the Groups proto message to a first-class telemetry log event and emit it in task_runner.rs before node execution, reporting all groups defined in a project (name + owner with email/slack). - Add groups to protogen.toml (static_full_name, pbjson_build, faker) and regenerate to produce serde impls and StaticName - Implement ProtoTelemetryEvent and ArrowSerializableTelemetryEvent for Groups (log event, EXPORT_ALL, JSON payload serialization, owner info redacted in clone_without_sensitive_data) - Register Groups in the public telemetry registry; move it off the opt-out list (Group and Owner remain as helper types) - Inline DbtGroup → proto Group conversion in task_runner.rs (avoids a dbt-telemetry → dbt-schemas circular dependency) - Remove stale test_group_from_dbt_group_* tests that referenced the removed group_from_dbt_group function * refactor(telemetry): replace Owner.slack with Group.meta in groups proto The slack field on Owner was populated from DbtGroup.__common_attr__.meta, which is a group-level attribute. Replace it with a map<string, string> meta field on Group to capture the full meta map and support future values beyond slack. * Add golden test for Groups event in otel * Update goldent test to include a test * update golden test to include a model and test without a group to ensure that they do not include the group attribute * Remove group_ref and just use group * no sensitive data * Use Cow for group in arrow * rename groups.proto to follow conventions * rename email to emails * refactor proto group creation to function * refactor: inline test group assignment into resolve_data_tests Instead of creating tests with `group: None` and running a separate `infer_and_apply_test_groups` pass afterward, pass the resolved models map into `resolve_data_tests` and set the group at construction time. Removes `infer_and_apply_test_groups` and its unit tests. * Clean up setting group on NodeProcessed * Update golden tests * move group.proto from dbt-telemetry to dbt-telemetry-private Group events should be in our private protos. Move group.proto to dbt-telemetry-private and update the package from v1.public.events.fusion.group to v1.events.fusion.group to match the private proto convention. - Proto file moved to crates/dbt-telemetry-private/include/... - Generated files (rs + serde) and schema impl moved to dbt-telemetry-private - Groups registered in PRIVATE_TELEMETRY_EVENT_REGISTRY (removed from public) - dbt-tasks updated to import group types from dbt-telemetry-private - Golden test updated to reflect new event_type name - protogen.toml updated to codegen under v1.events.fusion.group * Fix Groups import to be cleaner * Addressing PR feedback * Use CLI Hook to emit Groups event, instead of sending from task runner * Add did_resolve_project to CliExtensionHooks This function supports emitting the Groups event via the hooks framework. The existing hooks are emitted after execution, which is too late for the Groups event. GitOrigin-RevId: 0c077dfdeabc93c526cb714392e746ba4fb25fca
| Commit: | b5e2880 | |
|---|---|---|
| Author: | Ani Venkateshwaran | |
| Committer: | fa-assistant | |
feat(dbt-index): add anonymous usage telemetry via Vortex (#9220) * feat(dbt-index): add anonymous usage telemetry via Vortex Adds lightweight telemetry to dbt-index for tracking activation, engagement, and agent usage patterns (PRD-292). Events are sent to the Vortex analytics pipeline as protobuf over HTTP. Three events: - DbtIndexInvocation (start/end per command): tracks installs, WAP, time-to-value, and command performance - DbtIndexResourceCounts (per ingest): project size segmentation - DbtIndexToolCall (per MCP tool call in serve mode): agent adoption, tool reliability, and latency Privacy: only pseudonymous user_id (UUID cookie), MD5-hashed project_id, command names, and aggregate counts. No SQL, file paths, error messages, or tool arguments are collected. Consent: three-layer opt-out via --no-send-anonymous-usage-stats flag, DO_NOT_TRACK=1, or DBT_SEND_ANONYMOUS_USAGE_STATS=false. Implementation is self-contained (~400 lines in telemetry.rs) with no dependency on dbt-common, vortex-client, or proto-rust. Uses a background thread with mpsc channel for non-blocking sends and 200ms shutdown timeout. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(dbt-index): add dbt Cloud context to telemetry events Add account_id, account_host, cloud_project_id, account_identifier, project_name, adapter_type, and dbt_version fields to DbtIndexInvocation. Cloud context is resolved from ~/.dbt/dbt_cloud.yml using the active project (context.active-project), not project name matching. account_identifier is fetched from the dbt Cloud admin API and cached to ~/.dbt/.dbt_index_cloud_cache.json with a 24h TTL. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(dbt-index): add missing resource counts + emit on every invocation Add exposures, metrics, groups, and semantic_models to DbtIndexResourceCounts (proto tags 11-14). Non-ingest commands now also emit resource counts by querying the loaded DuckDB index, so every invocation has project size context for segmentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(dbt-index): simplify telemetry integration - Extract `with_context` helper to eliminate 10 repetitive match arms - Consolidate 5 SQL queries into single UNION ALL for resource counting - Try YAML parser first for dbt_cloud.yml (actual format) before JSON Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> GitOrigin-RevId: 5de1cef344282c2d1e58edf543519ca2736a3935
| Commit: | 30da64f | |
|---|---|---|
| Author: | Walther Lalk | |
| Committer: | fa-assistant | |
Enhance onboarding with static analysis mode and messaging updates (#8334) * Basic skeleton for baseline steps * Skeleton for new compile baseline step * Start building out baseline steps * Enhance onboarding experience by updating success messages and adding next steps for users. Improved messaging for baseline and strict compile success, including links to dbt VS Code extension features and resources. Refactored utility function usage for better consistency across steps. * Add static analysis mode updates for onboarding steps Implemented a new utility function to set the static analysis mode in dbt_project.yml based on the onboarding outcome. Updated the CompileBaselineSuccessStep and SuccessStep to call this function, ensuring the static analysis mode is set to "baseline" and "strict" respectively. This enhances the onboarding experience by automatically configuring project settings. * Refactor static analysis mode handling in onboarding steps Updated the onboarding steps to utilize a new utility function for setting the static analysis mode in dbt_project.yml. The CompileNoSaFailStep and CompileStrictFailStep now call this function to configure the static analysis mode based on the step outcome. Additionally, improved the success message in the SuccessStep to link to the correct documentation for strict mode configuration. * Add changelog entry * Refactor static analysis handling in dbt_project.yml Updated the utility function to ensure `+static_analysis: <kind>` is set for all supported node types in dbt_project.yml, including models, seeds, snapshots, and more. This change enhances the onboarding process by maintaining existing values while ensuring the correct structure is present for each node type. Improved code readability and organization by introducing a constant for node types and refactoring the logic for inserting static analysis settings. * Enhance success message display in CompileBaselineStep Updated the CompileBaselineStep to conditionally display success messages and additional guidance when the project compiles successfully on Fusion. This change improves user experience by providing relevant information about optional next steps in the onboarding process. * Remove unused CompileBaselineFail * Refactor node index handling in ensure_static_analysis_for_node_type Updated the logic for determining the node index to simplify the handling of empty content. The function now conditionally adds a new line only when the content is not empty, improving code clarity and maintaining the intended structure for node keys. * Run cargo fmt * Fix clippy failures * Adds test file * Update proto * Add tada * Refactor onboarding screen enum values in proto and generated files Updated the OnboardingScreen enum to rename CompileStrict and CompileBaseline to Compile and CompileSaBaseline, respectively. This change improves clarity and consistency across the proto and generated Rust files. Additionally, updated corresponding serialization and deserialization logic to reflect these changes. * Refactor onboarding steps and telemetry for static analysis modes Renamed and reorganized onboarding steps to support new static analysis modes: baseline, strict, and off. Updated telemetry tracking functions to reflect these changes, ensuring accurate tracking of user actions during the onboarding process. Introduced new steps for handling compilation in different modes and updated screen navigation accordingly. This refactor enhances clarity and consistency in the onboarding flow. * Refactor dbt_project utilities to use dbt_yaml for parsing Updated the dbt_project.rs file to utilize the dbt_yaml library for parsing dbt_project.yml, enhancing project name extraction and structure validation. This change improves the reliability of reading the YAML file and preserves formatting and comments during writes. Additionally, refactored related functions to streamline the static analysis mode handling and added tests to ensure comment preservation in various scenarios. * Refactor onboarding steps to utilize shared next steps utility Replaced inline next steps content in CompileSaBaselineSuccessStep, CompileSaStrictFailStep, and SuccessStep with calls to new utility functions in next_steps.rs. This change centralizes the next steps content, improving maintainability and consistency across onboarding steps. Additionally, added next_steps module to encapsulate related functionality. * Refactor onboarding steps to utilize compile_utils for static analysis mode handling Replaced direct calls to dbt_project for setting static analysis modes in CompileSaBaselineSuccessStep, CompileSaOffFailStep, CompileSaStrictFailStep, and SuccessStep with a new compile_utils module. This change centralizes the logic for applying static analysis modes and writing next steps content, enhancing maintainability and consistency across onboarding steps. * Update success step message to clarify project config updates for strict mode Modified the success step message to indicate that project configs will be updated automatically to enable Fusion to run with strict mode, while also providing a link for manual updates. This change enhances user understanding of the onboarding process. * Better link * Update proto GitOrigin-RevId: b497d0a36e1befc55ff035e8fc43a2e2039b1168
| Commit: | af0721e | |
|---|---|---|
| Author: | David Stancu | |
| Committer: | fa-assistant | |
[DX] Log --store-failures query to console if eligible (#8429) * [1/2]: pass node to tracing::formatters::format_test_failure, emit query. need store_test_failures meta. * [2/2]: expose store_failures in proto to tell consumer they can look up fqn in node processed; logger emits if store_failures indicated * style / only set this if we have something to pass along * changie * [update snapshot]: test_regression_tests_internal_analytics_build_with_recording * add dbt-cli replay test w/store-failures golden output GitOrigin-RevId: 87996f2644630895ae27fcf5cc2700bc418c88c2
| Commit: | 5eb6f3e | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate compiled code event to tracing (#7962) * update agents telemetry instructions * migrate rendered progress to CompiledCode telemetry * refine compiled code compatibility and layer behavior * align compiled code json compat test with shared helper pattern * refine compiled code formatting and json compat command wiring * use known arrow fields for compiled code events * simplify json compat tests * goldies * changelog GitOrigin-RevId: c3f3367a326b6f584e6b9a72a9ee2fd87704e7de
| Commit: | e2f4e5b | |
|---|---|---|
| Author: | Kevin Zimmerman | |
| Committer: | fa-assistant | |
Add tracing spans for on-start-run/on-end-run (#7782) * feat: Instrument operations on-run-start and on-run-end into tracing - Add tracing spans for on-run-start and on-run-end operations in task runner - Define proto schema for hook telemetry events - Add hook formatter for TUI and JSON compat layers - Update phase execution tracking with hook outcome status - Update golden test files with new telemetry output * use .instrument * use the unique_id as hook qualifier * use ExecutionPhase enum * change hook success to Completed * make HookProcessJsonPayload * use record_span_status-from_attrs * impl with_context * add ProgressId::Hook * add json_compat test * update golden files * reset golden files * update some goldens * update golden files * telemetry: align hook/phase proto docs and add hook index * telemetry: add HookProcessed::start_on_run helper * tracing: include hook index in json compat payloads * tracing: normalize hook formatting and phase progress context * telemetry: align hook span naming context and payload enums * tracing: split outcome metric keys for node and hook spans * chore: apply fmt fixes and update snowflake hook golden * restore spuriously changed proo descriptor * clean up after codex * fix name/package name confusion. re-hide start lines * glodie's 1 * remote goldie's part 1 * goldie's part 2 --------- Co-authored-by: Mike Perlov <5206955+mishamsk@users.noreply.github.com> GitOrigin-RevId: eb5e444d3ef72ec537d618b2184c6f939ed080f1
| Commit: | 9112f59 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Split old & new protogen and migrate new into telemetry crates (#7768) * Move fusion protogen outputs to telemetry crates * Generate fusion protos in telemetry crates * Remove private wrapper now that telemetry owns protos * Move StaticName into dbt-telemetry * Reuse telemetry traits in private crate * Remove legacy proto test utils * Relocate fusion protos into telemetry crates * Remove proto-rust macro dependency * Remove telemetry v1 re-exports * Scope test attributes to telemetry protos * Document sync_protos steps * Limit telemetry protos to telemetry include paths * Add onboarding screen enum for telemetry * Adjust telemetry registry filter * Rename telemetry proto module * split old & new proto code generation * fix clippy and mark generated files with git attrs * Fix private telemetry proto search paths to include public protos Allow private telemetry protos to import public protos, matching the behavior of the existing proto-rust-private codegen configuration. * Remove unused CloudInvocation::new method from proto-rust-private The CloudInvocation struct is now constructed using struct literal syntax throughout the codebase, making this helper method unused. * changelog * Add #[inline] to blanket impl methods to fix debug build perf regression After moving protobuf-generated event structs from proto-rust to dbt-telemetry, generic code is now instantiated in the same crate as the blanket impl. This causes cross-crate function calls in debug builds (opt-level=0) where inlining is disabled. Adding #[inline] makes the function bodies available for call-site instantiation, avoiding the 3-7x performance overhead from repeated cross-crate calls on the telemetry hot path. * fix after rebase GitOrigin-RevId: 151f1ae0f933515711c19199e6a972035d31d984
| Commit: | 26f8b01 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate parsing messages to tracing & introduce a dedicated event for it (#7694) * wip * update goldies * clippy * clippy 2 GitOrigin-RevId: e0e881bc7cd4fe2f3f5e00edf0889a7aee77ff59
| Commit: | 70d53a7 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Move markdown downgrade to tracing middleware (#7660) * Add structured log location fields * Move markdown downgrade to middleware * Expose optional line and column accessors * Add changelog entries * Apply check --fix formatting * Add docs md warning coverage * Downgrade docs md warnings in LSP * Update docs md warning parse test * Expand docs md warning fixtures * Restore docs md warning template files * spurious change * Apply check --fix formatting GitOrigin-RevId: f09f8094b67ed63c47af7d32d2338c51c2e95a82
| Commit: | 7b9e015 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Fix missing go package on generic event proto (#7612) * fix missing go package on generic event proto * update descriptors GitOrigin-RevId: 491cac34edc724e85061806795a5aade724bf2ef
| Commit: | 2c850c0 | |
|---|---|---|
| Author: | Nicholas Othieno | |
| Committer: | fa-assistant | |
State modified telemetry (#7588) * Structure the previous state content check to detect comparison failures for logging * Add debug level logging for state:modified differences * Update changelog * Fix clippy errors * Convert logging macro to a function * Create a state:modified telemetry event * Addressing reviewer comments - Converting node_type to node_type_or_category. - Inlining the emitting function for better line number tracking. GitOrigin-RevId: 87f587ec1e9f41660a561f5421ba7e197604f1dd
| Commit: | 1bc4686 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Instrument/migrate source freshness to tracing (#7567) * wip wip wip wip properly handle source_name * record freshness span errors on early exit handle early returns in freshness update freshness function name * clippy * update freshness progress rendering * do not use new formatting for sao freshness * changelog GitOrigin-RevId: e163e8d1425c164df1636b0b56810b2d9a6faf9c
| Commit: | 593f4c4 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate remaining progress bar macros to tracing (#7275) * migrate pre_compile functions from progress macro * move "downloading relations" to debug level use "Downloading schemas" for progress spinner add severitynumber vs tracing level/filter ordering handle verbosity levels in tui_layer properly * use debug level for lineage NodeEvaluated to match other NodeEvaluated events * update goldie's * migrate loader with_progress to reacing remove with_progress macro * update goldie's GitOrigin-RevId: 290a159fc47815ffd641dfac957097a0fa783986
| Commit: | ae6300c | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate hidden commands to tracing (#7267) * make format sync, no value in async * remove outdated constants usage in progress bars * new progress events & instrument formatter fix * changelog * migrate linter to tracing * migrate sampler to tracing * migrate clean command to tracing and clean up constants * remove progress bar from lineage, too fast to see anyway GitOrigin-RevId: 1ff6adf20864ccf5ca2b2b817755a9b0b3821e46
| Commit: | 45e6d7b | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate show_result_with_title macro to tracing (#7229) * migrate show_result_with_title macro to tracing re-gen protogen * changelog GitOrigin-RevId: d18176b200bad0e6300f0a29c535bf8ea9f7ec1e
| Commit: | 21a95d3 | |
|---|---|---|
| Author: | Gerda Shank | |
| Committer: | fa-assistant | |
Improve source freshness and source_status messages (#7155) * Some source_status selector messages * Fix warning message for selection criteria when no depth is specified for '+' * changie * Issue sources.json write message * Update some tests * Update source_freshness test and loaded_at_query test GitOrigin-RevId: c6aeade0d9377b631ee4144fa45e2fb64162b05f
| Commit: | f25d07e | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate package install to tracing (#6948) * WIP: rebase changes make package name optional fix tui for package installs instrument other package types use singular in packages installed when only 1 package has been installed improve progress bar for deps improve code in install+packages * trim commit hash newline * add package add event & console output clippy clippy * changelog * goldie's local * remote goldie's remaining remote goldie's goldie's goldie's * fix add package parsing & ensure no passwords leak use platform independent test clippy GitOrigin-RevId: 4f657dda5e5ca1fbad6d9f52f75cc9e4168d0fc7
| Commit: | a6f052a | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Add rows_affected to node evaluated & node processed (#7129) * add rows_affected to node evaluated & node processed * changelog GitOrigin-RevId: 3cc8be9a9992ee18f076a749cf72a93f297fe22a
| Commit: | a9b5aa0 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Add run summary metrics to invocation event (#6962) * add run summary metrics to invocation span * changelog * clippy GitOrigin-RevId: a031f0610bf42410085a802b0027f104a3e3a4b0
| Commit: | f14798f | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate debug command (#6964) * prioritize status reporter over tracing events in emission api's * migrate debug progress to tracing * changelog * restore progress spinner for debug GitOrigin-RevId: 5edf040363bad5b7825ded7a680e4dcaebb30f79
| Commit: | ebe1e58 | |
|---|---|---|
| Author: | Jason Lin | |
| Committer: | fa-assistant | |
Add support for --parent-span-id (#6840) * add support for --parent-span-id * No breaking proto changes * plumb parent id through * fix parent span id invariant checks add tests * changelog * clippy --------- Co-authored-by: Mike Perlov <5206955+mishamsk@users.noreply.github.com> GitOrigin-RevId: 95db0d69bbf30a46597fddc3dedbd740d01fa7d4
| Commit: | 1a714ec | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate node completed to tracing (#6780) * wip * span manager and stuff * more stuff * wip * add more fields to node events * remove unused humantime from dbt-common * re-create node formatters in tracing * tui rendering for node processed * add sao_flag and detailed sao data * ues span key instead of attributes in span manager * wip * wip * add node processed duration and use for tui formatting * add new data provider apis * add A001 compat event * remove log version and versio from irrelevat compat logs * json comapt tests * fix forgotten filters in evets add test group mior data provider stuff * split each compat message into separate method * improve test helpers for json compat * add MainReportArgs compat log * add ArtifactWritten compat log * split tui methods * node evaluated formatters * add test group handling ad formatting * fix span manager more progress split closures into functions remove excessive bounds trying to fix deadlock fix deadlock add spa manager docs * wip fix node formatting * improve formatting, fix tailing test skips * many fixes to formatting * fix phatom seed from hydration phase * remove some show_completed callsites & adjust compat log goldie tests * clippy, and extract shared ts formatters * add missing events & strucutre file log * add missing formatters to file & tui layers * add phase couters * unit test for compat node events & bug fixes * fix test pass outcome * add unique_id's to regular logs when available * fix handling of nodes with not all phases and formatting fix padding * add no-op to summary line * chagelog * fix packageupdate parquet serializatio * show_completed no more * do not count source in summary node counts ever * set up tracing in lsp tests, necessary for span manager * avoid calculating groupped flag on each call * fix test defined at location to be relative to in_dir * simplify span manager * simplify task spa screation further * fix spurious MarkSkippedChild add in_selection to NodeProcessed for filtering * remove now unnecessary Reused event * do not show progress for non-selected nodes * handle new timestamp normalisation in tests * clippy * fix test using outdated json logs * goldie's goldie GitOrigin-RevId: 0a6b95d248d57a536f9a3b61f6593476e9f46aa9
| Commit: | cf91b88 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate show command to tracing (#6740) * stop passing around immutable db refs * make run_adhoc & do_query side-effect free, almost; pull table printing to callsites * restore naming for repl based queries * migrate show node to tracing event * chagelog * remove `show_result!` macro by migrating remaining usage sites * clippy * fixes * restore support for zero row show results from remote GitOrigin-RevId: 6840705d1559b22f8edfd4590c2ae277231c7429
| Commit: | 5c67ad1 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate list command to tracing (#6696) * add show-dirty to claude.md * migrate listp output to structured event * update goldie's * use dedicated enum for cli and proto * small bugs * changelog GitOrigin-RevId: f97cca952f994544acc820f7f70262e5be72567a
| Commit: | 297fb69 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate jinja log and print to tracing (#6550) * migrate user logs to tracing add proper support of debug user logs add new user log otel event fix otel file verbosity level (use file log verbosity) * update otel goldie's * changelog GitOrigin-RevId: 27a2c4beb3f0cf52b35df8502c95bfd812642f2a
| Commit: | 319eb0a | |
|---|---|---|
| Author: | Walther Lalk | |
| Committer: | fa-assistant | |
Enable agentic autofix telemetry (#6372) * Enable agentic autofix telemetry * Sync proto buffers * Missed some commented out code * Update proto bin files * Update proto GitOrigin-RevId: 9168b7c785690011cf8ecd2472a6e7e248ae6fdf
| Commit: | 7382513 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Migrate errors & warnings to tracing (#6145) * wip wip * allow passing event structs into tracing without into call * new emit event functions allow empty message remove emit event macros migrate to functions from macros for tracing api's * wip wip wip wip wip wip wip wip wip wip wip fix tests fix error/warn formatting clippy * unify read-only and mutable data provider allow safe usage of per-invocation storage by consumers make data layer immune to possible corruption of stored data by middlewares * re-enable test summaries on tui * add package_name field to log message event * move legacy status reporter code into functions from macro * remove all legacy warn and error macros nit * clippy * fix error code * add new middleware to layers * unify unit test fail table between local and remote * write unit test summary to dbt.log * semi fix for dbt.log interleaving * fix invocation metrics improve tests for metrics & use stricter ordering of atomics update telemetry test goldie * remove show_progress_exit add debug assertions for metrics move invocation total metrics update to middleware * fix double reporting of local unit test exec errors * fix uninstrumented tasks causing missing autofix counter * instrument xdbc * fix lp cli root span * remove redundnat onboadring telemetry function * more idiomatic rust please! * avoid unnecessary &mut refs to data provider in invocation formatter * clippy * goldie's GitOrigin-RevId: 1ad243ef09d6bd917b6023a1f289a2ce202d1942
| Commit: | 2a52055 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Fix fusion missing output counts in summary and metrics infra upgrade (#5977) * remove old unit test only summary from task runner * serialize timestamps in compat logs in expected format * wip scc api upgrade data provider tests pre-allocate metric storage to avoid panics due to non-atomic checks remove non-atomic read + init from data provider remove start very wip capture errors update stuff on invocation span wip wip wip clippy refactor visitor to capture more skip detailes wip finish nit clippy * changelog * use legacy counters for errors/warnings/autofixes until we fully migrate to the new ones * fix terminal width * enable summary for compile * do not show 0 count success in summary * nits use u for micros clippy * fix success counter gate * Revert "remove old unit test only summary from task runner" This reverts commit edefb2c1f5c4cd28150b0cda9fd810d8e24ffb09. * fix after udf rebase, use processed in summary * goldie's * goldie's * goldies GitOrigin-RevId: ef5da15c47f164a175707b559f389bde4450186d
| Commit: | d9f47ac | |
|---|---|---|
| Author: | Ani Venkateshwaran | |
| Committer: | fa-assistant | |
Add all changes from dbt-compare branch (#6192) This commit contains all the changes from the dbt-compare branch, properly applied using the git reset technique: - Created new branch from main - Reset hard to dbt-compare to get all changes - Reset soft to main to stage all differences as additions This creates a clean merge-ready branch with all dbt-compare functionality. GitOrigin-RevId: f0fca1cf2d8b65d38e41b9b40b89ddb7ea693fb6
| Commit: | d6fd34d | |
|---|---|---|
| Author: | Gerda Shank | |
| Committer: | fa-assistant | |
Implement UDF nodes (#5761) * Implement DbtFunction resource type * update json_schema GitOrigin-RevId: 5c21f1baeee77001f1b8f94a361f5914229fec28
| Commit: | 4d8f7b7 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Add Query Id telemetry event and migrate query log to use tracing (#5950) * rename export flags to output_flags * new output flags * rename display_name, fix export flag rename after rebase * more rebase fixes add efficient newline writer methods and is_terminal to sharedwritier trate * pretty writer layer custom filtering wrapper for tracing fixes in telemetry tests after method name change * add query proto and more arrow tests * wip new query log * fixes * make query span debug level * actually write query log * allow missing nullable columns in telemetry arrow * changelog * improve adapter type getting. revert to storing as string in event proto GitOrigin-RevId: af94b8caa0fcecac2fb9082e273b7b7fc920d6cb
| Commit: | bfa1561 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Resurrect json log tests (#5881) * sync protos * wip * it is alive! * fix clippy fix deps tests update goldies * remove anonymous stats flag from test args, move to project yml * forgot flags * debuggind ci * more ci debugging * random try * ok. let's get serious and catch panic! * use stable schema in tests * Revert "ok. let's get serious and catch panic!" This reverts commit 3c17d29e81a37f3e225b347c61f73a427a532bf5. * Revert "random try" This reverts commit 0049e31e0a8649ab8ebaad407b63d0c804ed55d6. * Revert "more ci debugging" This reverts commit 7973d14d2c3fd94fca612156e8c64a686dfbbcdf. * Revert "debuggind ci" This reverts commit 7b0adf43f2837388da208e75ca96766014275b78. GitOrigin-RevId: bce861a857e5254040107f08b5e882ffe209de2a
| Commit: | 6d28aa4 | |
|---|---|---|
| Author: | Walther Lalk | |
| Committer: | fa-assistant | |
[TELEMETRY] Add "user_id" to onboarding telemetry (#5641) * Add user_id to onboarding telemetry/vortex events * Sync proto * Use correct constant GitOrigin-RevId: 02265dea42f28bfa3c9ca530167894c9e5669b15
| Commit: | 6ed0485 | |
|---|---|---|
| Author: | Mike Perlov | |
| Committer: | fa-assistant | |
Telemetry refactor to support private events & Proto defined event data structs (#5715) * remove unusued pbjson serde gen. add skip_serialize_none pull protogen.toml path out of implementation add glob support to protogen better messages move type attributes to protogen config remove deserialize derive from vortex events add message & enum attrs support to protogen * add new tracing config creation api not relying on io_args telemetry context avoid rare flaky failures in tracing tests update metadata crates fix json payload inconsistency, simplify phase/node span_name enusre stable sort in protogen structure tracing tests and add jsonl filtering tests fix metadata fix copybara structure module for manual impl for generated proto files add otlp testing infra hide arrow schema from public api's make a private api to deserialize all event types from arrow including private * switch to macro derive for serde stuff in proto add new method derive for protos wip NodeEvaluated wip update goldie wip * proper skipped reporting * fix evaluation detail serialization and update metadata sample * add COPY fs/sa/crates/proto-rust-macros fs/sa/crates/proto-rust-macros for metadata GitOrigin-RevId: 439a1d347344453817dd736ceaa0346931a7384f
| Commit: | 0dc9874 | |
|---|---|---|
| Author: | Felipe Oliveira Carvalho | |
| Committer: | fa-assistant | |
Generate code for mantle_query.proto (#5288) * Sync the protos with the latest version * Generate code for mantle_query.proto * proto-rust-private: Wire the modules to make mantle_query.rs buildable * Remove .public. files from the private prot crate * protogen: Remove all the .public. files from the private crate so we don't accidentally rely on them GitOrigin-RevId: 7d2278512005bd2a0ba298a82092ab064ba5feb4
| Commit: | 2f6048b | |
|---|---|---|
| Author: | Felipe Oliveira Carvalho | |
| Committer: | fa-assistant | |
xtask: Generate code for selected .proto files from proto-rust-private (#5252) * proto-rust-private: Remove files that don't belong in private/ * Add scripts/sync_protos.sh * proto-rust: Latest changes to {vortex_options,fusion,vortex}.proto * proto-rust-private: Sync all the files * proto-rust: Add all the new protos * Correct the protoc-generated paths in .gitattributes * Add protogen.toml file to limit the amount of code generated by * proto-rust: Remove v1.events.fusion.rs (it's v1.public.events.fusion.rs now) * proto-rust-private: Add a lib.rs and include it in Cargo.toml * proto-rust: Delete gen/mod.rs that doesn't get generated anymore * dbt-common: Define the dyn-trait DescreteEventEmitter * dbt-cli: Inject the DiscreteEventEmitter from main() * xtask: protogen the private .proto files as well * xtask: Implement the protogen.toml handling for real * REMOVE all the code that we don't need because of protogen.toml GitOrigin-RevId: b9c9a85f740db526c74630ec971f8aeb1de584ab
| Commit: | 3c8fe82 | |
|---|---|---|
| Author: | Walther Lalk | |
| Committer: | fa-assistant | |
[TELEMETRY] Add telemetry events to track the CLI onboarding flow (#5186) * Add telemetry support to onboarding process - Introduced invocation ID to OnboardingConfig for tracking events. - Implemented telemetry functions to track onboarding steps and user actions. - Updated onboarding context to include project ID, user ID, and invocation ID. - Enhanced onboarding flow with telemetry tracking for various steps including welcome, parse, compile, and success. - Removed deprecated onboarding function for cleaner API. * Refactor telemetry imports and enhance onboarding step tracking - Reorganized telemetry imports for consistency across files. - Improved readability of telemetry tracking function calls in onboarding steps. - Ensured all necessary telemetry components are included in relevant modules. * Enhance cloud invocation event structure with default values - Added default values to the cloud invocation event message structure for improved consistency and reliability. - Ensured that the enrichment field remains optional while maintaining the integrity of the message format. * Include cargo.toml changes that I didn't commit earlier * Small fixes * Styling and remove change that shouldn't be there * Sync binders and proto update * Remove unused values GitOrigin-RevId: da94cbb8d06bc19896dfab792be80ca2f1aa4dd8
| Commit: | fbcfb83 | |
|---|---|---|
| Author: | Felipe Oliveira Carvalho | |
| Committer: | fa-assistant | |
Add resource_type to RunModel event GitOrigin-RevId: 610fc34f83b6d1f391406c4290032383deb3bca6
| Commit: | 340053c | |
|---|---|---|
| Author: | Chenyu Li | |
| Committer: | fa-assistant | |
Contracted log output(Proto) and test for IDE (#3940) GitOrigin-RevId: 058db0fa09f7f9dbda65339277e50a3eb9240635
| Commit: | 8290fe0 | |
|---|---|---|
| Author: | fa-assistant | |
| Committer: | fa-assistant | |
Project import generated by Copybara. GitOrigin-RevId: ad7e3349e907abb85fe1d035dc9503e7f2c06ff3
| Commit: | 999b209 | |
|---|---|---|
| Author: | fa-assistant | |
| Committer: | fa-assistant | |
Project import generated by Copybara. GitOrigin-RevId: 6ddefbbaef81945641d51d072a92873c0b099253
| Commit: | 14ac39b | |
|---|---|---|
| Author: | fa-assistant | |
| Committer: | fa-assistant | |
Project import generated by Copybara. GitOrigin-RevId: aab6d7ae0f773afb550d2405a81497a91bcae75a
| Commit: | c643a1d | |
|---|---|---|
| Author: | Connor McArthur | |
| Committer: | GitHub | |
move protos into external dependency (#11608)
This commit does not contain any .proto files.
| Commit: | 0f8f426 | |
|---|---|---|
| Author: | Kshitij Aranke | |
| Committer: | GitHub | |
Fix #11506: Add freshness config to sources (#11628) * Fix #11506: Add freshness config to exposures * Add freshness to some config * Update Fixes-20250515-145857.yaml * Add PropertyMovedToConfigDeprecation * make core_proto_types * Add log check * Use +freshness instead of freshness * Fix test_events.py
| Commit: | 6f6625f | |
|---|---|---|
| Author: | Peter Allen Webb | |
Refinements and test
| Commit: | bd2d518 | |
|---|---|---|
| Author: | Peter Allen Webb | |
First draft of SourceOverrideDeprecation warning.
| Commit: | 0e1d9fb | |
|---|---|---|
| Author: | Michelle Ark | |
deprecation warning for --models, --model, -m
| Commit: | e5dd4c5 | |
|---|---|---|
| Author: | Michelle Ark | |
| Committer: | GitHub | |
deprecate --output/-o usage in dbt source freshness (#11621)
| Commit: | df16d93 | |
|---|---|---|
| Author: | Michelle Ark | |
deprecate --output/-o usage in dbt source freshness
| Commit: | 76589ed | |
|---|---|---|
| Author: | Connor McArthur | |
| Committer: | Connor McArthur | |
move protos into external dependency
This commit does not contain any .proto files.
| Commit: | e920053 | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | GitHub | |
Initial slate of deprecations for 1.10 (#11544) * Begin basic jsonschema validations of dbt_project.yml (#11505) * Add jsonschema for validation project file * Add utility for helping to load jsonschema resources Currently things are a bit hard coded. We should probably alter this to be a bit more flexible. * Begin validating the the `dbt_project.yml` via jsonschema * Begin emitting deprecation warnings for generic jsonschema violations in dbt_project.yml * Move from `DbtInternalError` to `DbtRuntimeError` to avoid circular imports * Add tests for basic jsonschema validation of `dbt_project.yml` * Add changie doc * Add seralization test for new deprecation events * Alter the project jsonschema to not require things that are optional * Add datafiles to package egg * Update inclusion of project jsonschema in setup.py to get files correctly Using the glob spec returns a list of found files. Our previous spec was raising the error `error: can't copy 'dbt/resources/input_schemas/project/*.json': doesn't exist or not a regular file` * Try another approach of adding jsonschema to egg * Add input_schemas dir to MANIFEST.in spec * Drop jsonschema inclusion spec from setup.py * Begin using importlib.resources.files for loading project jsonschema This doesn't currently work with editable installs :'( * Use relative paths for loading jsonchemas instead of importlib Using "importlib" is the blessed way to do this sort of thing. However, that is failing for us on editable installs. This commit switches us to using relative paths. Technically doing this has edge cases, however this is also what we do for the `start_project` used in `dbt init`. So we're going to do the same, for now. We should revisit this soon. * Drop requirment of `__additional_properties__` specified by project jsonschema * Drop requirement for `pre-hook` and `post-hook` specified by project jsonschema * Reset `active_deprecations` global at the end of tests using `project` fixture * Begin validation the jsonschema of YAML resource files (#11516) * Add jsonschema for resources * Begin jsonschema validating YAML resource files in dbt projects * Drop `tests` and `data_tests` as required properties of `Columns` and `Models` for resources jsonschema * Drop `__additional_properties__` as required for `_Metrics` in resources jsonschema * Drop `post_hook` and `pre_hook` requirement for `__SnapshotsConfig` in resources jsonschema * Update `_error_path_to_string` to handle empty paths * Create + use custom Draft7Validator to ignore datetime and date classes * Break `TestRetry` functional test class into multiple test classes There was some overflow global state from one test to another which was causing some of the tests to break. * Refactor duplicate instances of `jsonschema_validate` to single definition * Begin testing jsonschema validation of resource YAMLs * Add changie doc * Add Deprecation Warnings for Unexpected Jinja Blocks (#11514) * Add deprecation warnings on unexpected jinja blocks. * Add changelog entry. * Add test event. * Regen proto types. * Fix event test. * Add `UnexpectedJinjaBlockDeprecationSummary` and add file context to `UnexpectedJinjaBlockDeprecation` (#11517) * Add summary event for UnexpectedJinjaBlockDeprecation * Begin including file information in UnexpectedJinjaBlockDeprecation event * Add UnexpectedJinjaBlockDeprecationSummary to test_events.py * Deprecate Custom Top-Level Keys (#11518) * Add specific deprecation for custom top level keys. * Add changelog entry * Add test events * Add Check for Duplicate YAML Keys (#11510) * Add functionality to check for duplicate yaml keys, working around PyYAML limitation. * Fix up some ancient typing issues. * Ignore typing issue, for now. * Correct unit tests of `checked_load` * Add event and deprecation types for duplicate yaml keys * Begin validating `dbt_project.yml` for duplicate key violations * Begin checking for duplicate key violations in schema files * Add test to check duplicate keys are checked in schema files * Refactor checked_yaml failure handling to reduce duplicate code * Move `checked_load` utilities to separate file to avoid circular imports * Handle yaml `start_mark` correctly for top level key errors * Update changelog * Fix test. --------- Co-authored-by: Quigley Malcolm <quigley.malcolm@dbtlabs.com> * Fix issue with YAML anchors in new CheckedLoader class. * Deprecate having custom keys in config blocks (#11522) * Add deprecation event for custom keys found in configs * Begin checking schema files for custom keys found in configs * Test new CustomConfigInConfigDeprecation event * Add changie doc * Add custom config key deprecation events to event serialization test * Provide message to ValidationError in `SelectorConfig.from_path` This typing error is unrelated to the changes in this PR. However, it was failing CI, so I figured it'd be simple to just fix it. * Add some extra guards around the ValidationFailure `path` and `instance` * [TIDY-FRIST] Use new `deprecation_tag` (#11524) * Tidy First: Update deprecation events to use the new `deprecation_tag` Note did this for a majority of deprecations, but not _all_ deprecations. That is because not all deprecations were following the pattern. As some people do string parsing of our logs with regex, altering the deprecations that weren't doing what `deprecation_tag` does to use `deprecation_tag` would be a _breaking change_ for those events, thus we did not alter those events * Bump minimum dbt-common to `1.22.0` * Fix tests * Begin emitting deprecation events for custom properties found in objects (#11526) * Fix CustomKeyInConfigDeprecationSummary * Add deprecation type for custom properties in YAML objects * Begin emitting deprecation events for custom properties found in objects * Add changie doc * Add `loaded_at_query` property to `_Sources` definition in jsonschema This was breaking the test tests/unit/parser/test_parser.py::SchemaParserSourceTest::test_parse_source_custom_freshness_at_source * Move validating jsonschema of schema files earlier in the process Previously we were validating the jsonschema of schema files in `SchemaParser.parse_file`. However, the file is originally loaded in `yaml_from_file` (which happens before `SchemaParser.parse_file`), and `yaml_from_file` _modifies_ the loaded dictionary to add some additional properties. These additional properties violate the jsonschema unfortunately, and thus we needed to start validating the schema against the jsonschema before any such modifications. * Skip parser tests for `model.freshness` Model freshness never got fully implemented, won't be implemented nor documented for 1.10. As such we're gonna consider the `model.freshness` property an "unknown additional property". This is actually good as some people have "accidentally" defined "freshness" on their models (likely due to copy/paste of a source), and that property isn't doing anything. * One single DeprecationsSummary event to rule them all (#11540) * Begin emitting singular deprecations summary, instead of summary per deprecation type * Remove concept of deprecation specific summary events in deprecations module * Drop deprecation summary events that have been added to `feature-branch--11335-deprecations` but not `main` These are save to drop with no notice because they only ever existed on a feature branch, never main. * Correct code numbers for new events on feature-branch that haven't made it to main yet * Kill `PackageRedirectDeprecationSummary` event, and retire its event code * add changie doc * Update jsonschemas to versions 0.0.110 (#11541) * Update jsonschems to 0.0.110 * Don't allow additional properties in configs * Don't allow additional top level properties on objects * Allow for 'loaded_at_query' on Sources and Tables * Don't allow additional top level properties in schema files --------- Co-authored-by: Peter Webb <peter.webb@dbtlabs.com>
| Commit: | 5c70dee | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | Quigley Malcolm | |
Begin emitting deprecation events for custom properties found in objects (#11526) * Fix CustomKeyInConfigDeprecationSummary * Add deprecation type for custom properties in YAML objects * Begin emitting deprecation events for custom properties found in objects * Add changie doc * Add `loaded_at_query` property to `_Sources` definition in jsonschema This was breaking the test tests/unit/parser/test_parser.py::SchemaParserSourceTest::test_parse_source_custom_freshness_at_source * Move validating jsonschema of schema files earlier in the process Previously we were validating the jsonschema of schema files in `SchemaParser.parse_file`. However, the file is originally loaded in `yaml_from_file` (which happens before `SchemaParser.parse_file`), and `yaml_from_file` _modifies_ the loaded dictionary to add some additional properties. These additional properties violate the jsonschema unfortunately, and thus we needed to start validating the schema against the jsonschema before any such modifications. * Skip parser tests for `model.freshness` Model freshness never got fully implemented, won't be implemented nor documented for 1.10. As such we're gonna consider the `model.freshness` property an "unknown additional property". This is actually good as some people have "accidentally" defined "freshness" on their models (likely due to copy/paste of a source), and that property isn't doing anything.
| Commit: | f09a96f | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | Quigley Malcolm | |
Deprecate having custom keys in config blocks (#11522) * Add deprecation event for custom keys found in configs * Begin checking schema files for custom keys found in configs * Test new CustomConfigInConfigDeprecation event * Add changie doc * Add custom config key deprecation events to event serialization test * Provide message to ValidationError in `SelectorConfig.from_path` This typing error is unrelated to the changes in this PR. However, it was failing CI, so I figured it'd be simple to just fix it. * Add some extra guards around the ValidationFailure `path` and `instance`
| Commit: | d3f01e0 | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | GitHub | |
One single DeprecationsSummary event to rule them all (#11540) * Begin emitting singular deprecations summary, instead of summary per deprecation type * Remove concept of deprecation specific summary events in deprecations module * Drop deprecation summary events that have been added to `feature-branch--11335-deprecations` but not `main` These are save to drop with no notice because they only ever existed on a feature branch, never main. * Correct code numbers for new events on feature-branch that haven't made it to main yet * Kill `PackageRedirectDeprecationSummary` event, and retire its event code * add changie doc
| Commit: | ae6678e | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | Quigley Malcolm | |
Kill `PackageRedirectDeprecationSummary` event, and retire its event code
| Commit: | b042c25 | |
|---|---|---|
| Author: | Quigley Malcolm | |
Correct code numbers for new events on feature-branch that haven't made it to main yet
| Commit: | 538bfeb | |
|---|---|---|
| Author: | Quigley Malcolm | |
Drop deprecation summary events that have been added to `feature-branch--11335-deprecations` but not `main` These are save to drop with no notice because they only ever existed on a feature branch, never main.
| Commit: | 184fba9 | |
|---|---|---|
| Author: | Quigley Malcolm | |
Begin emitting singular deprecations summary, instead of summary per deprecation type
| Commit: | 5de6c8f | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | GitHub | |
Begin emitting deprecation events for custom properties found in objects (#11526) * Fix CustomKeyInConfigDeprecationSummary * Add deprecation type for custom properties in YAML objects * Begin emitting deprecation events for custom properties found in objects * Add changie doc * Add `loaded_at_query` property to `_Sources` definition in jsonschema This was breaking the test tests/unit/parser/test_parser.py::SchemaParserSourceTest::test_parse_source_custom_freshness_at_source * Move validating jsonschema of schema files earlier in the process Previously we were validating the jsonschema of schema files in `SchemaParser.parse_file`. However, the file is originally loaded in `yaml_from_file` (which happens before `SchemaParser.parse_file`), and `yaml_from_file` _modifies_ the loaded dictionary to add some additional properties. These additional properties violate the jsonschema unfortunately, and thus we needed to start validating the schema against the jsonschema before any such modifications. * Skip parser tests for `model.freshness` Model freshness never got fully implemented, won't be implemented nor documented for 1.10. As such we're gonna consider the `model.freshness` property an "unknown additional property". This is actually good as some people have "accidentally" defined "freshness" on their models (likely due to copy/paste of a source), and that property isn't doing anything.
| Commit: | fde3bc6 | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | Quigley Malcolm | |
Add deprecation type for custom properties in YAML objects
| Commit: | 7245d03 | |
|---|---|---|
| Author: | Quigley Malcolm | |
Add deprecation type for custom properties in YAML objects
| Commit: | 21a4779 | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | GitHub | |
Deprecate having custom keys in config blocks (#11522) * Add deprecation event for custom keys found in configs * Begin checking schema files for custom keys found in configs * Test new CustomConfigInConfigDeprecation event * Add changie doc * Add custom config key deprecation events to event serialization test * Provide message to ValidationError in `SelectorConfig.from_path` This typing error is unrelated to the changes in this PR. However, it was failing CI, so I figured it'd be simple to just fix it. * Add some extra guards around the ValidationFailure `path` and `instance`
| Commit: | b1c859d | |
|---|---|---|
| Author: | Peter Webb | |
| Committer: | GitHub | |
Add Check for Duplicate YAML Keys (#11510) * Add functionality to check for duplicate yaml keys, working around PyYAML limitation. * Fix up some ancient typing issues. * Ignore typing issue, for now. * Correct unit tests of `checked_load` * Add event and deprecation types for duplicate yaml keys * Begin validating `dbt_project.yml` for duplicate key violations * Begin checking for duplicate key violations in schema files * Add test to check duplicate keys are checked in schema files * Refactor checked_yaml failure handling to reduce duplicate code * Move `checked_load` utilities to separate file to avoid circular imports * Handle yaml `start_mark` correctly for top level key errors * Update changelog * Fix test. --------- Co-authored-by: Quigley Malcolm <quigley.malcolm@dbtlabs.com>
| Commit: | caa8cf2 | |
|---|---|---|
| Author: | Peter Webb | |
| Committer: | GitHub | |
Deprecate Custom Top-Level Keys (#11518) * Add specific deprecation for custom top level keys. * Add changelog entry * Add test events
| Commit: | 0b9d371 | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | GitHub | |
Add `UnexpectedJinjaBlockDeprecationSummary` and add file context to `UnexpectedJinjaBlockDeprecation` (#11517) * Add summary event for UnexpectedJinjaBlockDeprecation * Begin including file information in UnexpectedJinjaBlockDeprecation event * Add UnexpectedJinjaBlockDeprecationSummary to test_events.py
| Commit: | 3d707bc | |
|---|---|---|
| Author: | Peter Webb | |
| Committer: | GitHub | |
Add Deprecation Warnings for Unexpected Jinja Blocks (#11514) * Add deprecation warnings on unexpected jinja blocks. * Add changelog entry. * Add test event. * Regen proto types. * Fix event test.
| Commit: | f1bd3f7 | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | GitHub | |
Begin basic jsonschema validations of dbt_project.yml (#11505) * Add jsonschema for validation project file * Add utility for helping to load jsonschema resources Currently things are a bit hard coded. We should probably alter this to be a bit more flexible. * Begin validating the the `dbt_project.yml` via jsonschema * Begin emitting deprecation warnings for generic jsonschema violations in dbt_project.yml * Move from `DbtInternalError` to `DbtRuntimeError` to avoid circular imports * Add tests for basic jsonschema validation of `dbt_project.yml` * Add changie doc * Add seralization test for new deprecation events * Alter the project jsonschema to not require things that are optional * Add datafiles to package egg * Update inclusion of project jsonschema in setup.py to get files correctly Using the glob spec returns a list of found files. Our previous spec was raising the error `error: can't copy 'dbt/resources/input_schemas/project/*.json': doesn't exist or not a regular file` * Try another approach of adding jsonschema to egg * Add input_schemas dir to MANIFEST.in spec * Drop jsonschema inclusion spec from setup.py * Begin using importlib.resources.files for loading project jsonschema This doesn't currently work with editable installs :'( * Use relative paths for loading jsonchemas instead of importlib Using "importlib" is the blessed way to do this sort of thing. However, that is failing for us on editable installs. This commit switches us to using relative paths. Technically doing this has edge cases, however this is also what we do for the `start_project` used in `dbt init`. So we're going to do the same, for now. We should revisit this soon. * Drop requirment of `__additional_properties__` specified by project jsonschema * Drop requirement for `pre-hook` and `post-hook` specified by project jsonschema * Reset `active_deprecations` global at the end of tests using `project` fixture
| Commit: | e2e86b7 | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | GitHub | |
General Deprecation Warning Improvements (#11466)
| Commit: | d7c2e83 | |
|---|---|---|
| Author: | Quigley Malcolm | |
Move resource names with spaces deprecation to using new deprecations manager
| Commit: | 300aa09 | |
|---|---|---|
| Author: | Chenyu Li | |
| Committer: | GitHub | |
Support artifact upload (#11419) * wip * reorganize * changie * retry * nits * nits * improve retry, adjust error, adjust host name * adjust logic * pr_feedback * Update .changes/unreleased/Features-20250323-151625.yaml Co-authored-by: Emily Rockman <emily.rockman@dbtlabs.com> --------- Co-authored-by: Emily Rockman <emily.rockman@dbtlabs.com>
| Commit: | 906e07c | |
|---|---|---|
| Author: | Michelle Ark | |
| Committer: | GitHub | |
Add node_checksum to node_info on structured logs (#11368) * update node_info to include node checksum * changelog entry * Discard changes to dev-requirements.txt --------- Co-authored-by: Chenyu Li <chenyulee777@gmail.com> Co-authored-by: Quigley Malcolm <quigley.malcolm@dbtlabs.com>
| Commit: | b0ca125 | |
|---|---|---|
| Author: | Peter Webb | |
| Committer: | GitHub | |
Macro Annotations and Inference (#11389) * Default macro argument information from original definitions. * Add argument type and count warnings behind behavior flag. * Add changelog entry. * Make flag test more robust. * Use a unique event for macro annotation warnings, per review. * Add event to test list. * Regenerate core_types_pb2 using protoc 5.28.3 --------- Co-authored-by: Quigley Malcolm <quigley.malcolm@dbtlabs.com>
| Commit: | 31881d2 | |
|---|---|---|
| Author: | Kshitij Aranke | |
| Committer: | GitHub | |
Misc fixes for group info in logging (#11218)
| Commit: | dcc9a0c | |
|---|---|---|
| Author: | Kshitij Aranke | |
| Committer: | GitHub | |
Create `LogNodeResult` event (#11195) * Create LogNodeResult event * add msg directly during object creation
| Commit: | 7fdd92f | |
|---|---|---|
| Author: | github-actions[bot] | |
| Committer: | GitHub | |
Warn if `concurrent_batches` config is set to `True`, but the available adapter doesn't support it (#11145) (#11154) * Begin producing warning when attempting to force concurrent batches without adapter support Batches of microbatch models can be executed sequentially or concurrently. We try to figure out which to do intelligently. As part of that, we implemented an override, the model config `concurrent_batches`, to allow the user to bypass _some_ of our automatic detection. However, a user _cannot_ for batches to run concurrently if the adapter doesn't support concurrent batches (declaring support is opt in). Thus, if an adapter _doesn't_ support running batches concurrently, and a user tries to force concurrent execution via `concurrent_batches`, then we need to warn the user that that isn't happening. * Add custom event type for warning about invalid `concurrent_batches` config * Fire `InvalidConcurrentBatchesConfig` warning via `warn_or_error` so it can be silenced (cherry picked from commit 6c61cb7f7adbdce8edec35a887d6c766a401e403) Co-authored-by: Quigley Malcolm <QMalcolm@users.noreply.github.com>
| Commit: | 6c61cb7 | |
|---|---|---|
| Author: | Quigley Malcolm | |
| Committer: | GitHub | |
Warn if `concurrent_batches` config is set to `True`, but the available adapter doesn't support it (#11145) * Begin producing warning when attempting to force concurrent batches without adapter support Batches of microbatch models can be executed sequentially or concurrently. We try to figure out which to do intelligently. As part of that, we implemented an override, the model config `concurrent_batches`, to allow the user to bypass _some_ of our automatic detection. However, a user _cannot_ for batches to run concurrently if the adapter doesn't support concurrent batches (declaring support is opt in). Thus, if an adapter _doesn't_ support running batches concurrently, and a user tries to force concurrent execution via `concurrent_batches`, then we need to warn the user that that isn't happening. * Add custom event type for warning about invalid `concurrent_batches` config * Fire `InvalidConcurrentBatchesConfig` warning via `warn_or_error` so it can be silenced
| Commit: | 9f5f002 | |
|---|---|---|
| Author: | github-actions[bot] | |
| Committer: | GitHub | |
Microbatch first last batch serial (#11072) (#11107) * microbatch: split out first and last batch to run in serial * only run pre_hook on first batch, post_hook on last batch * refactor: internalize parallel to RunTask._submit_batch * Add optional `force_sequential` to `_submit_batch` to allow for skipping parallelism check * Force last batch to run sequentially * Force first batch to run sequentially * Remove batch_idx check in `should_run_in_parallel` `should_run_in_parallel` shouldn't, and no longer needs to, take into consideration where in batch exists in a larger context. The first and last batch for a microbatch model are now forced to run sequentially by `handle_microbatch_model` * Begin skipping batches if first batch fails * Write custom `on_skip` for `MicrobatchModelRunner` to better handle when batches are skipped This was necessary specifically because the default on skip set the `X of Y` part of the skipped log using the `node_index` and the `num_nodes`. If there was 2 nodes and we are on the 4th batch of the second node, we'd get a message like `SKIPPED 4 of 2...` which didn't make much sense. We're likely in a future commit going to add a custom event for logging the start, result, and skipping of batches for better readability of the logs. * Add microbatch pre-hook, post-hook, and sequential first/last batch tests * Fix/Add tests around first batch failure vs latter batch failure * Correct MicrobatchModelRunner.on_skip to handle skipping the entire node Previously `MicrobatchModelRunner.on_skip` only handled when a _batch_ of the model was being skipped. However, that method is also used when the entire microbatch model is being skipped due to an upstream node error. Because we previously _weren't_ handling this second case, it'd cause an unhandled runtime exception. Thus, we now need to check whether we're running a batch or not, and there is no batch, then use the super's on_skip method. * Correct conditional logic for setting pre- and post-hooks for batches Previously we were doing an if+elif for setting pre- and post-hooks for batches, where in the `if` matched if the batch wasn't the first batch, and the `elif` matched if the batch wasn't the last batch. The issue with this is that if the `if` was hit, the `elif` _wouldn't_ be hit. This caused the first batch to appropriately not run the `post-hook` but then every hook after would run the `post-hook`. * Add two new event types `LogStartBatch` and `LogBatchResult` * Update MicrobatchModelRunner to use new batch specific log events * Fix event testing * Update microbatch integration tests to catch batch specific event types --------- Co-authored-by: Quigley Malcolm <quigley.malcolm@dbtlabs.com> (cherry picked from commit 03fdb4c1578d74e25615a4f46fb572ecee0685e0) Co-authored-by: Michelle Ark <MichelleArk@users.noreply.github.com>
| Commit: | 03fdb4c | |
|---|---|---|
| Author: | Michelle Ark | |
| Committer: | GitHub | |
Microbatch first last batch serial (#11072) * microbatch: split out first and last batch to run in serial * only run pre_hook on first batch, post_hook on last batch * refactor: internalize parallel to RunTask._submit_batch * Add optional `force_sequential` to `_submit_batch` to allow for skipping parallelism check * Force last batch to run sequentially * Force first batch to run sequentially * Remove batch_idx check in `should_run_in_parallel` `should_run_in_parallel` shouldn't, and no longer needs to, take into consideration where in batch exists in a larger context. The first and last batch for a microbatch model are now forced to run sequentially by `handle_microbatch_model` * Begin skipping batches if first batch fails * Write custom `on_skip` for `MicrobatchModelRunner` to better handle when batches are skipped This was necessary specifically because the default on skip set the `X of Y` part of the skipped log using the `node_index` and the `num_nodes`. If there was 2 nodes and we are on the 4th batch of the second node, we'd get a message like `SKIPPED 4 of 2...` which didn't make much sense. We're likely in a future commit going to add a custom event for logging the start, result, and skipping of batches for better readability of the logs. * Add microbatch pre-hook, post-hook, and sequential first/last batch tests * Fix/Add tests around first batch failure vs latter batch failure * Correct MicrobatchModelRunner.on_skip to handle skipping the entire node Previously `MicrobatchModelRunner.on_skip` only handled when a _batch_ of the model was being skipped. However, that method is also used when the entire microbatch model is being skipped due to an upstream node error. Because we previously _weren't_ handling this second case, it'd cause an unhandled runtime exception. Thus, we now need to check whether we're running a batch or not, and there is no batch, then use the super's on_skip method. * Correct conditional logic for setting pre- and post-hooks for batches Previously we were doing an if+elif for setting pre- and post-hooks for batches, where in the `if` matched if the batch wasn't the first batch, and the `elif` matched if the batch wasn't the last batch. The issue with this is that if the `if` was hit, the `elif` _wouldn't_ be hit. This caused the first batch to appropriately not run the `post-hook` but then every hook after would run the `post-hook`. * Add two new event types `LogStartBatch` and `LogBatchResult` * Update MicrobatchModelRunner to use new batch specific log events * Fix event testing * Update microbatch integration tests to catch batch specific event types --------- Co-authored-by: Quigley Malcolm <quigley.malcolm@dbtlabs.com>
| Commit: | fd6ec71 | |
|---|---|---|
| Author: | Michelle Ark | |
| Committer: | GitHub | |
Microbatch parallelism (#10958)
| Commit: | 2a75dd4 | |
|---|---|---|
| Author: | Doug Beatty | |
| Committer: | GitHub | |
Parseable JSON and text output in quiet mode for `dbt show` and `dbt compile` (#9958) * Allow `dbt show` and `dbt compile` to output JSON without extra logs * Add `quiet` attribute for ShowNode and CompiledNode messages * Output of protoc compiler * Utilize the `quiet` attribute for ShowNode and CompiledNode * Reuse the `dbt list` approach when the `--quiet` flag is used * Use PrintEvent to get to stdout even if the logger is set to ERROR * Functional tests for quiet compile * Functional tests for quiet show * Fire event same way regardless if LOG_FORMAT is json or not * Switch back to firing ShowNode and CompiledNode events * Make `--inline-direct` to be quiet-compatible * Temporarily change to dev branch for dbt-common * Remove extraneous newline * Functional test for `--quiet` for `--inline-direct` flag * Update changelog entry * Update `core_types_pb2.py` * Restore the original branch in `dev-requirements.txt` --------- Co-authored-by: Kshitij Aranke <kshitij.aranke@dbtlabs.com>
| Commit: | 89caa33 | |
|---|---|---|
| Author: | Michelle Ark | |
| Committer: | GitHub | |
Replace environment variable with a project flag to gate microbatch functionality (#10799) * first pass: replace os env with project flag * Fix `TestMicrobatchMultipleRetries` to not use `os.env` * Turn off microbatch project flag for `TestMicrobatchCustomUserStrategyDefault` as it was prior to a9df50f * Update `BaseMicrobatchTest` to turn on microbatch via project flags * Add changie doc * Fix functional tests after merging in main * Add function to that determines whether the new microbatch functionality should be used The new microbatch functionality is, unfortunately, potentially dangerous. That is it adds a new materalization strategy `microbatch` which an end user could have defined as a custom strategy previously. Additionally we added config keys to nodes, and as `config` is just a Dict[str, Any], it could contain anything, thus meaning people could already be using the configs we're adding for different purposes. Thus we need some intellegent gating. Specifically something that adheres to the following: cms = Custom Microbatch Strategy abms = Adapter Builtin Microbatch Strategy bf = Behavior flag umb = Use Microbatch Batching t/f/e = True/False/Error | cms | abms | bf | umb | | t | t | t | t | | f | t | t | t | | t | f | t | t | | f | f | t | e | | t | t | f | f | | f | t | f | t | | t | f | f | f | | f | f | f | e | (The above table assumes that there is a microbatch model present in the project) In order to achieve this we need to check that either the microbatch behavior flag is set to true OR microbatch materializaion being used is the _root_ microbatch materialization (i.e. not custom). The function we added in this commit, `use_microbatch_batches`, does just that. * Gate microbatch functionality by `use_microbatch_batches` manifest function * Rename microbatch behavior flag to `require_batched_execution_for_custom_microbatch_strategy` * Extract logic of `find_macro_by_name` to `find_macro_candiate_by_name` In 0349968c615444de05360509ddeaf6d75d41d826 I had done this for the function `find_materialization_macro_by_name`, but that wasn't the right function to do it to, and will be reverted shortly. `find_materialization_macro_by_name` is used for finding the general materialization macro, whereas `find_macro_by_name` is more general. For the work we're doing, we need to find the microbatch macro, which is not a materialization macro. * Use `find_macro_candidate_by_name` to find the microbatch macro * Fix microbatch macro locality check to search for `core` locality instead of `root` Previously were were checking for a locality of `root`. However, a locality of `root` means it was provided by a `package`. We wnt to check for locality of `core` which basically means `builtin via dbt-core/adapters`. There is another locality `imported` which I beleive means it comes from another package. * Move the evaluation of `use_microbatch_batches` to the last position in boolean checks The method `use_microbatch_batches` is always invoked to evaluate an `if` statement. In most instances, it is part of a logic chain (i.e. there are multiple things being evaluated in the `if` statement). In `if` statements where there are multiple things being evaulated, `use_microbatch_batches` should come _last_ (or as late as possible). This is because it is likely the most costly thing to evaluate in the logic chain, and thus any shortcuts cuts via other evaluations in the if statement failing (and thus avoiding invoking `use_microbatch_batches) is desirable. * Drop behavior flag setting for BaseMicrobatchTest tests * Rename 'env_var' to 'project_flag' in test_microbatch.py * Update microbatch tests to assert when we are/aren't running with batches * Update `test_resolve_event_time_filter` to use `use_microbatch_batches` * Fire deprecation warning for custom microbatch macros * Add microbatch deprecation events to test_events.py --------- Co-authored-by: Quigley Malcolm <quigley.malcolm@dbtlabs.com>
| Commit: | e26af57 | |
|---|---|---|
| Author: | Devon Fulcher | |
| Committer: | GitHub | |
Behavior change cumulative type param (#10909) * Behavior change for mf timespinse without yaml config * Flipping behavior flag causes parse error * Added more tests * Appending just one error
| Commit: | 8a17a0d | |
|---|---|---|
| Author: | Devon Fulcher | |
| Committer: | GitHub | |
Behavior change for mf timespine without yaml configuration (#10857)