Skip to content

Commit a026ce4

Browse files
committed
refactor: use aspects instead of isCursorCreating
1 parent a7c188a commit a026ce4

8 files changed

+31
-36
lines changed

src/operations/aggregate.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,6 @@ export class AggregateOperation<T = Document> extends CommandOperation<T> {
7979
}
8080
}
8181

82-
get isCursorCreating(): boolean {
83-
return true;
84-
}
85-
8682
get canRetryRead(): boolean {
8783
return !this.hasWriteStage;
8884
}
@@ -131,4 +127,9 @@ export class AggregateOperation<T = Document> extends CommandOperation<T> {
131127
}
132128
}
133129

134-
defineAspects(AggregateOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE, Aspect.EXPLAINABLE]);
130+
defineAspects(AggregateOperation, [
131+
Aspect.READ_OPERATION,
132+
Aspect.RETRYABLE,
133+
Aspect.EXPLAINABLE,
134+
Aspect.CURSOR_CREATING
135+
]);

src/operations/estimated_document_count.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,6 @@ export class EstimatedDocumentCountOperation extends CommandOperation<number> {
2828
this.collectionName = collection.collectionName;
2929
}
3030

31-
get isCursorCreating(): boolean {
32-
return true;
33-
}
34-
3531
execute(server: Server, session: ClientSession, callback: Callback<number>): void {
3632
if (maxWireVersion(server) < 12) {
3733
return this.executeLegacy(server, session, callback);
@@ -72,4 +68,8 @@ export class EstimatedDocumentCountOperation extends CommandOperation<number> {
7268
}
7369
}
7470

75-
defineAspects(EstimatedDocumentCountOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE]);
71+
defineAspects(EstimatedDocumentCountOperation, [
72+
Aspect.READ_OPERATION,
73+
Aspect.RETRYABLE,
74+
Aspect.CURSOR_CREATING
75+
]);

src/operations/execute_operation.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ function executeWithServerSelection(
202202
session &&
203203
session.isPinned &&
204204
!session.inTransaction() &&
205-
operation.isCursorCreating
205+
operation.hasAspect(Aspect.CURSOR_CREATING)
206206
) {
207207
session.unpin({ force: true, forceClear: true });
208208
}

src/operations/find.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,6 @@ export class FindOperation extends CommandOperation<Document> {
101101
this.filter = filter != null && filter._bsontype === 'ObjectID' ? { _id: filter } : filter;
102102
}
103103

104-
get isCursorCreating(): boolean {
105-
return true;
106-
}
107-
108104
execute(server: Server, session: ClientSession, callback: Callback<Document>): void {
109105
this.server = server;
110106

@@ -349,4 +345,9 @@ function makeLegacyFindCommand(
349345
return findCommand;
350346
}
351347

352-
defineAspects(FindOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE, Aspect.EXPLAINABLE]);
348+
defineAspects(FindOperation, [
349+
Aspect.READ_OPERATION,
350+
Aspect.RETRYABLE,
351+
Aspect.EXPLAINABLE,
352+
Aspect.CURSOR_CREATING
353+
]);

src/operations/find_one.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ export class FindOneOperation extends CommandOperation<Document> {
2121
this.query = query;
2222
}
2323

24-
get isCursorCreating(): boolean {
25-
return true;
26-
}
27-
2824
execute(server: Server, session: ClientSession, callback: Callback<Document>): void {
2925
const coll = this.collection;
3026
const query = this.query;
@@ -44,4 +40,4 @@ export class FindOneOperation extends CommandOperation<Document> {
4440
}
4541
}
4642

47-
defineAspects(FindOneOperation, [Aspect.EXPLAINABLE]);
43+
defineAspects(FindOneOperation, [Aspect.EXPLAINABLE, Aspect.CURSOR_CREATING]);

src/operations/indexes.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -383,10 +383,6 @@ export class ListIndexesOperation extends CommandOperation<Document> {
383383
this.collectionNamespace = collection.s.namespace;
384384
}
385385

386-
get isCursorCreating(): boolean {
387-
return true;
388-
}
389-
390386
execute(server: Server, session: ClientSession, callback: Callback<Document>): void {
391387
const serverWireVersion = maxWireVersion(server);
392388
if (serverWireVersion < LIST_INDEXES_WIRE_VERSION) {
@@ -517,7 +513,11 @@ export class IndexInformationOperation extends AbstractOperation<Document> {
517513
}
518514
}
519515

520-
defineAspects(ListIndexesOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE]);
516+
defineAspects(ListIndexesOperation, [
517+
Aspect.READ_OPERATION,
518+
Aspect.RETRYABLE,
519+
Aspect.CURSOR_CREATING
520+
]);
521521
defineAspects(CreateIndexesOperation, [Aspect.WRITE_OPERATION]);
522522
defineAspects(CreateIndexOperation, [Aspect.WRITE_OPERATION]);
523523
defineAspects(EnsureIndexOperation, [Aspect.WRITE_OPERATION]);

src/operations/list_collections.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ export class ListCollectionsOperation extends CommandOperation<string[]> {
4040
}
4141
}
4242

43-
get isCursorCreating(): boolean {
44-
return true;
45-
}
46-
4743
execute(server: Server, session: ClientSession, callback: Callback<string[]>): void {
4844
if (maxWireVersion(server) < LIST_COLLECTIONS_WIRE_VERSION) {
4945
let filter = this.filter;
@@ -156,4 +152,8 @@ export class ListCollectionsCursor<
156152
}
157153
}
158154

159-
defineAspects(ListCollectionsOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE]);
155+
defineAspects(ListCollectionsOperation, [
156+
Aspect.READ_OPERATION,
157+
Aspect.RETRYABLE,
158+
Aspect.CURSOR_CREATING
159+
]);

src/operations/operation.ts

+2-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export const Aspect = {
99
WRITE_OPERATION: Symbol('WRITE_OPERATION'),
1010
RETRYABLE: Symbol('RETRYABLE'),
1111
EXPLAINABLE: Symbol('EXPLAINABLE'),
12-
SKIP_COLLATION: Symbol('SKIP_COLLATION')
12+
SKIP_COLLATION: Symbol('SKIP_COLLATION'),
13+
CURSOR_CREATING: Symbol('CURSOR_CREATING')
1314
} as const;
1415

1516
/** @public */
@@ -89,10 +90,6 @@ export abstract class AbstractOperation<TResult = any> {
8990
return this[kSession];
9091
}
9192

92-
get isCursorCreating(): boolean {
93-
return false;
94-
}
95-
9693
get canRetryRead(): boolean {
9794
return true;
9895
}

0 commit comments

Comments
 (0)