From 858edca5f59ce664eb0d859dbe6562edb98b5dcf Mon Sep 17 00:00:00 2001 From: Tristan Timblin Date: Fri, 1 Dec 2023 11:42:43 -0800 Subject: [PATCH] CEC-5431: increase concurrency (#487) * increase concurrency * fix unmounted component leak --- src/components/BulkActions/actions/Cancel.jsx | 2 +- src/components/BulkActions/actions/Diagnostic.jsx | 2 +- src/components/BulkActions/actions/Redeploy.jsx | 2 +- src/components/BulkActions/actions/SendSMS.jsx | 2 +- src/components/BulkActions/actions/UpdateConfig.jsx | 2 +- src/components/Fleets/Status/Vehicles/Table/index.jsx | 8 ++++++-- src/hooks/useUpdateManifest.js | 2 +- 7 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/components/BulkActions/actions/Cancel.jsx b/src/components/BulkActions/actions/Cancel.jsx index db144e4..cca5a10 100644 --- a/src/components/BulkActions/actions/Cancel.jsx +++ b/src/components/BulkActions/actions/Cancel.jsx @@ -14,7 +14,7 @@ export default forwardRef(({ useImperativeHandle(ref, () => ({ async submit() { return new Promise((resolve, reject) => { - const taskRunner = new TaskRunner(5, ids.length); + const taskRunner = new TaskRunner(30, ids.length); let errorCount = 0; const task = (id, index) => { diff --git a/src/components/BulkActions/actions/Diagnostic.jsx b/src/components/BulkActions/actions/Diagnostic.jsx index 665424d..8030997 100644 --- a/src/components/BulkActions/actions/Diagnostic.jsx +++ b/src/components/BulkActions/actions/Diagnostic.jsx @@ -18,7 +18,7 @@ const commands = [ async function getECUsByVINs(vins, token) { return new Promise((resolve, reject) => { - const taskRunner = new TaskRunner(10, vins.length); + const taskRunner = new TaskRunner(30, vins.length); const task = (vin) => { return async () => api.getECUs({ vin, unique: true }, token) diff --git a/src/components/BulkActions/actions/Redeploy.jsx b/src/components/BulkActions/actions/Redeploy.jsx index 4e81e4b..5e00b92 100644 --- a/src/components/BulkActions/actions/Redeploy.jsx +++ b/src/components/BulkActions/actions/Redeploy.jsx @@ -14,7 +14,7 @@ export default forwardRef(({ useImperativeHandle(ref, () => ({ async submit() { return new Promise((resolve, reject) => { - const taskRunner = new TaskRunner(5, ids.length); + const taskRunner = new TaskRunner(30, ids.length); let errorCount = 0; const task = (id, index) => { diff --git a/src/components/BulkActions/actions/SendSMS.jsx b/src/components/BulkActions/actions/SendSMS.jsx index 0d2cd6e..25c6188 100644 --- a/src/components/BulkActions/actions/SendSMS.jsx +++ b/src/components/BulkActions/actions/SendSMS.jsx @@ -23,7 +23,7 @@ export default forwardRef(({ useImperativeHandle(ref, () => ({ async submit() { return new Promise((resolve) => { - const taskRunner = new TaskRunner(5, ids.length); + const taskRunner = new TaskRunner(30, ids.length); ids.forEach((vin) => { taskRunner.push(async () => { diff --git a/src/components/BulkActions/actions/UpdateConfig.jsx b/src/components/BulkActions/actions/UpdateConfig.jsx index f8e411b..b86f4d9 100644 --- a/src/components/BulkActions/actions/UpdateConfig.jsx +++ b/src/components/BulkActions/actions/UpdateConfig.jsx @@ -20,7 +20,7 @@ export default forwardRef(({ useImperativeHandle(ref, () => ({ async submit() { return new Promise((resolve, reject) => { - const taskRunner = new TaskRunner(5, ids.length); + const taskRunner = new TaskRunner(30, ids.length); let errorCount = 0; const task = (vin, index) => { diff --git a/src/components/Fleets/Status/Vehicles/Table/index.jsx b/src/components/Fleets/Status/Vehicles/Table/index.jsx index 29edc23..9d17123 100644 --- a/src/components/Fleets/Status/Vehicles/Table/index.jsx +++ b/src/components/Fleets/Status/Vehicles/Table/index.jsx @@ -12,7 +12,7 @@ import { } from "@material-ui/core"; import AddCircleIcon from "@material-ui/icons/AddCircle"; import clsx from "clsx"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, useRef } from "react"; import { Link } from "react-router-dom"; import { logger } from "../../../../../services/monitoring"; @@ -70,6 +70,7 @@ const MainForm = ({ name }) => { const [order, setOrder] = useState("desc"); const [search, setSearch] = useState(""); const [selected, setSelected] = useState([]); + const componentMounted = useRef(true); const classes = useStyles(); const { setMessage } = useStatusContext(); const { @@ -103,7 +104,9 @@ const MainForm = ({ name }) => { }, token ); - watchFleetVehicles.start({ token }); + if (componentMounted.current) { + watchFleetVehicles.start({ token }); + } } catch (e) { setMessage(e.message); logger.warn(e.stack); @@ -111,6 +114,7 @@ const MainForm = ({ name }) => { } })(); return () => { + componentMounted.current = false; watchFleetVehicles.end(); } // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/src/hooks/useUpdateManifest.js b/src/hooks/useUpdateManifest.js index 39b0b9b..5fdba93 100644 --- a/src/hooks/useUpdateManifest.js +++ b/src/hooks/useUpdateManifest.js @@ -8,7 +8,7 @@ export const useUpdateManifest = (token) => { const remove = async () => { return new Promise((resolve) => { - const taskRunner = new TaskRunner(5, updateManifestIds.length); + const taskRunner = new TaskRunner(30, updateManifestIds.length); let errorCount = 0; const task = (id) => {