diff --git a/src/Database.js b/src/Database.js index 7787a8fe..e7c60922 100644 --- a/src/Database.js +++ b/src/Database.js @@ -79,7 +79,7 @@ export default function extendDatabase (Y /* :any */) { function garbageCollect () { return os.whenTransactionsFinished().then(function () { - if (os.gc1.length > 0 || os.gc2.length > 0) { + if (os.gcTimeout > 0 && (os.gc1.length > 0 || os.gc2.length > 0)) { if (!os.y.connector.isSynced) { console.warn('gc should be empty when not synced!') } @@ -265,7 +265,7 @@ export default function extendDatabase (Y /* :any */) { } } * destroy () { - clearInterval(this.gcInterval) + clearTimeout(this.gcInterval) this.gcInterval = null this.stopRepairCheck() } diff --git a/src/y.js b/src/y.js index 4152e28b..4e2b3346 100644 --- a/src/y.js +++ b/src/y.js @@ -225,13 +225,13 @@ class YConfig { } else { this.connector.disconnect() } - return this.db.whenTransactionsFinished(function () { - this.db.destroyTypes() + return this.db.whenTransactionsFinished().then(function () { + self.db.destroyTypes() // make sure to wait for all transactions before destroying the db - this.db.requestTransaction(function * () { + self.db.requestTransaction(function * () { yield * self.db.destroy() }) - return this.db.whenTransactionsFinished() + return self.db.whenTransactionsFinished() }) } } diff --git a/tests-lib/helper.js b/tests-lib/helper.js index 12c2f3aa..a4f437be 100644 --- a/tests-lib/helper.js +++ b/tests-lib/helper.js @@ -55,6 +55,9 @@ export async function compareUsers (t, users) { t.compare(data[i].ss, data[i + 1].ss, 'ss') }, `Compare user${i} with user${i + 1}`) } + await Promise.all(users.map(async (u) => { + await u.close() + })) } export async function initArrays (t, opts) { diff --git a/tests-lib/test-connector.js b/tests-lib/test-connector.js index 80289414..cec03492 100644 --- a/tests-lib/test-connector.js +++ b/tests-lib/test-connector.js @@ -1,5 +1,4 @@ /* global Y */ -import { wait } from './helper.js' var rooms = {}