diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx index d44f318b05cf3..7a94fd64fce08 100644 --- a/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx +++ b/airflow/www/static/js/dag/details/taskInstance/Logs/index.test.tsx @@ -85,7 +85,7 @@ describe('Test Logs Component.', () => { dagRunId: 'dummyDagRunId', fullContent: false, taskId: 'dummyTaskId', - taskTryNumber: 1, + taskTryNumber: 2, }); }); @@ -146,7 +146,7 @@ describe('Test Logs Component.', () => { fullContent: false, mapIndex: 1, taskId: 'dummyTaskId', - taskTryNumber: 1, + taskTryNumber: 2, }); }); @@ -172,18 +172,18 @@ describe('Test Logs Component.', () => { dagRunId: 'dummyDagRunId', fullContent: false, taskId: 'dummyTaskId', - taskTryNumber: 1, + taskTryNumber: 2, }); - const attemptButton2 = getByTestId('log-attempt-select-button-2'); + const attemptButton1 = getByTestId('log-attempt-select-button-1'); - fireEvent.click(attemptButton2); + fireEvent.click(attemptButton1); expect(useTaskLogMock).toHaveBeenLastCalledWith({ dagId: 'dummyDagId', dagRunId: 'dummyDagRunId', fullContent: false, taskId: 'dummyTaskId', - taskTryNumber: 2, + taskTryNumber: 1, }); }); @@ -203,7 +203,7 @@ describe('Test Logs Component.', () => { dagRunId: 'dummyDagRunId', fullContent: false, taskId: 'dummyTaskId', - taskTryNumber: 1, + taskTryNumber: 2, }); const fullContentCheckbox = getByTestId('full-content-checkbox'); @@ -214,7 +214,7 @@ describe('Test Logs Component.', () => { dagRunId: 'dummyDagRunId', fullContent: true, taskId: 'dummyTaskId', - taskTryNumber: 1, + taskTryNumber: 2, }); }); }); diff --git a/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx b/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx index a5324f2c88287..8b35c3bc3a44f 100644 --- a/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx +++ b/airflow/www/static/js/dag/details/taskInstance/Logs/index.tsx @@ -61,13 +61,12 @@ const getLinkIndexes = (tryNumber: number | undefined): Array> => const externalIndexes: Array = []; if (tryNumber) { - [...Array(tryNumber + 1 || 0)].forEach((_, index) => { - if (index === 0 && tryNumber < 2) return; - const isExternal = index !== 0 && showExternalLogRedirect; - if (isExternal) { - externalIndexes.push(index); + [...Array(tryNumber)].forEach((_, index) => { + const tryNum = index + 1; + if (showExternalLogRedirect) { + externalIndexes.push(tryNum); } else { - internalIndexes.push(index); + internalIndexes.push(tryNum); } }); } @@ -99,18 +98,21 @@ const Logs = ({ tryNumber, }: Props) => { const [internalIndexes, externalIndexes] = getLinkIndexes(tryNumber); - const [selectedAttempt, setSelectedAttempt] = useState(1); + const [selectedTryNumber, setSelectedTryNumber] = useState(); const [shouldRequestFullContent, setShouldRequestFullContent] = useState(false); const [wrap, setWrap] = useState(getMetaValue('default_wrap') === 'True'); const [logLevelFilters, setLogLevelFilters] = useState>([]); const [fileSourceFilters, setFileSourceFilters] = useState>([]); const { timezone } = useTimezone(); + + // + const taskTryNumber = selectedTryNumber || tryNumber || 1; const { data, isSuccess } = useTaskLog({ dagId, dagRunId, taskId, mapIndex, - taskTryNumber: selectedAttempt, + taskTryNumber, fullContent: shouldRequestFullContent, }); @@ -144,8 +146,8 @@ const Logs = ({ useEffect(() => { // Reset fileSourceFilters and selected attempt when changing to // a task that do not have those filters anymore. - if (!internalIndexes.includes(selectedAttempt) && internalIndexes.length) { - setSelectedAttempt(internalIndexes[0]); + if (taskTryNumber > (tryNumber || 1)) { + setSelectedTryNumber(undefined); } if (data && fileSourceFilters.length > 0 @@ -155,7 +157,7 @@ const Logs = ({ )) { setFileSourceFilters([]); } - }, [data, internalIndexes, fileSourceFilters, fileSources, selectedAttempt]); + }, [data, fileSourceFilters, fileSources, taskTryNumber, tryNumber]); return ( <> @@ -167,9 +169,9 @@ const Logs = ({ {internalIndexes.map((index) => (