This is an automated email from the ASF dual-hosted git repository.

jedcunningham pushed a commit to branch v2-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 8a9f0afe39d3e5e6f72fb7c692cdd0da51712824
Author: Brent Bovenzi <[email protected]>
AuthorDate: Thu Sep 22 15:39:14 2022 -0400

    Fix grid view log try numbers (#26556)
    
    * redo how try numbers are displayed in grid view logs
    
    * rename attempt -> tryNumber
    
    (cherry picked from commit 6a69ad033fdc224aee14b8c83fdc1b672d17ac20)
---
 .../dag/details/taskInstance/Logs/index.test.tsx   | 16 ++++++-------
 .../js/dag/details/taskInstance/Logs/index.tsx     | 28 ++++++++++++----------
 2 files changed, 23 insertions(+), 21 deletions(-)

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 d44f318b05..7a94fd64fc 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 a5324f2c88..8b35c3bc3a 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<Array<number>> =>
   const externalIndexes: Array<number> = [];
 
   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<number | 
undefined>();
   const [shouldRequestFullContent, setShouldRequestFullContent] = 
useState(false);
   const [wrap, setWrap] = useState(getMetaValue('default_wrap') === 'True');
   const [logLevelFilters, setLogLevelFilters] = 
useState<Array<LogLevelOption>>([]);
   const [fileSourceFilters, setFileSourceFilters] = 
useState<Array<FileSourceOption>>([]);
   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) => (
                 <Button
                   key={index}
-                  variant={selectedAttempt === index ? 'solid' : 'ghost'}
+                  variant={taskTryNumber === index ? 'solid' : 'ghost'}
                   colorScheme="blue"
-                  onClick={() => setSelectedAttempt(index)}
+                  onClick={() => setSelectedTryNumber(index)}
                   data-testid={`log-attempt-select-button-${index}`}
                 >
                   {index}

Reply via email to