Releases: dagster-io/dagster
Releases · dagster-io/dagster
1.6.2 (core) / 0.22.2 (libraries)
New
- The warning for unloadable sensors and schedules in the Dagster UI has now been removed.
- When viewing an individual sensor or schedule, we now provide a button to reset the status of the sensor or schedule back to its default status as defined in code.
Experimental
- [asset-checks] dbt asset checks now respect
warn_if
/error_if
severities
Dagster Cloud
- Fixed a bug introduced in
1.6.0
where run status sensors did not cursor correctly when deployed on Dagster Cloud. - Schedule and sensor mutations are now tracked in the audit log.
1.6.1 (core) / 0.22.1 (libraries)
New
- Added experimental functionality which hides user code errors from the Dagster UI. You may enable this functionality by setting the
DAGSTER_REDACT_USER_CODE_ERRORS
environment variable to1
. - [dagster-dbt]
@dbt_assets
now accepts arequired_resource_keys
argument.
Bugfixes
- Fixed a bug where a run that targets no steps is launched by an asset backfill when code updates are pushed after backfill launch time.
- Previously a graphQL error would be thrown on the asset backfill page if certain unpartitioned assets were changed to a partitioned assets. This has been fixed.
- [ui] Show run log timestamps in the user’s preferred hour cycle (12/24h) format.
- [ui] The “Export to SVG” option now works as expected in the improved asset graph UI.
- [ui] On the asset graph, hovering over a collapsed group or the title bar of an expanded group highlights all edges in/out of the group.
- Fixed occasional CI/CD errors when building documentation on a feature branch
Community Contributions
- fix: add missing volumes and volumeMounts in job-instance-migrate.yaml. Thanks @nhuray!
Documentation
- Fixed typos in the docs.
Dagster Cloud
- [ui] Fix dark theme colors for billing components.
- [ui] Show the number of users for each grant type (admin, editor, etc.) on the Users page.
1.6.0 (core) / 0.22.0 (libraries)
Major Changes since 1.5.0 (core) / 0.21.0 (libraries)
Core
- Asset lineage graph UI revamp, to make it easier to visualize and navigate large graphs
- Lineage now flows left-to-right instead of top-to-bottom.
- You can expand and collapse asset groups in the graph.
- A new left-hand sidebar provides a list of assets, organized by asset group and code location.
- You can right-click on assets or groups to filter or materialize them.
- You can filter by compute kind.
- Dark mode for the Dagster UI – By default, Dagster will match your system’s light or dark theme but you can adjust this in the user settings in the top right of the UI.
- Report asset materializations from the UI – I.e. you record an asset materialization event without executing the code to materialize the asset. This is useful in cases where you overwrote data outside of Dagster, and you want Dagster to know about it and represent it in the UI. It’s also useful when you have a preexisting partitioned asset and start managing it with Dagster: you want Dagster to show the historical partitions as materialized instead of missing.
MaterializeResult
,AssetSpec
, andAssetDep
now marked stable – These APIs, introduced in Dagster 1.5, were previously marked experimental. They offer a more straightforward way of defining assets when you don’t want to use I/O managers.- Backfill previews – When launching a backfill that covers assets with different partitions, can you now click “Preview” to see that partitions for each asset that will be covered by the backfill.
- Viewing logs for a sensor or schedule tick is no longer considered experimental – previously, accessing this functionality required turning on a feature flag in user settings.
- Runs triggered by a sensor or schedule link to the tick that triggered them.
dagster-pipes
- AWS Lambda Pipes client –
PipesLambdaClient
[guide]. - Report arbitrary messages between pipes processes and the orchestrating process – with
report_custom_message
andget_custom_messages
. - Termination forwarding – ensures that external processes are terminated when an orchestration process is.
Since 1.5.14 (core) / 0.21.14 (libraries)
New
- Default op/asset concurrency limits are now configurable at the deployment level, using the
concurrency
>default_op_concurrency_limit
configuration in yourdagster.yaml
(OSS) or Deployment Settings page (Dagster Cloud). In OSS, this feature first requires a storage migration (e.g.dagster instance migrate
). - Zero-value op/asset concurrency limits are now supported. In OSS, this feature first requires a storage migration (e.g.
dagster instance migrate
). - When a
Nothing
-typed output is returned from anasset
orop
, thehandle_output
function of the I/O manager will no longer be called. Users of most Dagster-maintained I/O managers will see no behavioral changes, but users of the In-Memory I/O manager, or custom I/O managers that storeNothing
-typed outputs should reference the migration guide for more information. - [ui] The updated asset graph is no longer behind an experimental flag. The new version features a searchable left sidebar, a horizontal DAG layout, context menus and collapsible groups!
Bugfixes
- Previously, if a code location was re-deployed with modified assets during an iteration of the asset daemon, empty auto-materialize runs could be produced. This has been fixed.
- The CLI command
dagster asset materialize
will now return a non-zero exit code upon failure. - [ui] The Dagster UI now shows resource descriptions as markdown instead of plain text.
- [ui] Viewing stdout/stderr logs for steps emitting hundreds of thousands of messages is much more performant and does not render the Run page unusable.
- [ui] Fixed an issue where sensors with intervals that were less than 30 seconds were shown with an interval of “~30s” in the UI. The correct interval is now shown.
- [dagster-graphql] Fixed an issue where the GraphQL Python client raised an unclear error if the request failed due to a permissions error.
Breaking Changes
- A slight change has been made to run status sensors cursor values for Dagster instance using the default SQLite storage implementation. If you are using the default SQLite storage and you are upgrading directly from a version of
dagster<1.5.1
, you may see the first tick of your run status sensor skip runs that completed but were not yet registered by the sensor during your upgrade. This should not be common, but to avoid any chance of that, you may consider an interim upgrade todagster>=1.5.1,<1.6.0
first.
Community Contributions
- Fixed a typo in the docs. Thanks @tomscholz!
- [dagster-pyspark] Added additional file exclude rules to the zip files created by Dagster Pyspark step launchers. Thanks @maxfirman!
Documentation
- Added a high-level overview page for Logging.
Dagster Cloud
- Added the ability to annotate code locations with custom agent queues, allowing you to route requests for code locations in a single deployment to different agents. For example, you can route requests for one code location to an agent running in an on-premise data center but requests for all other code locations to another agent running in the cloud. For more information, see the docs.
1.5.14 / 0.21.14 (libraries)
New
- Viewing logs for a sensor or schedule tick is now a generally available feature.
- The feature flag to view sensor or schedule tick logs has been removed, as the feature is now enabled by default.
- Logs can now be viewed even when the sensor or schedule tick fails.
- The logs are now viewable in the sensor or schedule tick modal.
graph_multi_asset
s can now accept inputs askwargs
.- [ui] The tick timeline for schedules and sensors now defaults to showing all ticks, instead of excluding skipped ticks. The previous behavior can be enabled by unchecking the “Skipped” checkbox below the timeline view.
- [ui] The updated asset graph is no longer behind an experimental flag. The new version features a searchable left sidebar, a horizontal DAG layout, context menus and collapsible groups!
Bugfixes
- [ui] Fix layout and scrolling issues that arise when a global banner alert is displayed in the app.
- [ui] Use a larger version of the run config dialog in the Runs list in order to maximize the amount of visible config yaml.
- [ui] When a software-defined asset is removed from a code location, it will now also be removed from global search.
- [ui] When selecting assets in the catalog, you can now opt to materialize only “changed and missing” items in your selection.
- [ui] The “Open in Launchpad” option on asset run pages has been updated to link to the graph of assets or asset job instead of an unusable launchpad page.
- [ui] Partition status dots of multi-dimensional assets no longer wrap on the Asset > Partitions page.
- [asset checks] Fixed a bug that caused the
resource_defs
parameter of@asset_check
to not be respected - [ui] Fixed an issue where schedules or sensors with the same name in two different code locations sometimes showed each others runs in the list of runs for that schedule or sensor.
- [pipes] Fixed an issue with the
PipesFileMessageReader
that could cause a crash on Windows. - Previously, calling
context.log
in different threads within a single op could result in some of those log messages being dropped. This has been fixed (thanks @quantum-byte!) - [dagster-dbt] On Dagster run termination, the dbt subprocess now exits gracefully to terminate any inflight queries that are materializing models.
Breaking Changes
- The
file_manager
property onOpExecutionContext
andAssetExecutionContext
has been removed. This is an ancient property that was deprecated prior to Dagster 1.0, and since then had been raising aNotImplementedError
whenever invoked.
Community Contributions
- Added the Hashicorp Nomad integration to the documentation’s list of community integrations. Thanks, @ThomAub!
- [dagster-deltalake] Fixed an error when passing non-string valued options and extended the supported data types by the arrow type handler to support pyarrow datasets which allows for lazily loading delta tables. Thanks @roeap!
Experimental
- [dagster-pipes] The subprocess and databricks clients now forward termination to the external process if the orchestration process is terminated. A
forward_termination
argument is available for opting out.
Documentation
- Fixed an error in the asset checks factory code example.
Dagster Cloud
- The UI now correctly displays failed partitions after a single-run backfill occurs. Previously, if a single-run backfill failed, the corresponding partitions would not display as failed.
- Several performance improvements when submitting Snowflake metrics to Dagster Cloud Insights.
- Fixed an error which would occur when submitting Snowflake metrics for a removed or renamed asset to Dagster Cloud Insights.
1.5.13 / 0.21.13 (libraries)
New
- The
SensorEvaluationContext
object has two new properties:last_sensor_start_time
andis_first_tick_since_sensor_start
. This enables sensor evaluation functions to vary behavior on the first tick vs subsequent ticks after the sensor has started. - The
asset_selection
argument to@sensor
andSensorDefinition
now accepts sequence ofAssetsDefinitions
, a sequences of strings, or a sequence ofAssetKey
s, in addition toAssetSelection
s. - [dagster-dbt] Support for
dbt-core==1.3.*
has been removed. - [ui] In code locations view, link to git repo when it’s a valid URL.
- [ui] To improve consistency and legibility, when displaying elapsed time, most places in the app will now no longer show milliseconds.
- [ui] Runs that were launched by schedules or sensors now show information about the relevant schedule or sensor in the header, with a link to view other runs associated with the same tick.
- [dagster-gcp] Added a
show_url_only
parameter toGCSComputeLogManager
that allows you to configure the compute log manager so that it displays a link to the GCS console rather than loading the logs from GCS, which can be useful if giving Dagster access to GCS credentials is undesirable.
Bugfixes
- Fixed behavior of loading partitioned parent assets when using the
BranchingIOManager
- [ui] Fixed an unwanted scrollbar that sometimes appears on the code location list.
Community Contributions
- Fixed a bug where dagster would error on FIPS-enabled systems by explicitly marking callsites of
hashlib.md5
as not used for security purposes (Thanks @jlloyd-widen!) - [dagster-k8s] Changed
execute_k8s_job
to be aware of run-termination and op failure by deleting the executing k8s job (Thanks @Taadas!). - [dagstermill] Fixed dagstermill integration with the Dagster web UI to allow locally-scoped static resources (required to show certain frontend-components like
plotly
graphs) when viewing dagstermill notebooks (Thanks @aebrahim!). - [dagster-dbt] Fixed type annotation typo in the
DbtCliResource
API docs (Thanks @akan72!)
Experimental
- [pipes] Methods have been added to facilitate passing non-Dagster data back from the external process (
report_custom_message
) to the orchestration process (get_custom_messages
). - [ui] Added a “System settings” option for UI theming, which will use your OS preference to set light or dark mode.
Documentation
- [graphql] - Removed experimental marker that was missed when the GraphQL client was fully released
- [assets] - Add an example for using retries with assets to the SDA concept page
- [general] - Fixed some typos and formatting issues
1.5.12 / 0.21.12 (libraries)
Bugfixes
- [dagster-embedded-elt] Fixed an issue where
EnvVar
s used in Sling source and target configuration would not work properly in some circumstances. - [dagster-insights] Reworked the Snowflake insights ingestion pipeline to improve performance and increase observability.
1.5.11 / 0.21.11 (libraries)
New
- [ui] Asset graph now displays active filters.
- [ui] Asset graph can now be filtered by compute kind.
- [ui] When backfilling failed and missing partitions of assets, a “Preview” button allows you to see which ranges will be materialized.
- [dagster-dbt] When running
DAGSTER_DBT_PARSE_PROJECT_ON_LOAD=1 dagster dev
in a new scaffolded project fromdagster-dbt project scaffold
, dbt logs from creating dbt artifacts to loading the project are now silenced. - [dagster-airbyte] Added a new
connection_meta_to_group_fn
argument which allows configuring loaded asset groups based on the connection’s metadata dict. - [dagster-k8s] Debug information about failed run workers in errors surfaced by run monitoring now includes logs from sidecar containers, not just the main dagster container.
Bugfixes
- The
QueuedRunCoordinatorDaemon
has been refactored to paginate over runs when applying priority sort and tag concurrency limits. Previously, it loaded all runs into memory causing large memory spikes when many runs were enqueued. - Callable objects can once again be used to back sensor definitions.
UPathIOManager
has been updated to use the correct path delimiter when interacting with cloud storages from a Windows process.- In the default multiprocess executor, the
STEP_WORKER_STARTED
event now fires before importing code in line with the other executors. - During execution, skipping a step now takes precedence over “abandoning” it due to upstream failure. This is expected to substantially improve the “retry from failure” workflow when conditional branching is in use.
- Fixed an issue where default config values set to
EnvVar
did not work properly. - Fixed an issue where resources which implemented
IAttachDifferentObjectToOpContext
would pass the incorrect object to schedules and sensors. - Fixed a bug that caused auto-materialize failures when using the
materialize_on_cron
rule with dynamically partitioned assets. - Fixed an issue where sensor ticks would sporadically fail with a StopIteration exception.
- [ui] For a job launchpad with a large number of tabs, the “Remove all” option was pushed offscreen. This has been fixed.
- [ui] The asset backfill page now correctly shows backfills that target only unpartitioned assets.
- [ui] Launching an asset job that was defined
without_checks
no longer fails by attempting to include the checks. - [dagster-databricks] fix bug that caused crash when polling a submitted job that is still in the Databricks queue (due to concurrency limit).
Community Contributions
- Patched issue where the local compute log path exposed file content outside of the compute log base directory - thanks r1b!
- [dagster-databricks] Added ability to authenticate using an Azure service principal and fix minor bugs involving authenticating with a service principal while
DATABRICKS_HOST
is set. Thanks @zyd14!
Experimental
- [ui] Dark mode is now available via the User Settings dialog, currently in an experimental state. By default, the app will use a “legacy” theme, closely matching our current colors. A new light mode theme is also available.
- [ui] Asset graph group nodes can be collapsed/expanded by right clicking on the collapsed group node or the header of the expanded group node.
- [ui] Asset graph group nodes can be all collapsed or all expanded by right clicking anywhere on the graph and selecting the appropriate action.
- [ui] The tree view was removed from the asset graph.
- [pipes]
PipesLambdaClient
, an AWS Lambda pipes client has been added todagster_aws
. - Fixed a performance regression introduced in the 1.5.10 release where auto-materializing multi-assets became slower.
Documentation
- [getting-started] Added an overview to the Getting Started section that explains the whats and whys of Dagster.
- [pipes] Added a guide for using the new
PipesLambdaClient
with Dagster Pipes. - [getting-started] Simplified the Getting Started category. The following pages have been moved:
- Understanding Dagster project files is now in Guides
- Telemetry is now in About
- [guides] Fixed a broken link in the Airflow-to-Dagster concept mapping guide.
- [deployment] Cleaned up and updated the Executing with Celery OSS deployment guide.
- [general] Added two guides that were previously missing to the side navigation:
- Utilizing SCIM provisioning (Deployment > Cloud > Authentication & users > SCIM provisioning)
- Pandera (Integrations > Pandera)
Dagster Cloud
- When a Dagster Cloud agent starts up, it will now wait to display as Running on the Agents tab in the Dagster Cloud UI until it has launched all the code servers that it needs in order to serve requests.
1.5.10 / 0.21.10 (libraries)
New
- Added a new
MetadataValue.job
metadata type, which can be used to link to a Dagster job from other objects in the UI. - [asset backfills] Previously, when partitions definitions were changed after backfill launch, the asset backfill page would be blank. Now, when partitions definitions are changed, the backfill page will display statuses by asset.
- [dagster-bigquery, dagster-duckdb, dagster-snowflake]. The BigQuery, DuckDB, and Snowflake I/O Managers will now determine the schema (dataset for BigQuery) in the following order of precedence:
schema
metadata set on theasset
orop
, I/O managerschema
/dataset
configuration,key_prefix
set on theasset
. Previously, all methods for setting the schema/dataset were mutually exclusive, and setting more than one would raise an exception. - [dagster-shell] Added option to exclude the shell command from logs.
- [dagster-dbt] When running
DAGSTER_DBT_PARSE_PROJECT_ON_LOAD=1 dagster dev
in a new scaffolded project fromdagster-dbt project scaffold
, dbt artifacts for loading the project are now created in a statictarget/
directory.
Bugfixes
- Problematic inheritance that was causing pydantic warnings to be emitted has been corrected.
- It's now possible to use the logger of
ScheduleEvaluationContext
when testing viabuild_schedule_context
. - The
metadata
from aFailure
exception is now hoisted up to the failure that culminates when retry limits are exceeded. - Fixed bug in which the second instance of an hour partition at a DST boundary would never be shown as “materialized” in certain UI views.
- Fixed an issue where backfilling an hourly partition that occurred during a fall Daylight Savings Time transition sometimes raised an error.
- [auto-materialize] Fix issue where assets which were skipped because required parent partitions did not exist would not be materialized once those partitions came into existence.
- [dagster ecs] The exit code of failed containers is now included in the failure message.
- [dagster pipes] The
PipesK8sClient
now correctly raises on failed containers. - [dagster pipes] Using pipes within ops instead of assets no longer enforces problematic constraints.
- [helm] Added
maxCatchupRuns
andmaxTickRetries
configuration options for the scheduler in the Helm chart. - [embedded-elt] Fixed crashes for non-unicode logs.
- [UI] Fixed an issue where the test sensor dialog for a sensor that targeted multiple jobs would claim that all of the runs were targeting the same job.
- [UI] Asset keys, job names, and other strings in Dagster UI no longer truncate unnecessarily in Firefox in some scenarios
- [UI] A larger “View prior events” button on the Asset > Partitions page makes it easier to see the historical materializations of a specific partition of an asset.
- [asset-checks, dbt] Fixed a bug that that caused asset checks to not execute when a run was not a subset. As part of the fix, the default dbt selection selection string will not be used for dbt runs, even when not in a subset. Instead we pass the explicit set of models and tests to execute, with
DBT_INDIRECT_SELECTION=empty
. - [asset-checks] Fixed a bug that caused asset checks defined with
@asset(check_specs=...
to not cooperate with thekey_prefix
argument of theload_assets_from_modules
method and it’s compatriots. - [asset-checks] Fixed a bug that caused errors when launching a job from the UI that excluded asset checks.
- [asset-checks] Fixed a bug that caused UI errors when a check run was deleted.
Deprecations
- Marked the experimental Airbyte ingestion-as-code feature as deprecated, to be removed in a future release. We suggest users interested in managing their Airbyte connections in code use the Airbyte terraform provider.
Community Contributions
define_asset_job
now accepts anop_retry_policy
argument, which specifies a default retry policies for all of the ops in the job. (thanks Eugenio Contreras!)- Fix IOManager not being able to load assets with MultiPartitionsDefinition - thanks @cyberosa!
- [dagster-essentials] Three typo fixes in Lesson 8 - thanks Colton @cmpadden!
Experimental
- The
observable_source_asset
decorator now accepts akey
argument. - [dagster pipes] an
implicit_materializations
argument has been added toget_results
andget_materialize_result
to control whether an implicit materialization event is created or not. - [embedded-elt] Added a new builder and
SlingConnectionResource
to allow reusing sources and targets interoperably. - [UI] Updated the experimental concurrency limits configuration page to show per-op runtime info and control.
- [UI] The Auto-materialize history tab for each asset now only includes rows for evaluations where the result of evaluating the policy has changed. Previously, it would also show a row in the table representing periods of time where nothing changed.
- [asset-checks, dbt]
build_dbt_asset_selection
now also selects asset checks based on their underlying dbt tests. E.g.build_dbt_asset_selection([my_dbt_assets], dbt_select="tag:data_quality")
will select the assets and checks for any models and tests tagged with ‘data_quality’.
Documentation
- Added information about
EnvVar
vs.os.getenv
to the Environment variables documentation. - Updates to the Asset selection syntax reference, including expanded examples for Python, the CLI, and the Dagster UI.
- Added Experimental tags to all Dagster Cloud Insights docs.
- Updated the Helm - Migrating a Dagster instance while upgrading guide to include a prerequisites section.
Dagster Cloud
- Branch deployments now use the same timeouts for starting and canceling runs that are set for their parent full deployment, instead of a fixed value of 10 minutes.
- [k8s agent] Setting labels on a code location will now apply those labels to the kubernetes deployment and service for that code location, rather than just applying them to the pod for that code location.
- Dagster Insights is now available by default to all Cloud users, enabling analysis of Dagster runtime metrics at the platform and definition level. This feature is still in experimental mode, a label that we expect to remove in Q1 2024.
1.5.9 / 0.21.9 (libraries)
New
- [ui] Enabled collapsing asset groups in the global asset view when the new experimental asset graph is turned on in User Settings
- [ui] The experimental asset graph sidebar now supports keyboard navigation via arrow keys
- [ui] You can now right click nodes in the asset graph to materialize them or filter the graph
- [ui] Jobs can now be searched by run ID
- [ui] You can now launch runs from the job actions menu
- [auto-materialize] A new
AutoMaterializeRule.materialize_on_cron()
rule makes it possible to create policies which materialize assets on a regular cadence. - [auto-materialize] If a partition-mapping-related error occurs within the Asset Daemon, a more informative error message will be provided.
- [dagster-databricks] Extended the set of available config options to the Databricks step launcher - thanks @zyd14!
Bugfixes
- Fixed an issue where some schedules incorrectly skipped ticks during Daylight Savings Times transitions.
- Returning a
SensorResult
from a sensor no longer overwrites a cursor if it was set via the context. - Fixed issue which could cause incorrect execution order when executing multi-assets with
can_subset=True
alongside assets which were upstream of some assets in the multi-asset, and downstream of others. - Previously, when creating an
HourlyPartitionsDefinition
with a non-UTC timezone and the default format string (or any format string not including a UTC-offset), there was no way to disambiguate between the first and second instance of the repeated hour during a daylight saving time transition. Now, for the one hour per year in which this ambiguity exists, the partition key of the second instance of the hour will have the UTC offset automatically appended to it. - [asset checks] Fixed a bug that caused an error when passing
check_specs
toAssetsDefinition.from_graph
- [dagster-dbt] Fixed a bug in
dagster-dbt
that caused some dbt tests to not be selected as asset checks. - [dagster-dbt] Fixed an issue where multiple copies of the dbt manifest were held in memory when loading a dbt project as software-defined assets.
- The
email_on_failure
sensor called deprecated methods on the context. This has been fixed
Community Contributions
- [dagster-deltalake] Added Delta Lake support along with support for pandas and polars. Thanks Robert Pack @roeap!
- [dagster-graphql] Fixed the asset cursor format to use a normalized format - thanks @sisidra!
- [dagster-databricks] Extended the set of available config options to the Databricks step launcher - thanks @zyd14!
Experimental
DagsterInstance.report_runless_asset_event
is now public.AutoMaterializeRule.materialize_on_parent_updated
now accepts anupdated_parents_filter
of typeAutoMaterializeAssetPartitionsFilter
, which allows only materializing based on updates from runs with a required set of tags.
Documentation
- Added a new guide for using Dagster Pipes with Kubernetes
- Added all OSS deployment guides to the site’s side navigation (Deployment > Open Source > Guides)
- Updated formatting in the Migrating your Dagster instance while upgrading Helm guide
- Added Experimental tags to Dagster Cloud Insights docs
- The Transitioning Data Pipelines from Development to Production and Testing against production with Dagster Cloud Branch Deployments guides have been updated to use Pythonic Resources
Dagster Cloud
- Reporting runless events and manually marking an asset as successfully materialized are no possible with “Launcher” level permissions
- [ui] Improved search and render performance of Users page, especially for large lists of users.
- [billing] Fixed issues with correctly displaying your tax ID
1.5.8 / 0.21.8 (libraries)
Bugfixes
- Fixed an error when trying to directly invoke a run status sensor when passing resources.
- [dagster-airbyte][dagster-fivetran] Fixed an issue where
EnvVars
used in Airbyte or Fivetran resources would show up as their processed values in the launchpad when loading assets from a live Fivetran or Airbyte instance.
Dagster Cloud
- Substantially improved performance of the Dagster insights DBT/Snowflake usage job.