Releases: mpihlak/mongoproxy
v0.5.35
v0.5.34
v0.5.31
v0.5.30
What's Changed
- Update Tokio to 1.34 by @mpihlak in #33
- Fix replicaset parsing for older clients by @alekseiplotnikov in #34
Full Changelog: v0.5.28...v0.5.30
v0.5.20
Maintenance release
- Upgrade to Rust 1.61
- Upgrade to Tokio 1.0
- Add "hello" as a valid op to avoid excessive logging of "unknown op"
- Parse connection metadata from OP_MSG messages
- Prometheus metrics have "username" labels when available -- helps to identify clients that don't set
appName
- Serialize request-response handling - a request is always followed by a response
- Avoid stopping the tracker on large MongoDb messages
Get ready for WASM
No new functionality, mostly just preparing to have WASM support.
- Reorganise code to a Cargo workspace
- Move mongo protocol decoder to a separate crate
- Enable
maybe-async
for the protocol decoder so that it can be used from WASM - Add a skeleton Envoy WASM filter that parses the Mongo protocol
- Increase the size of the proxy buffer to improve performance (who would've guessed ...)
Hyper + OpenTelemetry
- Switch to OpenTelemetry for distributed tracing
- Metrics are now served via Hyper (we're already on Tokio, so why the heck not)
All in with async
Notable changes:
- Switch out the internal BSON parser to an async streaming BSON parser.
- Use the awesome tracing framework for logging.
- Fix a parsing bug for checksummed
OP_MSG
messages. - Parser and stats extraction are running in separate tasks.
The goal for the async BSON was more predictable memory usage -- the whole BSON no longer needs to be in memory, considerably reducing memory usage for large responses. This comes at the expense of a small CPU increase however.
Async/await with Tokio
The major change is moving to async/await with Tokio. This considerably reduces memory usage as less threads are required, but at the cost of some CPU.
Also switch to Jemallocator to avoid needing to fiddle with malloc per thread arena settings.
Notable functionality change since v0.3.1 is that the expensive histograms are now only collected for collection operations (find, update, etc.) so that Prometheus has easier time scraping and processing them.
Moar logging goodness
- Makes logging full Mongo messages a command line option
- Drop support for multiple listeners
- Add thread id to most log messages