typegoose/mongodb-memory-server

Weird "db.watch" issue

cope opened this issue · 1 comments

cope commented

Versions

  • NodeJS: 20.8.0
  • mongodb-memory-server: 8.16.0
  • mongodb: 5.0.2
  • mongoose: 8.0.2
  • system: Windows

package: mongo-memory-server

What is your question?

I am watching several collections.

I added my 1st watcher test and it works fine. Does exactly what is expected.

I'm using MongoMemoryReplSet and I've set the storageEngine to 'wiredTiger'.

I'm also connecting to the db before each suite, I'm clearing the entire db before each test and closing the connection after each suite. This works fine.

I add my 2nd test, basically identical to the 1st one, it fails and says the db.watch was not called. I see that in between those tests the db connection was closed and reopend (added console.logs to track).

I set .only on the 2nd test - it passes as expected.

I have 5 watchers for 5 collections and I wrote the tests for each of the 5. Any single one of them I run alone (using .only) - it passes as expected. But as soon as I add any other 2nd one - the 1st one that runs passes and the 2nd one fails and says .watch was not called. And this happens no matter which 2 tests I pick to execute together.

I am loosing my mind trying to figure out why the test would pass alone but fail if another watch test ran before it? 😞

cope commented

Sorry, the problem was in my code 😞

I have a RxJS Subject wrapper around the db.watch call which I did not reset on disconnect... so in between tests it looses the connection and thus cannot watch anymore.