Skip to content

Commit e8f2d11

Browse files
committed
Address comments and remove abort controller code
1 parent fa541f5 commit e8f2d11

File tree

2 files changed

+23
-48
lines changed

2 files changed

+23
-48
lines changed

packages/compass-collection/src/modules/collection-tab.ts

Lines changed: 23 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
import type { Reducer, AnyAction, Action } from 'redux';
2-
import {
3-
analyzeDocuments,
4-
type SchemaParseOptions,
5-
type Schema,
6-
} from 'mongodb-schema';
2+
import { analyzeDocuments, type Schema } from 'mongodb-schema';
73

84
import type { CollectionMetadata } from 'mongodb-collection-model';
95
import type { ThunkAction } from 'redux-thunk';
@@ -37,7 +33,6 @@ type CollectionThunkAction<R, A extends AnyAction = AnyAction> = ThunkAction<
3733
experimentationServices: ReturnType<typeof experimentationServiceLocator>;
3834
logger: Logger;
3935
preferences: PreferencesAccess;
40-
analysisAbortControllerRef: { current?: AbortController };
4136
},
4237
A
4338
>;
@@ -82,12 +77,16 @@ interface CollectionMetadataFetchedAction {
8277

8378
interface SchemaAnalysisStartedAction {
8479
type: CollectionActions.SchemaAnalysisStarted;
85-
analysisStartTime: number;
8680
}
8781

8882
interface SchemaAnalysisFinishedAction {
8983
type: CollectionActions.SchemaAnalysisFinished;
90-
schemaAnalysis: SchemaAnalysis;
84+
schema: Schema | null;
85+
sampleDocument: Document | null;
86+
schemaMetadata: {
87+
maxNestingDepth: number;
88+
validationRules: Document;
89+
} | null;
9190
}
9291

9392
interface SchemaAnalysisFailedAction {
@@ -149,7 +148,13 @@ const reducer: Reducer<CollectionState, Action> = (
149148
) {
150149
return {
151150
...state,
152-
schemaAnalysis: action.schemaAnalysis,
151+
schemaAnalysis: {
152+
status: SchemaAnalysisStatus.COMPLETED,
153+
schema: action.schema,
154+
sampleDocument: action.sampleDocument,
155+
schemaMetadata: action.schemaMetadata,
156+
error: null,
157+
},
153158
};
154159
}
155160

@@ -162,7 +167,9 @@ const reducer: Reducer<CollectionState, Action> = (
162167
return {
163168
...state,
164169
schemaAnalysis: {
165-
...state.schemaAnalysis,
170+
schema: null,
171+
sampleDocument: null,
172+
schemaMetadata: null,
166173
status: SchemaAnalysisStatus.ERROR,
167174
error: action.error.message,
168175
},
@@ -192,11 +199,7 @@ export const selectTab = (
192199
export const analyzeCollectionSchema = (): CollectionThunkAction<
193200
Promise<void>
194201
> => {
195-
return async (
196-
dispatch,
197-
getState,
198-
{ analysisAbortControllerRef, dataService, preferences, logger }
199-
) => {
202+
return async (dispatch, getState, { dataService, preferences, logger }) => {
200203
const { schemaAnalysis, namespace } = getState();
201204
const analysisStatus = schemaAnalysis.status;
202205
if (analysisStatus === SchemaAnalysisStatus.ANALYZING) {
@@ -206,24 +209,17 @@ export const analyzeCollectionSchema = (): CollectionThunkAction<
206209
return;
207210
}
208211

209-
analysisAbortControllerRef.current = new AbortController();
210-
const abortSignal = analysisAbortControllerRef.current.signal;
211-
212-
const analysisStartTime = Date.now();
213-
214212
try {
215213
logger.debug('Schema analysis started.');
216214

217215
dispatch({
218216
type: CollectionActions.SchemaAnalysisStarted,
219-
analysisStartTime,
220217
});
221218

222219
// Sample documents
223220
const samplingOptions = { size: DEFAULT_SAMPLE_SIZE };
224221
const driverOptions = {
225222
maxTimeMS: preferences.getPreferences().maxTimeMS,
226-
signal: abortSignal,
227223
};
228224
const sampleCursor = dataService.sampleCursor(
229225
namespace,
@@ -236,16 +232,7 @@ export const analyzeCollectionSchema = (): CollectionThunkAction<
236232
const sampleDocuments = await sampleCursor.toArray();
237233

238234
// Analyze sampled documents
239-
const schemaParseOptions: SchemaParseOptions = {
240-
signal: abortSignal,
241-
};
242-
const schemaAccessor = await analyzeDocuments(
243-
sampleDocuments,
244-
schemaParseOptions
245-
);
246-
if (abortSignal?.aborted) {
247-
throw new Error(abortSignal?.reason || new Error('Operation aborted'));
248-
}
235+
const schemaAccessor = await analyzeDocuments(sampleDocuments);
249236

250237
let schema: Schema | null = null;
251238
if (schemaAccessor) {
@@ -264,17 +251,14 @@ export const analyzeCollectionSchema = (): CollectionThunkAction<
264251
const collInfo = await dataService.collectionInfo(database, collection);
265252
schemaMetadata = {
266253
maxNestingDepth: schema_depth,
267-
validationRules: collInfo?.validation?.validator || null,
254+
validationRules: collInfo?.validation?.validator ?? null,
268255
};
269256
}
270257
dispatch({
271258
type: CollectionActions.SchemaAnalysisFinished,
272-
schemaAnalysis: {
273-
status: SchemaAnalysisStatus.COMPLETED,
274-
schema,
275-
sampleDocument: sampleDocuments[0] ?? null,
276-
schemaMetadata,
277-
},
259+
schema,
260+
sampleDocument: sampleDocuments[0] ?? null,
261+
schemaMetadata,
278262
});
279263
} catch (err: any) {
280264
logger.log.error(
@@ -284,18 +268,12 @@ export const analyzeCollectionSchema = (): CollectionThunkAction<
284268
{
285269
namespace,
286270
error: err.message,
287-
aborted: abortSignal.aborted,
288-
...(abortSignal.aborted
289-
? { abortReason: abortSignal.reason?.message ?? abortSignal.reason }
290-
: {}),
291271
}
292272
);
293273
dispatch({
294274
type: CollectionActions.SchemaAnalysisFailed,
295275
error: err as Error,
296276
});
297-
} finally {
298-
analysisAbortControllerRef.current = undefined;
299277
}
300278
};
301279
};

packages/compass-collection/src/stores/collection-tab.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,6 @@ export function activatePlugin(
9696
experimentationServices,
9797
logger,
9898
preferences,
99-
analysisAbortControllerRef: {
100-
current: undefined,
101-
},
10299
})
103100
)
104101
);

0 commit comments

Comments
 (0)