Skip to content

Commit bcb30a9

Browse files
committed
fix(compass-database): update storage size stat value
1 parent a3d57a2 commit bcb30a9

File tree

8 files changed

+38
-10
lines changed

8 files changed

+38
-10
lines changed

packages/data-service/src/data-service.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ import {
9393
createClonedClient,
9494
} from './connect-mongo-client';
9595
import type { CollectionStats } from './types';
96-
import type { ConnectionStatusWithPrivileges } from './run-command';
96+
import type { ConnectionStatusWithPrivileges, DbStats } from './run-command';
9797
import { runCommand } from './run-command';
9898
import type { CSFLECollectionTracker } from './csfle-collection-tracker';
9999
import { CSFLECollectionTrackerImpl } from './csfle-collection-tracker';
@@ -2808,7 +2808,7 @@ class DataServiceImpl extends WithLogContext implements DataService {
28082808
const db = this._database(name, 'META');
28092809
const stats = await runCommand(
28102810
db,
2811-
{ dbStats: 1 },
2811+
{ dbStats: 1, freeStorage: 1 },
28122812
{
28132813
enableUtf8Validation: false,
28142814
...maybeOverrideReadPreference(
@@ -2817,7 +2817,7 @@ class DataServiceImpl extends WithLogContext implements DataService {
28172817
),
28182818
}
28192819
);
2820-
const normalized = adaptDatabaseInfo(stats);
2820+
const normalized = adaptDatabaseInfo(stats as unknown as DbStats);
28212821
return { name, ...normalized };
28222822
}
28232823

packages/data-service/src/instance-detail-helper.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ export type DatabaseDetails = {
8585
collection_count: number;
8686
document_count: number;
8787
storage_size: number;
88+
free_storage_size: number;
8889
data_size: number;
8990
index_count: number;
9091
index_size: number;
@@ -373,6 +374,7 @@ export function adaptDatabaseInfo(
373374
storage_size: databaseStats.storageSize ?? 0,
374375
data_size: databaseStats.dataSize ?? 0,
375376
index_size: databaseStats.indexSize ?? 0,
377+
free_storage_size: databaseStats.freeStorageSize ?? 0,
376378
};
377379
}
378380

packages/data-service/src/run-command.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,13 @@ export type DbStats = {
9696
avgObjSize: number;
9797
dataSize: number;
9898
storageSize: number;
99+
freeStorageSize?: number;
99100
numExtents: number;
100101
indexes: number;
101102
indexSize: number;
103+
indexFreeStorageSize?: number;
104+
totalSize?: number;
105+
totalFreeStorageSize?: number;
102106
scaleFactor: number;
103107
fsUsedSize: number;
104108
fsTotalSize: number;

packages/database-model/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ interface DatabaseProps {
1010
collectionsStatusError: string | null;
1111
collection_count: number | undefined;
1212
document_count: number | undefined;
13+
calculated_storage_size: number | undefined;
1314
storage_size: number | undefined;
15+
free_storage_size: number | undefined;
1416
data_size: number | undefined;
1517
index_count: number | undefined;
1618
index_size: number | undefined;

packages/database-model/lib/model.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ const DatabaseModel = AmpersandModel.extend(
112112
data_size: 'number',
113113
index_count: 'number',
114114
index_size: 'number',
115+
free_storage_size: 'number',
115116
},
116117
derived: {
117118
// Either returns a collection count from database stats or from real
@@ -126,6 +127,18 @@ const DatabaseModel = AmpersandModel.extend(
126127
: this.collection_count ?? 0;
127128
},
128129
},
130+
calculated_storage_size: {
131+
deps: ['storage_size', 'free_storage_size'],
132+
fn() {
133+
if (
134+
this.storage_size === undefined ||
135+
this.free_storage_size === undefined
136+
) {
137+
return undefined;
138+
}
139+
return this.storage_size - this.free_storage_size;
140+
},
141+
},
129142
},
130143
collections: {
131144
collections: MongoDbCollectionCollection,

packages/databases-collections-list/src/collections.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ const CollectionsList: React.FunctionComponent<{
133133
: 'N/A',
134134
hint:
135135
coll.calculated_storage_size !== undefined &&
136-
'Storage Data: Sum of the disk space allocated to all collections in the database for document storage.',
136+
'Storage Data: Disk space allocated to this collection for document storage.',
137137
},
138138
{
139139
label: 'Uncompressed data',
@@ -143,7 +143,7 @@ const CollectionsList: React.FunctionComponent<{
143143
: 'N/A',
144144
hint:
145145
coll.document_size !== undefined &&
146-
'Uncompressed Data Size: Total size of the uncompressed data held in the database.',
146+
'Uncompressed Data Size: Total size of the uncompressed data held in this collection.',
147147
},
148148
]
149149
: [
@@ -155,7 +155,7 @@ const CollectionsList: React.FunctionComponent<{
155155
: 'N/A',
156156
hint:
157157
coll.calculated_storage_size !== undefined &&
158-
'Storage Data: Sum of the disk space allocated to all collections in the database for document storage.',
158+
'Storage Data: Disk space allocated to this collection for document storage.',
159159
},
160160
{
161161
label: 'Uncompressed data',
@@ -165,7 +165,7 @@ const CollectionsList: React.FunctionComponent<{
165165
: 'N/A',
166166
hint:
167167
coll.document_size !== undefined &&
168-
'Uncompressed Data Size: Total size of the uncompressed data held in the database.',
168+
'Uncompressed Data Size: Total size of the uncompressed data held in this collection.',
169169
},
170170
{
171171
label: 'Documents',

packages/databases-collections-list/src/databases.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,17 @@ const DatabasesList: React.FunctionComponent<{
7676
{
7777
label: 'Storage',
7878
value:
79-
enableDbAndCollStats && db.storage_size !== undefined
80-
? compactBytes(db.storage_size)
79+
enableDbAndCollStats &&
80+
db.calculated_storage_size !== undefined
81+
? compactBytes(db.calculated_storage_size)
8182
: 'N/A',
8283
hint:
8384
enableDbAndCollStats &&
84-
'Storage Data: Sum of the disk space allocated to all collections in the database for document storage.',
85+
db.storage_size !== undefined &&
86+
db.free_storage_size !== undefined &&
87+
'Storage Data: Disk space allocated to all collections in the database for document storage.\n' +
88+
`Total storage: ${compactBytes(db.storage_size)}\n` +
89+
`Free storage: ${compactBytes(db.free_storage_size)}`,
8590
},
8691
{
8792
label: 'Uncompressed data',

packages/databases-collections-list/src/index.spec.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ function createDatabase(name) {
2929
// dbStats
3030
document_count: 10,
3131
storage_size: 1500,
32+
free_storage_size: 0,
33+
calculated_storage_size: 1500,
3234
data_size: 1000,
3335
index_count: 25,
3436
index_size: 100,

0 commit comments

Comments
 (0)