Skip to content

Commit 8dc0c9c

Browse files
committed
fix: Use fabric connect for status checks
1 parent 5cdfea5 commit 8dc0c9c

File tree

3 files changed

+26
-25
lines changed

3 files changed

+26
-25
lines changed

src/config/useInstanceClient.tsx

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ import { useParams } from '@tanstack/react-router';
66
import { useMemo } from 'react';
77

88
interface UseParams {
9+
clusterId?: string;
10+
disableFabricConnect?: boolean;
11+
forceFabricConnect?: boolean;
12+
instanceId?: string;
913
operationsUrl?: string | null;
1014
port?: number;
1115
secure?: boolean;
12-
disableFabricConnect?: boolean;
13-
instanceId?: string;
14-
clusterId?: string;
1516
}
1617

1718
export function useInstanceClient(
@@ -46,31 +47,22 @@ export function useInstanceClientIdParams(
4647
params.port,
4748
params.secure,
4849
params.disableFabricConnect,
50+
params.forceFabricConnect,
4951
],
5052
);
5153
}
5254

5355
export function getInstanceClientIdFromParams({
5456
instanceId,
5557
clusterId,
56-
operationsUrl,
57-
port,
58-
secure,
59-
disableFabricConnect,
60-
}: {
61-
instanceId?: string;
62-
clusterId?: string;
63-
operationsUrl?: string | null;
64-
port?: number;
65-
secure?: boolean;
66-
disableFabricConnect?: boolean;
67-
}): InstanceClientIdConfig & InstanceTypeConfig {
58+
...params
59+
}: UseParams): InstanceClientIdConfig & InstanceTypeConfig {
6860
const id = isLocalStudio ? OverallAppSignIn : instanceId ?? clusterId;
6961
if (!id) {
7062
throw new Error('id could not be automatically calculated in useInstanceClientIdParams');
7163
}
7264
return {
73-
instanceClient: getInstanceClient({ id, operationsUrl, port, secure, disableFabricConnect }),
65+
instanceClient: getInstanceClient({ id, ...params }),
7466
entityId: id,
7567
entityType: (isLocalStudio || instanceId) ? 'instance' : 'cluster',
7668
};

src/features/cluster/InstanceStatusCell.tsx

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,37 @@ import { LoaderCircleIcon, ShieldCheckIcon, ShieldXIcon } from 'lucide-react';
1212
import { useEffect, useMemo, useState } from 'react';
1313

1414
export function InstanceStatusCell(
15-
{ instance }: { readonly instance: Instance },
15+
{ instance, index }: { readonly instance: Instance; index: number },
1616
) {
17-
const operationsUrl = useMemo(() => getOperationsUrlForInstance(instance), [instance]);
18-
const instanceParams = useInstanceClientIdParams({ operationsUrl, instanceId: instance.id });
1917
const { update: canManage } = useOrganizationClusterInstancePermissions();
18+
const operationsUrl = useMemo(() => getOperationsUrlForInstance(instance), [instance]);
19+
const instanceParams = useInstanceClientIdParams({
20+
operationsUrl,
21+
instanceId: instance.id,
22+
forceFabricConnect: true,
23+
});
2024
const { mutate: setStatus, isPending: isSettingStatus } = useSetStatus();
2125

22-
// We want to spread the initial requests across 5 seconds.
23-
const [randomOffset] = useState(() => Math.floor(Math.random() * 5_000));
2426
const [ready, setReady] = useState(false);
2527

28+
// Spread the status requests out.
2629
useEffect(() => {
27-
const timer = setTimeout(() => setReady(true), randomOffset);
30+
const timer = setTimeout(() => setReady(true), index * 500);
2831
return () => clearTimeout(timer);
29-
}, [randomOffset]);
32+
}, [index]);
3033

31-
const { data: statusResponse, isLoading, isFetching } = useQuery(getStatusQueryOptions(instanceParams, ready));
34+
const { data: statusResponse, isLoading, isFetching } = useQuery(
35+
getStatusQueryOptions(instanceParams, ready && canManage),
36+
);
3237

3338
const systemStatus = getSystemStatusById(statusResponse, 'availability') || 'Unknown';
3439
const isAvailable = systemStatus === 'Available';
3540
const isUnavailable = systemStatus === 'Unavailable';
3641

42+
if (!canManage) {
43+
return null;
44+
}
45+
3746
return (
3847
<div className="flex items-center gap-2">
3948
<Tooltip>

src/features/cluster/Instances.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export function Instances() {
6666
const status = cell.getValue() as string;
6767
return (
6868
<div className="flex items-center gap-2">
69-
<InstanceStatusCell instance={cell.row.original} />
69+
<InstanceStatusCell instance={cell.row.original} index={cell.row.index} />
7070
{status ? <Badge variant={renderBadgeStatusVariant(status)}>{capitalizeWords(status)}</Badge> : null}
7171
</div>
7272
);

0 commit comments

Comments
 (0)