Skip to content

Commit 9c45792

Browse files
fix(NodeHostWrapper): correct node page path for storage nodes
1 parent c07f619 commit 9c45792

File tree

4 files changed

+24
-19
lines changed

4 files changed

+24
-19
lines changed

src/components/NodeHostWrapper/NodeHostWrapper.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type {PreparedStorageNode} from '../../store/reducers/storage/types';
33
import type {NodeAddress} from '../../types/additionalProps';
44
import type {TNodeInfo, TSystemStateInfo} from '../../types/api/nodes';
55
import {EMPTY_DATA_PLACEHOLDER} from '../../utils/constants';
6-
import {isUnavailableNode} from '../../utils/nodes';
6+
import {checkIsStorageNode, isUnavailableNode} from '../../utils/nodes';
77
import {EntityStatus} from '../EntityStatus/EntityStatus';
88
import {NodeEndpointsTooltipContent} from '../TooltipsContent';
99

@@ -33,12 +33,17 @@ export const NodeHostWrapper = ({
3333

3434
const isNodeAvailable = !isUnavailableNode(node);
3535

36+
// Storage nodes do not belong to any specific database.
37+
// Including a database in the path would filter data on the node page by that database,
38+
// but for storage nodes this would result in no data being shown.
39+
// Database from node data cannot be used, because we use database ids when uiFactory.useDatabaseId
40+
// https://github.com/ydb-platform/ydb-embedded-ui/issues/3006
41+
const databaseInPath = checkIsStorageNode(node) ? undefined : (database ?? node.TenantName);
42+
3643
const nodePath = isNodeAvailable
3744
? getDefaultNodePath(
3845
{id: node.NodeId, activeTab: node.TenantName ? 'tablets' : 'storage'},
39-
{
40-
database: database ?? node.TenantName,
41-
},
46+
{database: databaseInPath},
4247
)
4348
: undefined;
4449

src/containers/Node/Node.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import type {PreparedNode} from '../../store/reducers/node/types';
2424
import {cn} from '../../utils/cn';
2525
import {useAutoRefreshInterval, useTypedDispatch} from '../../utils/hooks';
2626
import {useIsViewerUser} from '../../utils/hooks/useIsUserAllowedToMakeChanges';
27+
import {checkIsStorageNode} from '../../utils/nodes';
2728
import {useAppTitle} from '../App/AppTitleContext';
2829
import {Configs} from '../Configs/Configs';
2930
import {PaginatedStorage} from '../Storage/PaginatedStorage';
@@ -39,8 +40,6 @@ import './Node.scss';
3940

4041
const b = cn('node');
4142

42-
const STORAGE_ROLE = 'Storage';
43-
4443
export function Node() {
4544
const container = React.useRef<HTMLDivElement>(null);
4645
const isViewerUser = useIsViewerUser();
@@ -73,7 +72,7 @@ export function Node() {
7372

7473
const pageLoading = isLoading || !capabilitiesLoaded;
7574

76-
const isStorageNode = node?.Roles?.find((el) => el === STORAGE_ROLE);
75+
const isStorageNode = checkIsStorageNode(node);
7776

7877
const threadsQuantity = node?.Threads?.length;
7978

src/containers/Versions/groupNodes.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import groupBy from 'lodash/groupBy';
22

33
import type {PreparedStorageNode} from '../../store/reducers/storage/types';
4+
import {checkIsStorageNode, checkIsTenantNode} from '../../utils/nodes';
45
import {getColorFromVersionsData, parseNodesToPreparedVersions} from '../../utils/versions';
56
import type {VersionsDataMap} from '../../utils/versions/types';
67

@@ -24,7 +25,7 @@ export const getGroupedTenantNodes = (
2425

2526
return Object.keys(dividedByVersion)
2627
.map<GroupedNodesItem | null>((version) => {
27-
const filteredNodes = dividedByVersion[version].filter(isTenantNode);
28+
const filteredNodes = dividedByVersion[version].filter(checkIsTenantNode);
2829
const dividedByTenant = groupBy(filteredNodes, 'Tenants');
2930

3031
const items = Object.keys(dividedByTenant)
@@ -49,7 +50,7 @@ export const getGroupedTenantNodes = (
4950
})
5051
.filter((item): item is GroupedNodesItem => Boolean(item));
5152
} else {
52-
const filteredNodes = nodes.filter(isTenantNode);
53+
const filteredNodes = nodes.filter(checkIsTenantNode);
5354
const dividedByTenant = groupBy(filteredNodes, 'Tenants');
5455

5556
return Object.keys(dividedByTenant)
@@ -92,7 +93,7 @@ export const getGroupedStorageNodes = (
9293
return undefined;
9394
}
9495

95-
const storageNodes = nodes.filter(isStorageNode);
96+
const storageNodes = nodes.filter(checkIsStorageNode);
9697
const storageNodesDividedByVersion = groupBy(storageNodes, 'Version');
9798

9899
return Object.keys(storageNodesDividedByVersion).map((version) => {
@@ -114,7 +115,7 @@ export const getOtherNodes = (
114115

115116
// Nodes that are not included in other groups
116117
const otherNodes = nodes.filter(
117-
(node) => !isStorageNode(node) && !isTenantNode(node) && node.Version,
118+
(node) => !checkIsStorageNode(node) && !checkIsTenantNode(node) && node.Version,
118119
);
119120
const otherNodesDividedByVersion = groupBy(otherNodes, 'Version');
120121

@@ -126,11 +127,3 @@ export const getOtherNodes = (
126127
};
127128
});
128129
};
129-
130-
function isStorageNode(node: PreparedStorageNode) {
131-
return Boolean(node.Roles?.includes('Storage'));
132-
}
133-
134-
function isTenantNode(node: PreparedStorageNode) {
135-
return Boolean(node.Tenants);
136-
}

src/utils/nodes.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,11 @@ export const getProblemParamValue = (problemFilter: ProblemFilterValue | undefin
9999
export const getUptimeParamValue = (nodesUptimeFilter: NodesUptimeFilterValues | undefined) => {
100100
return nodesUptimeFilter === NodesUptimeFilterValues.SmallUptime ? HOUR_IN_SECONDS : undefined;
101101
};
102+
103+
export function checkIsStorageNode<T extends PreparedNodeSystemState>(node?: T) {
104+
return Boolean(node?.Roles?.includes('Storage'));
105+
}
106+
107+
export function checkIsTenantNode<T extends PreparedNodeSystemState>(node?: T) {
108+
return Boolean(node?.Tenants);
109+
}

0 commit comments

Comments
 (0)