MCPcopy
hub / github.com/mongodb/node-mongodb-native / checkDone

Function checkDone

src/gridfs/upload.ts:284–331  ·  view source on GitHub ↗
(stream: GridFSBucketWriteStream, callback: Callback)

Source from the content-addressed store, hash-verified

282}
283
284function checkDone(stream: GridFSBucketWriteStream, callback: Callback): void {
285 if (stream.done) {
286 return queueMicrotask(callback);
287 }
288
289 if (stream.state.streamEnd && stream.state.outstandingRequests === 0 && !stream.state.errored) {
290 // Set done so we do not trigger duplicate createFilesDoc
291 stream.done = true;
292 // Create a new files doc
293 const gridFSFile = createFilesDoc(
294 stream.id,
295 stream.length,
296 stream.chunkSizeBytes,
297 stream.filename,
298 stream.options.metadata
299 );
300
301 if (isAborted(stream, callback)) {
302 return;
303 }
304
305 const remainingTimeMS = stream.timeoutContext?.remainingTimeMS;
306 if (remainingTimeMS != null && remainingTimeMS <= 0) {
307 return handleError(
308 stream,
309 new MongoOperationTimeoutError(
310 `Upload timed out after ${stream.timeoutContext?.timeoutMS}ms`
311 ),
312 callback
313 );
314 }
315
316 stream.files
317 .insertOne(gridFSFile, { writeConcern: stream.writeConcern, timeoutMS: remainingTimeMS })
318 .then(
319 () => {
320 stream.gridFSFile = gridFSFile;
321 callback();
322 },
323 error => {
324 return handleError(stream, error, callback);
325 }
326 );
327 return;
328 }
329
330 queueMicrotask(callback);
331}
332
333async function checkIndexes(stream: GridFSBucketWriteStream): Promise<void> {
334 let remainingTimeMS = stream.timeoutContext?.getRemainingTimeMSOrThrow(

Callers 2

doWriteFunction · 0.85
writeRemnantFunction · 0.85

Calls 5

createFilesDocFunction · 0.85
isAbortedFunction · 0.85
insertOneMethod · 0.80
handleErrorFunction · 0.70
callbackFunction · 0.50

Tested by

no test coverage detected