ephemeral-mongo
ephemeral-mongo copied to clipboard
🙋🏾♂️ Volunteering as library maintainer
Hi @asimmon,
First of all, thank you for such a useful library, it's been crucial in testing and improving the stability of MongoDB integration in many of our projects.
I understand maintaining an open source library can be quite time consuming, so I just wanted to put my hand up if you're looking for some maintainers to share the burden of keeping the library up to date and addressing various questions and issues.
I'm currently the maintainer of Orleans.Providers.MongoDB and I've had a lot of experience working with MongoDB in the C# space.
Due to the lack of support and activity in this repo, I have created MongoSandbox fork, which adds support for Mongo 8 and MongoDB Driver v3.0, packages are available in nuget.
Thanks @asimmon for bringing EphemeralMongo to where it is.
Thanks for picking up the torch @wassim-k
lovely <3 will give your repo a star :)
I had a similar Idea, but not the skills to pay the Bills. Sadly, as of now, it still suffers from the same Issue as ephemeralMongo, when i tried to update it to 3.0 - Namely SingleNodeReplica Connection Issues: which i managed to fix for our Team on the Driver Side: https://github.com/mongodb/mongo-csharp-driver/pull/1551 and made this PR. (Right now, with my fork of the driver and your fork (MongoSandbox), i get 'directConnection invalid for SingleServerCluster', as i'd expect after my change) and when disabling that i get timeouts on the DB Requests again, which i'd attribute to my assemblies maybe going back to use the official 3.0 Driver - who knows(?!)
In the PR on the Driver Repo, i put my Repro and alot of description + link to my forum entry. If you play arround with it and find anything, please @me
i would also not mind contributing here and there to this project, if we can get it up and running again, as i love the speedy Component Testing. @wassim-k thx for offering your power to maintain this. it's a really nice Tool for Testing.
So I've got it working with single node replica set, but there was a bug in 1.0.0 that deadlocked some of my tests, it should be fixed in 1.0.1
even with Transactions? I would then test this tomorrow. I know that you can hack the broken driver right now, by directly connecting, but then all our tests using transactions broke :/
haven't tested yet, to be fair, wether It just works, when i just disable any checks about direct Connections in the SingleNodeCluster. Im hoping to hear back soon from the Driver Maintainers on this, as ofcourse i do not know all, that check is about.
We don't use transactions so I can't say, but @wassim-k definitely fixed the direct connect issue
Update: With the actual official 3.0.0 Driver Version and MongoSandbox from @wassim-k it actually works including transactions. Thank you so much guys.
Glad to hear it @MrHPotter 👍
Hey everyone, I've been quite busy over the past year and a half, and I had to make choices and manage my priorities.
Thank you all for your patience and for helping each other. Thank you, @wassim-k, for going even further and maintaining a fork.
I worked on some improvements and bug fixes over the past few nights, and I released version [2.0.0](https://github.com/asimmon/ephemeral-mongo/releases/tag/2.0.0) a few minutes ago. Please take a look at the release notes, as there are some breaking changes.
I plan to drastically change how EphemeralMongo works in a major version in the future. I'll explain everything in a dedicated issue, but I can provide some details already:
-
It no longer scales to distribute MongoDB binaries through NuGet packages.
- Binaries have grown larger in every major MongoDB release (2× or 3× since MongoDB 4).
- MongoDB's release cycle has sped up since version 5.0, with a new major release every year, which means even more packages.
- There have been some edge cases that are difficult to manage, such as OpenSSL 1 vs 3 for Linux and x64 vs. arm64 for macOS.
-
The library takes too much space on the disk. The total size of artifacts for a release is 500 MB.
- Because binaries are copied in the build output, you might end up with duplicated hundreds of megabytes in projects.
- It also occupies a lot of space in the NuGet package cache, which stores both the compressed and uncompressed formats.
- I'm afraid of being blocked by NuGet.org at some point.
- By default, you get three runtimes, which triples the size for a single OS.
-
I want to allow people to use more MongoDB versions and editions:
- Access to binaries tailored for your OS and CPU architecture.
- Access to the Enterprise edition, which is free for testing and development purposes and includes in-memory storage support (resulting in much faster performance).
- Provide access to the latest binaries automatically without having to release a new EphemeralMongo version.
-
I want to rework the .NET C# public API too:
- Asynchronous by default (synchronous support will be considered) and first-class support for cancellation tokens.
- I'm leaning towards downloading the binaries at runtime and allowing customization of the HttpClient or primary HTTP handler for proxy and authentication purposes.
@asimmon, glad you're back with some plans for the future, I guess in this case the original issue still stands. I'm currently too busy maintaining other open source libraries, but are you willing to appoint other maintainers on the repo? Because it's been 5 months since this issue was raised and imo that is too long a time for some companies to be blocked from upgrading due to dependency on this library.
@wassim-k I am not, at least for now.
In a couple of days, a new version will be available, and it will support the 3.x driver (2.x support with also continue to exist). You can read more in my announcement: #80
Most of the work is already done and a preview version is available.