You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by bb...@apache.org on 2022/04/05 19:20:01 UTC
[airflow] branch reduce-tree-data-size updated: Remove extraneous treeData fields
This is an automated email from the ASF dual-hosted git repository.
bbovenzi pushed a commit to branch reduce-tree-data-size
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/reduce-tree-data-size by this push:
new c338832ffa Remove extraneous treeData fields
c338832ffa is described below
commit c338832ffa063764f96e3a6e560f6b45de0b218e
Author: Brent Bovenzi <br...@gmail.com>
AuthorDate: Tue Apr 5 15:09:58 2022 -0400
Remove extraneous treeData fields
---
.../js/tree/details/content/dagRun/index.jsx | 2 +-
.../tree/details/content/taskInstance/Details.jsx | 21 +++++----
.../js/tree/details/content/taskInstance/Nav.jsx | 12 ++---
.../js/tree/details/content/taskInstance/index.jsx | 52 +++++++++++++---------
.../taskInstance/taskActions/MarkFailed.jsx | 2 +-
airflow/www/static/js/tree/treeDataUtils.js | 2 +-
airflow/www/utils.py | 7 ---
7 files changed, 50 insertions(+), 48 deletions(-)
diff --git a/airflow/www/static/js/tree/details/content/dagRun/index.jsx b/airflow/www/static/js/tree/details/content/dagRun/index.jsx
index 68e6d6526a..fd609b7ad0 100644
--- a/airflow/www/static/js/tree/details/content/dagRun/index.jsx
+++ b/airflow/www/static/js/tree/details/content/dagRun/index.jsx
@@ -37,6 +37,7 @@ import ClearRun from './ClearRun';
import { useTreeData } from '../../../api';
import { appendSearchParams, getMetaValue } from '../../../../utils';
+const dagId = getMetaValue('dag_id');
const graphUrl = getMetaValue('graph_url');
const dagRunDetailsUrl = getMetaValue('dagrun_details_url');
@@ -46,7 +47,6 @@ const DagRun = ({ runId }) => {
if (!run) return null;
const {
executionDate,
- dagId,
state,
runType,
duration,
diff --git a/airflow/www/static/js/tree/details/content/taskInstance/Details.jsx b/airflow/www/static/js/tree/details/content/taskInstance/Details.jsx
index 44294f51f7..1ae907b00c 100644
--- a/airflow/www/static/js/tree/details/content/taskInstance/Details.jsx
+++ b/airflow/www/static/js/tree/details/content/taskInstance/Details.jsx
@@ -29,8 +29,8 @@ import { getDuration, formatDuration } from '../../../../datetime_utils';
import { SimpleStatus } from '../../../StatusBox';
import Time from '../../../Time';
-const Details = ({ instance, task }) => {
- const isGroup = !!task.children;
+const Details = ({ instance, group, operator }) => {
+ const isGroup = !!group.children;
const groupSummary = [];
const mapSummary = [];
@@ -38,16 +38,21 @@ const Details = ({ instance, task }) => {
taskId,
runId,
duration,
- operator,
startDate,
endDate,
state,
mappedStates,
} = instance;
+ const {
+ isMapped,
+ children,
+ tooltip,
+ } = group;
+
if (isGroup) {
const numMap = finalStatesMap();
- task.children.forEach((child) => {
+ children.forEach((child) => {
const taskInstance = child.instances.find((ti) => ti.runId === runId);
if (taskInstance) {
const stateKey = taskInstance.state == null ? 'no_status' : taskInstance.state;
@@ -68,7 +73,7 @@ const Details = ({ instance, task }) => {
});
}
- if (task.isMapped && mappedStates) {
+ if (isMapped && mappedStates) {
const numMap = finalStatesMap();
mappedStates.forEach((s) => {
const stateKey = s || 'no_status';
@@ -94,8 +99,8 @@ const Details = ({ instance, task }) => {
return (
<Flex flexWrap="wrap" justifyContent="space-between">
<Box>
- {task.tooltip && (
- <Text>{task.tooltip}</Text>
+ {tooltip && (
+ <Text>{tooltip}</Text>
)}
<Flex alignItems="center">
<Text as="strong">Status:</Text>
@@ -109,7 +114,7 @@ const Details = ({ instance, task }) => {
{groupSummary}
</>
)}
- {task.isMapped && (
+ {isMapped && (
<>
<br />
<Text as="strong">
diff --git a/airflow/www/static/js/tree/details/content/taskInstance/Nav.jsx b/airflow/www/static/js/tree/details/content/taskInstance/Nav.jsx
index d0841d0119..17b423130a 100644
--- a/airflow/www/static/js/tree/details/content/taskInstance/Nav.jsx
+++ b/airflow/www/static/js/tree/details/content/taskInstance/Nav.jsx
@@ -27,6 +27,7 @@ import {
import { getMetaValue, appendSearchParams } from '../../../../utils';
+const dagId = getMetaValue('dag_id');
const isK8sExecutor = getMetaValue('k8s_or_k8scelery_executor') === 'True';
const numRuns = getMetaValue('num_runs');
const baseDate = getMetaValue('base_date');
@@ -40,14 +41,9 @@ const gridUrlNoRoot = getMetaValue('grid_url_no_root');
const LinkButton = ({ children, ...rest }) => (<Button as={Link} variant="ghost" colorScheme="blue" {...rest}>{children}</Button>);
-const Nav = ({ instance, isMapped }) => {
- const {
- taskId,
- dagId,
- operator,
- executionDate,
- } = instance;
-
+const Nav = ({
+ taskId, executionDate, operator, isMapped,
+}) => {
const params = new URLSearchParams({
task_id: taskId,
execution_date: executionDate,
diff --git a/airflow/www/static/js/tree/details/content/taskInstance/index.jsx b/airflow/www/static/js/tree/details/content/taskInstance/index.jsx
index 1e787c7aba..93d22dbde7 100644
--- a/airflow/www/static/js/tree/details/content/taskInstance/index.jsx
+++ b/airflow/www/static/js/tree/details/content/taskInstance/index.jsx
@@ -34,8 +34,11 @@ import Logs from './Logs';
import TaskNav from './Nav';
import Details from './Details';
-import { useTreeData } from '../../../api';
+import { useTreeData, useTasks } from '../../../api';
import MappedInstances from './MappedInstances';
+import { getMetaValue } from '../../../../utils';
+
+const dagId = getMetaValue('dag_id');
const getTask = ({ taskId, runId, task }) => {
if (task.id === taskId) return task;
@@ -51,57 +54,62 @@ const getTask = ({ taskId, runId, task }) => {
};
const TaskInstance = ({ taskId, runId }) => {
- const { data: { groups = {} } } = useTreeData();
- const task = getTask({ taskId, runId, task: groups });
- if (!task) return null;
-
- const isGroup = !!task.children;
+ const { data: { groups = {}, dagRuns = [] } } = useTreeData();
+ const group = getTask({ taskId, runId, task: groups });
+ const run = dagRuns.find((r) => r.runId === runId);
+ const { executionDate } = run;
+ const { data: { tasks } } = useTasks(dagId);
+ if (!group) return null;
+ const task = tasks.find((t) => t.taskId === taskId);
+ const operator = task && task.classRef && task.classRef.className ? task.classRef.className : '';
- const instance = task.instances.find((ti) => ti.runId === runId);
+ const isGroup = !!group.children;
+ const { isMapped, extraLinks } = group;
- const {
- dagId,
- executionDate,
- tryNumber,
- } = instance;
+ const instance = group.instances.find((ti) => ti.runId === runId);
return (
<Box fontSize="12px" py="4px">
{!isGroup && (
- <TaskNav instance={instance} isMapped={task.isMapped} />
+ <TaskNav
+ taskId={taskId}
+ isMapped={isMapped}
+ executionDate={executionDate}
+ operator={operator}
+ />
)}
{!isGroup && (
<>
<VStack justifyContent="center" divider={<StackDivider my={3} />} my={3}>
- <RunAction runId={runId} taskId={task.id} dagId={dagId} />
+ <RunAction runId={runId} taskId={taskId} dagId={dagId} />
<ClearAction
runId={runId}
- taskId={task.id}
+ taskId={taskId}
dagId={dagId}
executionDate={executionDate}
/>
- <MarkFailedAction runId={runId} taskId={task.id} dagId={dagId} />
- <MarkSuccessAction runId={runId} taskId={task.id} dagId={dagId} />
+ <MarkFailedAction runId={runId} taskId={taskId} dagId={dagId} />
+ <MarkSuccessAction runId={runId} taskId={taskId} dagId={dagId} />
</VStack>
<Divider my={2} />
</>
)}
- {!task.isMapped && (
+ {!isMapped && (
<Logs
dagId={dagId}
taskId={taskId}
executionDate={executionDate}
- tryNumber={tryNumber}
+ tryNumber={instance.tryNumber}
/>
)}
- <Details instance={instance} task={task} />
+ <Details instance={instance} group={group} operator={operator} />
<ExtraLinks
taskId={taskId}
dagId={dagId}
executionDate={executionDate}
- extraLinks={task.extraLinks}
+ extraLinks={extraLinks}
/>
- {task.isMapped && (
+ {isMapped && (
<MappedInstances dagId={dagId} runId={runId} taskId={taskId} />
)}
</Box>
diff --git a/airflow/www/static/js/tree/details/content/taskInstance/taskActions/MarkFailed.jsx b/airflow/www/static/js/tree/details/content/taskInstance/taskActions/MarkFailed.jsx
index 7b61de388e..fe277c9eef 100644
--- a/airflow/www/static/js/tree/details/content/taskInstance/taskActions/MarkFailed.jsx
+++ b/airflow/www/static/js/tree/details/content/taskInstance/taskActions/MarkFailed.jsx
@@ -72,7 +72,7 @@ const MarkFailed = ({
setAffectedTasks(data);
onOpen();
} catch (e) {
- console.log(e);
+ console.error(e);
}
};
diff --git a/airflow/www/static/js/tree/treeDataUtils.js b/airflow/www/static/js/tree/treeDataUtils.js
index 680f2e63ac..95171652b7 100644
--- a/airflow/www/static/js/tree/treeDataUtils.js
+++ b/airflow/www/static/js/tree/treeDataUtils.js
@@ -19,7 +19,7 @@
import camelcaseKeys from 'camelcase-keys';
-export const areActiveRuns = (runs) => runs.filter((run) => ['queued', 'running', 'scheduled'].includes(run.state)).length > 0;
+export const areActiveRuns = (runs = []) => runs.filter((run) => ['queued', 'running', 'scheduled'].includes(run.state)).length > 0;
export const formatData = (data, emptyData) => {
if (!data || !Object.keys(data).length) {
diff --git a/airflow/www/utils.py b/airflow/www/utils.py
index fc4c391660..b07cd0f44f 100644
--- a/airflow/www/utils.py
+++ b/airflow/www/utils.py
@@ -110,15 +110,12 @@ def get_mapped_summary(parent_instance, task_instances):
)
return {
- 'dag_id': parent_instance.dag_id,
'task_id': parent_instance.task_id,
'run_id': parent_instance.run_id,
'state': group_state,
'start_date': group_start_date,
'end_date': group_end_date,
'mapped_states': mapped_states,
- 'operator': parent_instance.operator,
- 'execution_date': datetime_to_string(parent_instance.execution_date),
'try_number': parent_instance.try_number,
}
@@ -134,15 +131,12 @@ def encode_ti(
return {
'task_id': task_instance.task_id,
- 'dag_id': task_instance.dag_id,
'run_id': task_instance.run_id,
'map_index': task_instance.map_index,
'state': task_instance.state,
'duration': task_instance.duration,
'start_date': datetime_to_string(task_instance.start_date),
'end_date': datetime_to_string(task_instance.end_date),
- 'operator': task_instance.operator,
- 'execution_date': datetime_to_string(task_instance.execution_date),
'try_number': task_instance.try_number,
}
@@ -152,7 +146,6 @@ def encode_dag_run(dag_run: Optional[models.DagRun]) -> Optional[Dict[str, Any]]
return None
return {
- 'dag_id': dag_run.dag_id,
'run_id': dag_run.run_id,
'start_date': datetime_to_string(dag_run.start_date),
'end_date': datetime_to_string(dag_run.end_date),