The MongoDB Rust driver team is pleased to announce the v2.7.0 release of the mongodb crate, now available for download from crates.io.
Highlighted Changes
Serialization Behavior Change
When serializing values via serde, the serializer can indicate whether or not the target format is human-readable, allowing types to change behavior based on that. The Rust driver had inadvertently been serializing values given to find_one_and_replace and replace_one as human-readible when all other methods serialize as non-human-readible; this bug is fixed in 2.7.0, with those methods also serializing as non-human-readible.
However, it is potentially possible (if unlikely) that user code may rely on this bug. If your code does rely on human-readable serialization, you can specify that via the new human_readable_serialization field in CollectionOptions.
run_cursor_command
The Rust driver provides the run_command method as a way for users to directly send bson commands to the server; this is particularly useful when the driver does not yet have support for a newly-added server command. However, using this with commands that return a cursor requires re-implementing the logic for cursor iteration, which can be tedious and error-prone. The new run_cursor_command method avoids those problems, directly returning a Cursor using the same iteration logic as other methods.
SDAM Logging
The Rust driver will now log SDAM events when using the tracing-unstable feature.
Client Management
The Client type now provides three additional ways to shape behavior to fit your workload:
ClientOptions.max_connecting lets you specify how many "in flight" connections can be established in parallel. This was previously fixed at 2 and defaults to the same value.
Client::warm_connection_pool will create new connections to bring the connection pool up to min_pool_size, which can provide more predictable performance in some circumstances.
Client::shutdown will cleanly stop background tasks and wait for outstanding handles to be dropped. This is particularly useful when using event handlers that reference external resources, as otherwise those handlers may be invoked in a background task even after the Client has been dropped.
Included Changes
Below are a selected list of changes with user impact; for a full list of changes see this GitHub query.
New Features
RUST-1420 Cache AWS credentials received from endpoints (#905)
RUST-1604 Add custom bucketing fields to timeseries options (#907)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps mongodb from 2.6.0 to 2.7.0.
Release notes
Sourced from mongodb's releases.
... (truncated)
Commits
a9e9fab
release v2.7.01c36dab
minor: pin async-executor (#964) (#965)636de62
release v2.7.0-beta.1 (#956)92b984e
minor: fix deprecation warnings (#960) (#961)f59cef2
RUST-1763 deprecate CollectionOptions::human_readable_serialization (#957) (#...a8972b9
fixing the find or delete serde inconsistency (#948) (#955)b8446b2
RUST-1757 Fix final cursor batch handling (#951) (#954)640a30a
RUST-1746 Use more environment variables in Azure KMS test (#944)3396d1e
release v2.7.0-beta (#946)2f9fe86
RUST-1539 Restructure and refine contents of Evergreen configuration (#939)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show