+
+
+ {tableCopyStates && (
+
+ )}
+
Recent Logs
+ {streams.map((stream) => (
+
+
+
+ ))}
+
+ );
+};
diff --git a/web/vtadmin/src/components/routes/workflow/WorkflowStreams.tsx b/web/vtadmin/src/components/routes/workflow/WorkflowStreams.tsx
index 6c9bcae2dfa..ef521406e3d 100644
--- a/web/vtadmin/src/components/routes/workflow/WorkflowStreams.tsx
+++ b/web/vtadmin/src/components/routes/workflow/WorkflowStreams.tsx
@@ -14,14 +14,14 @@
* limitations under the License.
*/
-import { orderBy, groupBy } from 'lodash-es';
+import { groupBy, orderBy } from 'lodash-es';
import React, { useMemo } from 'react';
import { Link } from 'react-router-dom';
import { useWorkflow } from '../../../hooks/api';
import { formatAlias } from '../../../util/tablets';
import { formatDateTime } from '../../../util/time';
-import { getStreams, formatStreamKey, getStreamSource, getStreamTarget } from '../../../util/workflows';
+import { formatStreamKey, getStreams, getStreamSource, getStreamTarget } from '../../../util/workflows';
import { DataCell } from '../../dataTable/DataCell';
import { DataTable } from '../../dataTable/DataTable';
import { TabletLink } from '../../links/TabletLink';
@@ -29,6 +29,7 @@ import { StreamStatePip } from '../../pips/StreamStatePip';
import { WorkflowStreamsLagChart } from '../../charts/WorkflowStreamsLagChart';
import { ShardLink } from '../../links/ShardLink';
import { env } from '../../../util/env';
+import { ThrottleThresholdSeconds } from '../Workflows';
interface Props {
clusterID: string;
@@ -61,17 +62,25 @@ export const WorkflowStreams = ({ clusterID, keyspace, name }: Props) => {
const source = getStreamSource(row);
const target = getStreamTarget(row, keyspace);
-
+ var isThrottled =
+ Number(row?.throttler_status?.time_throttled?.seconds) > Date.now() / 1000 - ThrottleThresholdSeconds;
+ const rowState = isThrottled ? 'Throttled' : row.state;
return (