Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 540x 540x 540x 540x 144163x 144163x 144163x 144163x 144147x 143930x 4x 143926x 143926x 4x 143922x 143922x 143922x 3122x 540x | import type { Long } from '../bson'; import { MongoRuntimeError } from '../error'; import type { Server } from '../sdam/server'; import type { ClientSession } from '../sessions'; import { type TimeoutContext } from '../timeout'; import { type MongoDBNamespace, squashError } from '../utils'; import { AbstractOperation, Aspect, defineAspects, type OperationOptions } from './operation'; /** * https://www.mongodb.com/docs/manual/reference/command/killCursors/ * @internal */ interface KillCursorsCommand { killCursors: string; cursors: Long[]; comment?: unknown; } export class KillCursorsOperation extends AbstractOperation { cursorId: Long; constructor(cursorId: Long, ns: MongoDBNamespace, server: Server, options: OperationOptions) { super(options); this.ns = ns; this.cursorId = cursorId; this.server = server; } override get commandName() { return 'killCursors' as const; } override async execute( server: Server, session: ClientSession | undefined, timeoutContext: TimeoutContext ): Promise<void> { if (server !== this.server) { throw new MongoRuntimeError('Killcursor must run on the same server operation began on'); } const killCursors = this.ns.collection; if (killCursors == null) { // Cursors should have adopted the namespace returned by MongoDB // which should always defined a collection name (even a pseudo one, ex. db.aggregate()) throw new MongoRuntimeError('A collection name must be determined before killCursors'); } const killCursorsCommand: KillCursorsCommand = { killCursors, cursors: [this.cursorId] }; try { await server.command(this.ns, killCursorsCommand, { session, timeoutContext }); } catch (error) { // The driver should never emit errors from killCursors, this is spec-ed behavior squashError(error); } } } defineAspects(KillCursorsOperation, [Aspect.MUST_SELECT_SAME_SERVER]); |