From d53a08ea0cc9a9af1a3071969d41165e8a6ff5d5 Mon Sep 17 00:00:00 2001 From: Stephen Smith Date: Tue, 1 Aug 2023 21:47:53 -0400 Subject: [PATCH] 20219: Start / stop log polling when container is running Arvados-DCO-1.1-Signed-off-by: Stephen Smith --- cypress/integration/process.spec.js | 8 ++++++++ src/store/processes/process.ts | 4 ++++ src/views/process-panel/process-log-card.tsx | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/cypress/integration/process.spec.js b/cypress/integration/process.spec.js index 00a6631b..b41a443e 100644 --- a/cypress/integration/process.spec.js +++ b/cypress/integration/process.spec.js @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: AGPL-3.0 +import { ContainerState } from 'models/container'; + describe('Process tests', function() { let activeUser; let adminUser; @@ -415,6 +417,12 @@ describe('Process tests', function() { describe('Logs panel', function() { it('shows live process logs', function() { + cy.intercept({method: 'GET', url: '**/arvados/v1/containers/*'}, (req) => { + req.reply((res) => { + res.body.state = ContainerState.RUNNING; + }); + }); + const crName = 'test_container_request'; createContainerRequest( activeUser, diff --git a/src/store/processes/process.ts b/src/store/processes/process.ts index e6219498..526629cd 100644 --- a/src/store/processes/process.ts +++ b/src/store/processes/process.ts @@ -185,6 +185,10 @@ export const getProcessStatus = ({ containerRequest, container }: Process): Proc } }; +export const isProcessRunning = ({ container }: Process): boolean => ( + container?.state === ContainerState.RUNNING +); + export const isProcessRunnable = ({ containerRequest }: Process): boolean => ( containerRequest.state === ContainerRequestState.UNCOMMITTED ); diff --git a/src/views/process-panel/process-log-card.tsx b/src/views/process-panel/process-log-card.tsx index bcd4b240..4fd8f234 100644 --- a/src/views/process-panel/process-log-card.tsx +++ b/src/views/process-panel/process-log-card.tsx @@ -29,7 +29,7 @@ import { WordWrapOffIcon, WordWrapOnIcon, } from 'components/icon/icon'; -import { Process } from 'store/processes/process'; +import { Process, isProcessRunning } from 'store/processes/process'; import { MPVPanelProps } from 'components/multi-panel-view/multi-panel-view'; import { FilterOption, @@ -105,7 +105,7 @@ export const ProcessLogsCard = withStyles(styles)( useAsyncInterval(() => ( pollProcessLogs(process.containerRequest.uuid) - ), 2000); + ), isProcessRunning(process) ? 2000 : null); return -- 2.39.5