Skip to content

Commit 9dfe04c

Browse files
committed
Use new workers field on ListWorkersResponse if it exists
1 parent 3950fff commit 9dfe04c

4 files changed

Lines changed: 58 additions & 33 deletions

File tree

src/lib/components/workers/workers-table/workers-table-row.svelte

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import SdkLogo from '$lib/components/lines-and-dots/sdk-logo.svelte';
33
import { timestamp } from '$lib/components/timestamp.svelte';
44
import WorkerStatus from '$lib/components/workers/worker-status.svelte';
5-
import type { WorkerInfo } from '$lib/types';
5+
import type { WorkerHeartbeat, WorkerListInfo } from '$lib/types';
66
import { formatSDKName } from '$lib/utilities/get-sdk-version';
77
import { createFilter } from '$lib/utilities/query/to-list-workflow-filters';
88
import {
@@ -14,15 +14,13 @@
1414
import WorkersTableCell from './workers-table-cell.svelte';
1515
1616
interface Props {
17-
worker: WorkerInfo;
17+
worker: WorkerListInfo | WorkerHeartbeat;
1818
namespace: string;
1919
filterable?: boolean;
2020
}
2121
2222
let { worker, namespace, filterable = false }: Props = $props();
23-
const status = $derived(
24-
toWorkerStatusReadable(worker.workerHeartbeat?.status),
25-
);
23+
const status = $derived(toWorkerStatusReadable(worker?.status));
2624
</script>
2725

2826
<tr>
@@ -31,77 +29,81 @@
3129
</td>
3230
<WorkersTableCell
3331
attribute="WorkerInstanceKey"
34-
value={worker.workerHeartbeat?.workerInstanceKey}
35-
href={worker.workerHeartbeat?.workerInstanceKey
32+
value={worker?.workerInstanceKey}
33+
href={worker?.workerInstanceKey
3634
? routeForWorkerInstance({
3735
namespace,
38-
workerInstanceKey: worker.workerHeartbeat.workerInstanceKey,
36+
workerInstanceKey: worker.workerInstanceKey,
3937
})
4038
: undefined}
4139
{filterable}
4240
/>
4341
<WorkersTableCell
4442
attribute="DeploymentName"
45-
value={worker.workerHeartbeat?.deploymentVersion?.deploymentName}
46-
href={worker.workerHeartbeat?.deploymentVersion?.deploymentName
43+
value={worker?.deploymentVersion?.deploymentName}
44+
href={worker?.deploymentVersion?.deploymentName
4745
? routeForWorkerDeployment({
4846
namespace,
49-
deployment: worker.workerHeartbeat.deploymentVersion.deploymentName,
47+
deployment: worker.deploymentVersion.deploymentName,
5048
})
5149
: undefined}
5250
{filterable}
5351
/>
5452
<!-- TODO: Make Build ID filterable with DT-3745 -->
5553
<WorkersTableCell
5654
attribute="BuildId"
57-
value={worker.workerHeartbeat?.deploymentVersion?.buildId}
55+
value={worker?.deploymentVersion?.buildId}
5856
/>
5957
<WorkersTableCell
6058
attribute="TaskQueue"
61-
value={worker.workerHeartbeat?.taskQueue}
59+
value={worker?.taskQueue}
6260
{filterable}
6361
/>
6462
<WorkersTableCell
6563
attribute="WorkerIdentity"
66-
value={worker.workerHeartbeat?.workerIdentity}
64+
value={worker?.workerIdentity}
6765
{filterable}
6866
/>
6967
<WorkersTableCell
7068
attribute="HostName"
71-
value={worker.workerHeartbeat?.hostInfo?.hostName}
69+
value={'hostName' in worker
70+
? worker?.hostName
71+
: 'hostInfo' in worker
72+
? worker?.hostInfo?.hostName
73+
: ''}
7274
{filterable}
7375
/>
7476
<WorkersTableCell
7577
attribute="StartTime"
76-
value={$timestamp(worker.workerHeartbeat?.startTime)}
78+
value={$timestamp(worker?.startTime)}
7779
/>
7880
<WorkersTableCell
7981
copyable={false}
8082
{filterable}
8183
filters={[
82-
...(worker.workerHeartbeat?.sdkName
84+
...(worker?.sdkName
8385
? [
8486
createFilter({
8587
attribute: 'SdkName',
86-
value: worker.workerHeartbeat.sdkName,
88+
value: worker.sdkName,
8789
conditional: '=',
8890
}),
8991
]
9092
: []),
91-
...(worker.workerHeartbeat?.sdkVersion
93+
...(worker?.sdkVersion
9294
? [
9395
createFilter({
9496
attribute: 'SdkVersion',
95-
value: worker.workerHeartbeat.sdkVersion,
97+
value: worker.sdkVersion,
9698
conditional: '=',
9799
}),
98100
]
99101
: []),
100102
]}
101103
>
102104
<SdkLogo
103-
sdk={formatSDKName(worker.workerHeartbeat?.sdkName)}
104-
version={worker.workerHeartbeat?.sdkVersion ?? ''}
105+
sdk={formatSDKName(worker?.sdkName)}
106+
version={worker?.sdkVersion ?? ''}
105107
/>
106108
</WorkersTableCell>
107109
</tr>

src/lib/components/workers/workers-table/workers-table.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
} from '$lib/holocene/table/paginated-table/api-paginated.svelte';
88
import { translate } from '$lib/i18n/translate';
99
import { workflowRun } from '$lib/stores/workflow-run';
10-
import type { WorkerInfo } from '$lib/types';
10+
import type { WorkerHeartbeat, WorkerListInfo } from '$lib/types';
1111
import { isRunningWithNoWorkers } from '$lib/utilities/is-running-with-no-workers';
1212
1313
import WorkerHeartbeatsSDKAlert from './worker-heartbeats-sdk-warning.svelte';
@@ -17,7 +17,7 @@
1717
interface Props {
1818
filterable?: boolean;
1919
namespace: string;
20-
onFetch: () => Promise<PaginatedRequest<WorkerInfo>>;
20+
onFetch: () => Promise<PaginatedRequest<WorkerListInfo | WorkerHeartbeat>>;
2121
onError?: (err: unknown) => void;
2222
}
2323
@@ -59,7 +59,7 @@
5959
<th>{label}</th>
6060
{/each}
6161
</tr>
62-
{#each visibleItems as worker, i (worker.workerHeartbeat?.workerInstanceKey ?? i)}
62+
{#each visibleItems as worker, i (worker?.workerInstanceKey ?? i)}
6363
<WorkersTableRow {worker} {namespace} {filterable} />
6464
{/each}
6565

src/lib/services/worker-service.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@ import type {
33
DescribeWorkerResponse,
44
ListWorkersRequest,
55
ListWorkersResponse,
6-
WorkerInfo,
6+
WorkerHeartbeat,
7+
WorkerListInfo,
78
} from '$lib/types';
89
import { requestFromAPI } from '$lib/utilities/request-from-api';
910
import { routeForApi } from '$lib/utilities/route-for-api';
1011

1112
type PaginatedWorkerListPromise = (
1213
pageSize: number,
1314
token: string,
14-
) => Promise<{ items: WorkerInfo[]; nextPageToken: string }>;
15+
) => Promise<{
16+
items: WorkerHeartbeat[] | WorkerListInfo[];
17+
nextPageToken: string;
18+
}>;
1519

1620
export const fetchPaginatedWorkers = async (
1721
parameters: ListWorkersRequest,
@@ -26,9 +30,14 @@ export const fetchPaginatedWorkers = async (
2630
nextPageToken: token,
2731
...(parameters.query && { query: parameters.query }),
2832
},
29-
}).then(({ workersInfo, nextPageToken }) => {
33+
}).then(({ workersInfo, workers, nextPageToken }) => {
3034
return {
31-
items: workersInfo ?? [],
35+
items:
36+
workers ??
37+
workersInfo
38+
?.map(({ workerHeartbeat }) => workerHeartbeat)
39+
.filter((h): h is WorkerHeartbeat => !!h) ??
40+
[],
3241
nextPageToken: nextPageToken ? String(nextPageToken) : '',
3342
};
3443
});

src/lib/types/index.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ export type UnpauseWorkflowRequest =
5252
export type ListWorkersRequest =
5353
temporal.api.workflowservice.v1.IListWorkersRequest;
5454
export type ListWorkersResponse =
55-
temporal.api.workflowservice.v1.IListWorkersResponse;
55+
temporal.api.workflowservice.v1.IListWorkersResponse & {
56+
workers?: WorkerListInfo[];
57+
};
5658
export type DescribeWorkerRequest =
5759
temporal.api.workflowservice.v1.IDescribeWorkerRequest;
5860
export type DescribeWorkerResponse =
@@ -284,12 +286,24 @@ export type Failure = temporal.api.failure.v1.IFailure;
284286
export type WorkerHostInfo = temporal.api.worker.v1.IWorkerHostInfo & {
285287
workerGroupingKey?: string;
286288
};
287-
export type WorkerHeartbeat = temporal.api.worker.v1.IWorkerHeartbeat & {
288-
hostInfo?: WorkerHostInfo;
289-
};
289+
export type WorkerHeartbeat = temporal.api.worker.v1.IWorkerHeartbeat;
290290
export type WorkerPollerInfo = temporal.api.worker.v1.IWorkerPollerInfo;
291291
export type WorkerSlotsInfo = temporal.api.worker.v1.IWorkerSlotsInfo;
292292
export type WorkerInfo = temporal.api.worker.v1.IWorkerInfo;
293+
export type WorkerListInfo = {
294+
workerInstanceKey?: string | null;
295+
workerIdentity?: string | null;
296+
taskQueue?: string | null;
297+
deploymentVersion?: temporal.api.deployment.v1.IWorkerDeploymentVersion | null;
298+
sdkName?: string | null;
299+
sdkVersion?: string | null;
300+
status?: temporal.api.enums.v1.WorkerStatus | null;
301+
startTime?: google.protobuf.ITimestamp | null;
302+
hostName?: string | null;
303+
workerGroupingKey?: string | null;
304+
processId?: string | null;
305+
plugins?: temporal.api.worker.v1.IPluginInfo[] | null;
306+
};
293307
export type PluginInfo = temporal.api.worker.v1.PluginInfo;
294308

295309
// google

0 commit comments

Comments
 (0)