Răsfoiți Sursa

[PackWorker] fix the db cleanup process -- we do not expose db.close

Jakob Ackermann 5 ani în urmă
părinte
comite
2c8916f2e0

+ 3 - 2
services/track-changes/app/js/PackWorker.js

@@ -15,10 +15,11 @@
  */
 let LIMIT, pending
 let project_id, doc_id
+const { callbackify } = require('util')
 const Settings = require('settings-sharelatex')
 const async = require('async')
 const _ = require('underscore')
-const { db, ObjectId, waitForDb } = require('./mongodb')
+const { db, ObjectId, waitForDb, closeDb } = require('./mongodb')
 const fs = require('fs')
 const Metrics = require('metrics-sharelatex')
 Metrics.initialize('track-changes')
@@ -84,7 +85,7 @@ const finish = function () {
     clearTimeout(shutDownTimer)
   }
   logger.log('closing db')
-  return db.close(function () {
+  callbackify(closeDb)(function () {
     logger.log('closing LockManager Redis Connection')
     return LockManager.close(function () {
       logger.log(

+ 12 - 0
services/track-changes/app/js/mongodb.js

@@ -23,8 +23,20 @@ async function setupDb() {
   db.projectHistoryMetaData = internalDb.collection('projectHistoryMetaData')
 }
 
+async function closeDb() {
+  let client
+  try {
+    client = await clientPromise
+  } catch (e) {
+    // there is nothing to close
+    return
+  }
+  return client.close()
+}
+
 module.exports = {
   db,
   ObjectId,
+  closeDb,
   waitForDb
 }