Skip to content

Commit 7594f70

Browse files
authored
feat: evict unhealthy VDisk (#2399)
1 parent cf3f6c0 commit 7594f70

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

src/components/VDisk/utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export function getVDiskLink(data: PreparedVDisk) {
1414
vDiskSlotId: data.VDiskSlotId,
1515
pDiskId: data.PDiskId,
1616
nodeId: data.NodeId,
17+
vDiskId: data.StringifiedId,
1718
});
1819
} else if (valueIsDefined(data.StringifiedId)) {
1920
vDiskPath = getVDiskPagePath({

src/containers/VDiskPage/VDiskPage.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,18 @@ export function VDiskPage() {
5555
? {nodeId, pDiskId, vDiskSlotId}
5656
: skipToken;
5757
const {
58-
currentData: vDiskData = {},
58+
currentData: vDiskData,
5959
isFetching,
6060
error,
6161
} = vDiskApi.useGetVDiskDataQuery(params, {
6262
pollingInterval: autoRefreshInterval,
6363
});
6464
const loading = isFetching && vDiskData === undefined;
65-
const {NodeHost, NodeId, NodeType, NodeDC, PDiskId, PDiskType, Severity, VDiskId} = vDiskData;
65+
const {NodeHost, NodeId, NodeType, NodeDC, PDiskId, PDiskType, Severity, VDiskId} =
66+
vDiskData || {};
6667

6768
const {GroupID, GroupGeneration, Ring, Domain, VDisk} =
68-
VDiskId || getVDiskIdFromString(vDiskIdParam) || {};
69+
VDiskId || (!loading && getVDiskIdFromString(vDiskIdParam)) || {};
6970
const vDiskIdParamsDefined =
7071
valueIsDefined(GroupID) &&
7172
valueIsDefined(GroupGeneration) &&
@@ -153,7 +154,7 @@ export function VDiskPage() {
153154
className={vDiskPageCn('title')}
154155
entityName={vDiskPageKeyset('vdisk')}
155156
status={getSeverityColor(Severity)}
156-
id={vDiskData?.StringifiedId ?? vDiskIdParam}
157+
id={vDiskData?.StringifiedId || (!loading && vDiskIdParam)}
157158
/>
158159
);
159160
};

src/utils/disks/prepareDisks.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {valueIsDefined} from '..';
12
import type {TPDiskStateInfo} from '../../types/api/pdisk';
23
import type {TVDiskStateInfo, TVSlotId} from '../../types/api/vdisk';
34
import {stringifyVdiskId} from '../dataFormatters/dataFormatters';
@@ -14,11 +15,16 @@ export function prepareWhiteboardVDiskData(
1415
if (!isFullVDiskData(vDiskState)) {
1516
const {NodeId, PDiskId, VSlotId} = vDiskState;
1617

17-
const StringifiedId = stringifyVdiskId({
18-
NodeId,
19-
PDiskId,
20-
VSlotId,
21-
});
18+
const vDiskId =
19+
valueIsDefined(VSlotId) && valueIsDefined(PDiskId) && valueIsDefined(NodeId)
20+
? {
21+
NodeId,
22+
PDiskId,
23+
VSlotId,
24+
}
25+
: undefined;
26+
27+
const StringifiedId = stringifyVdiskId(vDiskId);
2228

2329
return {
2430
StringifiedId,

0 commit comments

Comments
 (0)