diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanelWithData.tsx b/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanelWithData.tsx index c4dee7349104a..2f18a9c99a084 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanelWithData.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanelWithData.tsx @@ -111,8 +111,21 @@ export const AutomaterializeMiddlePanelWithData = ({ const {partitions: allPartitions} = usePartitionsForAssetKey(definition?.assetKey.path || []); + // For a single asset for a single tick, DA will either request a list of runs or a single backfill. + // When DA requests a backfill we want to show a row for that backfill in the table, so we need to + // construct the RunsFilter differently. Backfill IDs are 8 characters long, so we can use that to + // determine if a backfill was requested. If DA is updated to request multiple backfills in a + // single evaluation, or emit a combination of runs and backfills in a single evaluation, this + // logic will need to be updated. + const backfillIdLength = 8; const runsFilter: RunsFilter | null = useMemo( - () => (selectedEvaluation?.runIds.length ? {runIds: selectedEvaluation.runIds} : null), + () => + selectedEvaluation?.runIds.length + ? selectedEvaluation.runIds.length === 1 && + selectedEvaluation.runIds[0]?.length === backfillIdLength + ? {tags: [{key: 'dagster/backfill', value: selectedEvaluation.runIds[0]}]} + : {runIds: selectedEvaluation.runIds} + : null, [selectedEvaluation], ); @@ -163,7 +176,7 @@ export const AutomaterializeMiddlePanelWithData = ({ {flagLegacyRunsPage ? ( ) : runsFilter ? ( - + ) : ( { } />
- +
diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/auto-materialization/GlobalAutomaterializationContent.tsx b/js_modules/dagster-ui/packages/ui-core/src/assets/auto-materialization/GlobalAutomaterializationContent.tsx index 3476d95a3f3a3..b32eccf37cd71 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/assets/auto-materialization/GlobalAutomaterializationContent.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/assets/auto-materialization/GlobalAutomaterializationContent.tsx @@ -228,6 +228,7 @@ export const GlobalAutomaterializationContent = () => {
)} diff --git a/js_modules/dagster-ui/packages/ui-core/src/instance/backfill/BackfillRunsTab.tsx b/js_modules/dagster-ui/packages/ui-core/src/instance/backfill/BackfillRunsTab.tsx index cd873db2153e5..89fbda9c49f6c 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/instance/backfill/BackfillRunsTab.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/instance/backfill/BackfillRunsTab.tsx @@ -167,6 +167,7 @@ export const BackfillRunsTab = ({ belowActionBarComponents={belowActionBarComponents} hideTags={BACKFILL_TAGS} scroll={true} + includeRunsFromBackfills={true} emptyState={() => ( ) => { - const {entries, paginationProps, queryResult} = useRunsFeedEntries(filter, 'all', true); + const {entries, paginationProps, queryResult} = useRunsFeedEntries( + filter, + 'all', + includeRunsFromBackfills, + ); const refreshState = useQueryRefreshAtInterval(queryResult, FIFTEEN_SECONDS); function content() { diff --git a/js_modules/dagster-ui/packages/ui-core/src/schedules/ScheduleRoot.tsx b/js_modules/dagster-ui/packages/ui-core/src/schedules/ScheduleRoot.tsx index 1e6eafc95ad27..c980f05650fb9 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/schedules/ScheduleRoot.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/schedules/ScheduleRoot.tsx @@ -133,7 +133,11 @@ export const ScheduleRoot = (props: Props) => { tabs={tabs} /> ) : ( - + )} ); diff --git a/js_modules/dagster-ui/packages/ui-core/src/sensors/SensorPageAutomaterialize.tsx b/js_modules/dagster-ui/packages/ui-core/src/sensors/SensorPageAutomaterialize.tsx index 747d5e3600db5..1ac733ab8877c 100644 --- a/js_modules/dagster-ui/packages/ui-core/src/sensors/SensorPageAutomaterialize.tsx +++ b/js_modules/dagster-ui/packages/ui-core/src/sensors/SensorPageAutomaterialize.tsx @@ -218,6 +218,7 @@ export const SensorPageAutomaterialize = (props: Props) => { )} diff --git a/python_modules/dagster/dagster/_core/definitions/automation_tick_evaluation_context.py b/python_modules/dagster/dagster/_core/definitions/automation_tick_evaluation_context.py index 416851a12540e..cf19197e7e34e 100644 --- a/python_modules/dagster/dagster/_core/definitions/automation_tick_evaluation_context.py +++ b/python_modules/dagster/dagster/_core/definitions/automation_tick_evaluation_context.py @@ -286,6 +286,9 @@ def build_run_requests( run_tags: Optional[Mapping[str, str]], emit_backfills: bool, ) -> Sequence[RunRequest]: + """For a single asset in a given tick, the asset will only be part of a run or a backfill, not both. + If the asset is targetd by a backfill, there will only be one backfill that targets the asset. + """ if emit_backfills: backfill_run_request, entity_subsets = _build_backfill_request( entity_subsets, asset_graph, run_tags