## Description
Introduce a newtype for data connector object type for the added
context.
V3_GIT_ORIGIN_REV_ID: b499d3a9cd2610fec05a4bc2e1b3cf522f198b9c
<!-- Thank you for submitting this PR! :) -->
## Description
Now that metadata resolve has a clear interface with the rest of the
engine, let's take it out into it's own crate. This will make it easier
to maintain a strong boundary between things.
To simplify imports etc, removed nested layers of modules, so now we
import `use metadata_resolve::Qualified` instead of `use
crate::metadata::resolved::Qualified`.
The changes in `engine` crate are all just updating imports.
Functional no-op.
V3_GIT_ORIGIN_REV_ID: fb94304f7ed8883287c18bd6870045dfd69e3fe3
By wrapping the errors we can work with both `syn` and `darling` errors,
allowing us to avoid `.unwrap` and `.expect`. This makes failures way
more useful.
V3_GIT_ORIGIN_REV_ID: bd7c4a4e7de4a2360b4533d9238199f098a09a8d
<!-- Thank you for submitting this PR! :) -->
## Description
Benchmarks are running pretty slowly in Github, let's check it's not an
old library version problem.
---------
Co-authored-by: Samir Talwar <samir.talwar@hasura.io>
V3_GIT_ORIGIN_REV_ID: db1a70c5465cf475fa66d2afc981fd496eccacaa
I was on a roll.
I also replaced `futures` with `futures-util`, which is theoretically
smaller.
V3_GIT_ORIGIN_REV_ID: 27228a506f1edb6d0e33a4c61499e500cc5d0df7
This changes the way we build the custom connector so that the data is
baked in at compile time, not loaded from the file system at runtime.
This simplifies packaging.
I also took the liberty to switch out `.unwrap()` for `anyhow`, and to
avoid parsing a string to construct the socket address.
V3_GIT_ORIGIN_REV_ID: d562e0a9852b4e3ecde45bd6938d8eb1b066211b
This uses the `json!` macro in the JWT client code and its associated
tests, rather than embedding a string and parsing it. This will make
compilation fail if the JSON is invalid, which seems better than a
runtime/test-time failure.
There are a few cases where we were constructing a JSON string by
concatenating strings using `format!`. `json!` also handles these cases
better, as you can refer to a JSON value by its variable name too, and
it doesn't require escaping `{` and `}`.
V3_GIT_ORIGIN_REV_ID: 4c40299b71d583efae7b0cdbabee8cff21b09bef
Support both W3C and Zipkin B3 headers and connectors will
prefer B3 headers to extract traces because Cloud Run doesn't respect
those headers.
V3_GIT_ORIGIN_REV_ID: 1471b848e71d87420bc75b9adee60951f306c856
[//]: # (dependabot-start)
⚠️ **Dependabot is rebasing this PR** ⚠️
Rebasing might not happen immediately, so don't worry if this takes some
time.
Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.
---
[//]: # (dependabot-end)
Bumps [strum](https://github.com/Peternator7/strum) from 0.25.0 to
0.26.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Peternator7/strum/releases">strum's
releases</a>.</em></p>
<blockquote>
<h2>v0.26.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix AsRefStr docs to specify lifetime constraints by <a
href="https://github.com/DTrippe"><code>@DTrippe</code></a> in <a
href="https://redirect.github.com/Peternator7/strum/pull/330">Peternator7/strum#330</a></li>
<li>Fix missing generics on impl for EnumTryAs by <a
href="https://github.com/hasali19"><code>@hasali19</code></a> in <a
href="https://redirect.github.com/Peternator7/strum/pull/337">Peternator7/strum#337</a></li>
<li>feat(as_ref_str): enable <code>prefix</code> attribute for
<code>AsRefStr</code> derive by <a
href="https://github.com/vbrvk"><code>@vbrvk</code></a> in <a
href="https://redirect.github.com/Peternator7/strum/pull/334">Peternator7/strum#334</a></li>
<li>Add dependabot by <a
href="https://github.com/oriontvv"><code>@oriontvv</code></a> in <a
href="https://redirect.github.com/Peternator7/strum/pull/333">Peternator7/strum#333</a></li>
<li>Fix docs that say array instead of slice by <a
href="https://github.com/Peternator7"><code>@Peternator7</code></a> in
<a
href="https://redirect.github.com/Peternator7/strum/pull/343">Peternator7/strum#343</a></li>
<li>Hide EnumTable by <a
href="https://github.com/Peternator7"><code>@Peternator7</code></a> in
<a
href="https://redirect.github.com/Peternator7/strum/pull/344">Peternator7/strum#344</a>
<ul>
<li>EnumTable will likely be deprecated.</li>
</ul>
</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/DTrippe"><code>@DTrippe</code></a> made
their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/330">Peternator7/strum#330</a></li>
<li><a href="https://github.com/hasali19"><code>@hasali19</code></a>
made their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/337">Peternator7/strum#337</a></li>
<li><a href="https://github.com/vbrvk"><code>@vbrvk</code></a> made
their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/334">Peternator7/strum#334</a></li>
<li><a href="https://github.com/oriontvv"><code>@oriontvv</code></a>
made their first contribution in <a
href="https://redirect.github.com/Peternator7/strum/pull/333">Peternator7/strum#333</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Peternator7/strum/compare/v0.26.1...v0.26.2">https://github.com/Peternator7/strum/compare/v0.26.1...v0.26.2</a></p>
<h2>v0.26.1</h2>
<h2>0.26.1</h2>
<ul>
<li><a
href="https://redirect.github.com/Peternator7/strum/pull/325">#325</a>:
use <code>core</code> instead of <code>std</code> in VariantArray.</li>
</ul>
<h2>0.26.0</h2>
<h3>Breaking Changes</h3>
<ul>
<li>The <code>EnumVariantNames</code> macro has been renamed
<code>VariantNames</code>. The deprecation warning should steer you in
the right direction for fixing the warning.</li>
<li>The Iterator struct generated by EnumIter now has new bounds on it.
This shouldn't break code unless you manually
added the implementation in your code.</li>
<li><code>Display</code> now supports format strings using named fields
in the enum variant. This should be a no-op for most code.
However, if you were outputting a string like <code>"Hello
{field}"</code>, this will now be interpretted as a format
string.</li>
<li>EnumDiscriminant now inherits the repr and discriminant values from
your main enum. This makes the discriminant type
closer to a mirror of the original and that's always the goal.</li>
</ul>
<h3>New features</h3>
<ul>
<li>
<p>The <code>VariantArray</code> macro has been added. This macro adds
an associated constant <code>VARIANTS</code> to your enum. The constant
is a <code>&'static [Self]</code> slice so that you can access all
the variants of your enum. This only works on enums that only
have unit variants.</p>
<pre lang="rust"><code>use strum::VariantArray;
<p>#[derive(Debug, VariantArray)]
enum Color {
Red,
Blue,
Green,
</code></pre></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Peternator7/strum/blob/master/CHANGELOG.md">strum's
changelog</a>.</em></p>
<blockquote>
<h2>0.26.2</h2>
<ul>
<li><a
href="https://redirect.github.com/Peternator7/strum/pull/337">#337</a>:
Fix missing generic impls for <code>EnumTryAs</code></li>
<li><a
href="https://redirect.github.com/Peternator7/strum/pull/334">#334</a>:
Support prefix in <code>AsRefStr</code>. Technically a breaking change,
but <code>prefix</code> was just added in <code>0.26.0</code> so it's a
newer feature and it makes the feature more consisent in general.</li>
</ul>
<h2>0.26.1</h2>
<ul>
<li><a
href="https://redirect.github.com/Peternator7/strum/pull/325">#325</a>:
use <code>core</code> instead of <code>std</code> in VariantArray.</li>
</ul>
<h2>0.26.0</h2>
<h3>Breaking Changes</h3>
<ul>
<li>The <code>EnumVariantNames</code> macro has been renamed
<code>VariantNames</code>. The deprecation warning should steer you in
the right direction for fixing the warning.</li>
<li>The Iterator struct generated by EnumIter now has new bounds on it.
This shouldn't break code unless you manually
added the implementation in your code.</li>
<li><code>Display</code> now supports format strings using named fields
in the enum variant. This should be a no-op for most code.
However, if you were outputting a string like <code>"Hello
{field}"</code>, this will now be interpretted as a format
string.</li>
<li>EnumDiscriminant now inherits the repr and discriminant values from
your main enum. This makes the discriminant type
closer to a mirror of the original and that's always the goal.</li>
</ul>
<h3>New features</h3>
<ul>
<li>
<p>The <code>VariantArray</code> macro has been added. This macro adds
an associated constant <code>VARIANTS</code> to your enum. The constant
is a <code>&'static [Self]</code> slice so that you can access all
the variants of your enum. This only works on enums that only
have unit variants.</p>
<pre lang="rust"><code>use strum::VariantArray;
<p>#[derive(Debug, VariantArray)]
enum Color {
Red,
Blue,
Green,
}</p>
<p>fn main() {
println!("{:?}", Color::VARIANTS); // prints:
["Red", "Blue", "Green"]
}
</code></pre></p>
</li>
<li>
<p>The <code>EnumTable</code> macro has been <em>experimentally</em>
added. This macro adds a new type that stores an item for each variant
of the enum. This is useful for storing a value for each variant of an
enum. This is an experimental feature because
I'm not convinced the current api surface area is correct.</p>
<pre lang="rust"><code>use strum::EnumTable;
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/Peternator7/strum/commits/v0.26.2">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=strum&package-manager=cargo&previous-version=0.25.0&new-version=0.26.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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 <dependency name> 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)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
V3_GIT_ORIGIN_REV_ID: e3add1ec70f4a1ba2d8a25ef953dde94f5c8ea66
Bumps [nonempty](https://github.com/cloudhead/nonempty) from 0.8.1 to
0.10.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/cloudhead/nonempty/commits">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=nonempty&package-manager=cargo&previous-version=0.8.1&new-version=0.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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 <dependency name> 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)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
V3_GIT_ORIGIN_REV_ID: 11c6454b5e7e9877b52075f0e0efe6839ecf3be1
## Description
This PR iterates on #459.
Rather than serving the engine metadata it serves an arbitrary file,
given by the command line argument `--introspection-metadata`.
Specifying this argument gives rise to endpoints `/metadata` and
`/metadata-hash`.
![image](https://github.com/hasura/v3-engine/assets/358550/63040f02-876a-4c29-8cf1-52a305ffff67)
Update: We only load the file in at engine startup and serve that
version. Changing the file on disk will not change what the engine
serves.
---------
Co-authored-by: Gil Mizrahi <gil@gilmi.net>
V3_GIT_ORIGIN_REV_ID: db88adb5c08c4489cc1abd5fb5236b8d5ba51b9a
<!-- Thank you for submitting this PR! :) -->
## Description
I needed this, so I made it. It's nothing too complex: we just
pretty-print the `schemars` schema for the root `Metadata` type.
<!--
Questions to consider answering:
1. What user-facing changes are being made?
2. What are issues related to this PR? (Consider adding `(close
#<issue-no>)` to the PR title)
3. What is the conceptual design behind this PR?
4. How can this PR be tested/verified?
5. Does the PR have limitations?
6. Does the PR introduce breaking changes?
-->
## Changelog
- Add a changelog entry (in the "Changelog entry" section below) if the
changes in this PR have any user-facing impact. See [changelog
guide](https://github.com/hasura/graphql-engine-mono/wiki/Changelog-Guide).
- If no changelog is required ignore/remove this section and add a
`no-changelog-required` label to the PR.
### Product
_(Select all products this will be available in)_
- [ ] community-edition
- [ ] cloud
<!-- product : end : DO NOT REMOVE -->
### Type
<!-- See changelog structure:
https://github.com/hasura/graphql-engine-mono/wiki/Changelog-Guide#structure-of-our-changelog
-->
_(Select only one. In case of multiple, choose the most appropriate)_
- [ ] highlight
- [ ] enhancement
- [ ] bugfix
- [ ] behaviour-change
- [ ] performance-enhancement
- [ ] security-fix
<!-- type : end : DO NOT REMOVE -->
### Changelog entry
<!--
- Add a user understandable changelog entry
- Include all details needed to understand the change. Try including
links to docs or issues if relevant
- For Highlights start with a H4 heading (#### <entry title>)
- Get the changelog entry reviewed by your team
-->
_Replace with changelog entry_
<!-- changelog-entry : end : DO NOT REMOVE -->
<!-- changelog : end : DO NOT REMOVE -->
V3_GIT_ORIGIN_REV_ID: a9e75bfa06c35577c17d8cbf0d021b1f56826a28
<!-- Thank you for submitting this PR! :) -->
## Description
- Update to `ndc-spec`-`0.1.2`
- Use `ndc_models` since `ndc_client` was removed
- Use `Int32` in `custom_connector` everywhere
<!--
Questions to consider answering:
1. What user-facing changes are being made?
2. What are issues related to this PR? (Consider adding `(close
#<issue-no>)` to the PR title)
3. What is the conceptual design behind this PR?
4. How can this PR be tested/verified?
5. Does the PR have limitations?
6. Does the PR introduce breaking changes?
-->
V3_GIT_ORIGIN_REV_ID: 00c6e7a6c213ab0de31303a93f8446c1d371c538
- Introduce a field in NDC `Configuration` struct that carries an
optional limit (`usize`) value.
- When set, reject NDC response that is greater than the limit.
- Define a `HttpContext` struct that captures both `reqwest::Client` and
an optional limit value. Replace the `http_client` argument with
`http_context: &HttpContext` in all execute related functions.
- The `execute_query` function caller in multitenant code need to pass a
reference to `HttpContext` with appropriate NDC response size limit.
V3_GIT_ORIGIN_REV_ID: 85a3647c4d136cc8d887f343736cc011166f036f
- Adds titles to json schemas where missing
- Adds tests to ensure we don't miss titles in the future (modulo some
exceptions)
This is required to be able to autogenerate the docs for the metadata
V3_GIT_ORIGIN_REV_ID: e2027f3e3d5ee3546af99ff5c2d6de59604a3aec
I am struggling to diagnose some errors and `.unwrap` is not helping, as
it doesn't properly capture stack traces or anything else that might be
useful.
`anyhow` was built for this. Let's use it.
I had to convert `SessionError` to a real `Error`, which I don't think
is a bad thing.
V3_GIT_ORIGIN_REV_ID: 3b8a70bb87e12e7b9e39515cd5f769fbd2cbfb39
If we're running a mockito server in async tests, we must use
`new_async`.
The latest version enforces this.
V3_GIT_ORIGIN_REV_ID: cb58f248336c7bab08329d311b8b97b8244437a1
<!-- Thank you for submitting this PR! :) -->
## Description
I have upgraded ndc-spec to v0.1.1. This pulls in an upgrade to
opentelemetry v0.22 so I've done that too.
We had issues with the `traceresponse` response header disappearing when
using an opentelemetry version > v0.20. This seems to be resolved here,
probably because we have pinned a single version of opentelemetry rather
than loading multiple at once. I added the `traceresponse` header to
verify this, and have left it in because it doesn't seem to hurt
anything.
I verified that everything works as expected with the OSS components,
but not multitenant.
## Changelog
- Add a changelog entry (in the "Changelog entry" section below) if the
changes in this PR have any user-facing impact. See [changelog
guide](https://github.com/hasura/graphql-engine-mono/wiki/Changelog-Guide).
- If no changelog is required ignore/remove this section and add a
`no-changelog-required` label to the PR.
### Product
_(Select all products this will be available in)_
- [x] community-edition
- [x] cloud
<!-- product : end : DO NOT REMOVE -->
### Type
<!-- See changelog structure:
https://github.com/hasura/graphql-engine-mono/wiki/Changelog-Guide#structure-of-our-changelog
-->
_(Select only one. In case of multiple, choose the most appropriate)_
- [ ] highlight
- [x] enhancement
- [ ] bugfix
- [ ] behaviour-change
- [ ] performance-enhancement
- [ ] security-fix
<!-- type : end : DO NOT REMOVE -->
### Changelog entry
<!--
- Add a user understandable changelog entry
- Include all details needed to understand the change. Try including
links to docs or issues if relevant
- For Highlights start with a H4 heading (#### <entry title>)
- Get the changelog entry reviewed by your team
-->
v3 engine GraphQL queries now include a "traceresponse" header.
<!-- changelog-entry : end : DO NOT REMOVE -->
<!-- changelog : end : DO NOT REMOVE -->
V3_GIT_ORIGIN_REV_ID: f37b6bdb1331b55c49f0bd953f522f5eca298d1d
`IndexMap::remove` has been deprecated in favor of
`IndexMap::swap_remove` (which has the same behavior, but is clearer
about breaking ordering) or `IndexMap::shift_remove`, which retains
order but is O(n) complexity.
I have taken a look at the areas where we use `.remove`. Where we
discard the map afterwards, I've changed it to `.swap_remove`. In one
case, we do return the data in the event of error, but we probably care
more about consistency of ordering than the actual precise order, so
I've used a `HashMap` and just sorted it instead.
V3_GIT_ORIGIN_REV_ID: 479e1013a4a9938f973b5ed85dbf3837896151e4
<!-- Thank you for submitting this PR! :) -->
## Description
For some reason, `cargo test` fails because of missing types in doc
comment code, but `cargo nextest run` in CI does not. Re-adding `axum`
as a dep dependency to `tracing-util` fixes this.
---------
Co-authored-by: Samir Talwar <samir.talwar@hasura.io>
V3_GIT_ORIGIN_REV_ID: 518e6faf702895d9c434056a57c40c2db6f4b0a8
`cargo machete` is a very useful tool that figures out when you aren't
using a dependency. I have run this locally to remove unused
dependencies.
I've also added a CI job to make sure we catch these in the future.
Sometimes it reports false positives, e.g. when a dependency isn't used
directly but in macro-generated code (e.g. with `strum`). I have added
`"ignored"` clauses to the `Cargo.toml` files where appropriate.
V3_GIT_ORIGIN_REV_ID: ed015089b695cec8eeb03ce455d6dd3cd312a016
This was a simple solution to prevent crashes from the cases that I was
able to discover, refactored into a macro that can be used elsewhere;
but I suspect there's a more idiomatic rust solution
(entailing a big refactor?). There's also the stacker crate, and see
also discussion here:
https://hasurahq.slack.com/archives/C04PUMV4X16/p1707337409839869?thread_ts=1701302324.058369&cid=C04PUMV4X16
Note that the compiled binary was built and fuzzed with `--release`.
Many discovered cases caused crashes when run into non-optimized binary
(probably stack overflows but I did not look into it)
V3_GIT_ORIGIN_REV_ID: 31acfc9e358c807be80ba6a5efa78ace78306291
<!-- Thank you for submitting this PR! :) -->
## Description
We don't want `v3-engine-multitenant` to import any opentelemetry
libraries directly, so we add more functions and re-exports here
instead.
V3_GIT_ORIGIN_REV_ID: 2e38b9b1ba6fda23d1bfe8e20549c3a95bd5a2fa
<!-- Thank you for submitting this PR! :) -->
## Description
This PR downgrades the opentelemetry versions to 0.20. This fixed the
tracing propagation issues faced
[here](https://hasurahq.slack.com/archives/C066TKMH79R/p1710177836329809).
### TODOs:
- [ ] Figure out the exact issue which caused the context propagation to
stop working
- [ ] Open an issue with
[opentelemetry](https://github.com/open-telemetry/opentelemetry-rust)
(if required).
Co-authored-by: Anon Ray <ecthiender@users.noreply.github.com>
V3_GIT_ORIGIN_REV_ID: 0bc4d8142bd2f671e04d1cbf806f4626e2217332
Reverts hasura/v3-engine#367
This is causing downstream problems in `v3-metadata-build-service`,
let's roll back for now to unblock things.
V3_GIT_ORIGIN_REV_ID: 3261f2f12825c8eac3353a2282b982f0f3bac80e
Bumps [serde_with](https://github.com/jonasbb/serde_with) from 2.3.3 to
3.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jonasbb/serde_with/releases">serde_with's
releases</a>.</em></p>
<blockquote>
<h2>serde_with v3.7.0</h2>
<h3>Added</h3>
<ul>
<li>Implement <code>JsonSchemaAs</code> for <code>EnumMap</code> by <a
href="https://github.com/swlynch99"><code>@swlynch99</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/697">#697</a>)</li>
<li>Implement <code>JsonSchemaAs</code> for
<code>IfIsHumanReadable</code> by <a
href="https://github.com/swlynch99"><code>@swlynch99</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/717">#717</a>)</li>
<li>Implement <code>JsonSchemaAs</code> for <code>KeyValueMap</code> by
<a href="https://github.com/swlynch99"><code>@swlynch99</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/713">#713</a>)</li>
<li>Implement <code>JsonSchemaAs</code> for <code>OneOrMany</code> by <a
href="https://github.com/swlynch99"><code>@swlynch99</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/719">#719</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Detect conflicting <code>schema_with</code> attributes on fields
with <code>schemars</code> annotations by <a
href="https://github.com/swlynch99"><code>@swlynch99</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/715">#715</a>)
This extends the existing avoidance mechanism to a new variant fixing <a
href="https://redirect.github.com/jonasbb/serde_with/issues/712">#712</a>.</li>
</ul>
<h2>serde_with v3.6.1</h2>
<h3>Changed</h3>
<ul>
<li>Eliminate dependency on serde's "derive" feature by <a
href="https://github.com/dtolnay"><code>@dtolnay</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/694">#694</a>)
This allows parallel compilation of <code>serde</code> and
<code>serde_derive</code> which can speed up the wallclock time.
It requires that downstream crates do not use the "derive"
feature either.</li>
</ul>
<h2>serde_with v3.6.0</h2>
<h3>Added</h3>
<ul>
<li>Add <code>IfIsHumanReadable</code> for conditional implementation by
<a href="https://github.com/irriden"><code>@irriden</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/690">#690</a>)
Used to specify different transformations for text-based and binary
formats.</li>
<li>Add more <code>JsonSchemaAs</code> impls for all
<code>Duration*</code> and <code>Timestamp*</code> adaptors by <a
href="https://github.com/swlynch99"><code>@swlynch99</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/685">#685</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Bump MSRV to 1.65, since that is required for the <code>regex</code>
dependency.</li>
</ul>
<h2>serde_with v3.5.1</h2>
<h3>Fixed</h3>
<ul>
<li>The <code>serde_as</code> macro now better detects existing
<code>schemars</code> attributes on fields and incorporates them by <a
href="https://github.com/swlynch99"><code>@swlynch99</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/682">#682</a>)
This avoids errors on existing <code>#[schemars(with = ...)]</code>
annotations.</li>
</ul>
<h2>serde_with v3.5.0</h2>
<h3>Added</h3>
<ul>
<li>Support for <code>schemars</code> integration added by <a
href="https://github.com/swlynch99"><code>@swlynch99</code></a> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/666">#666</a>)
The support uses a new <code>Schema</code> top-level item which
implements <code>JsonSchema</code>
The <code>serde_as</code> macro can now detect <code>schemars</code>
usage and emits matching annotations for all fields with
<code>serde_as</code> attribute.
Many types of this crate come already with support for the
<code>schemars</code>, but support is not complete and will be extended
over time.</li>
</ul>
<h2>serde_with v3.4.0</h2>
<ul>
<li>
<p>Lower minimum required serde version to 1.0.152 (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/653">#653</a>)
Thanks to <a href="https://github.com/banool"><code>@banool</code></a>
for submitting the PR.</p>
<p>This allows people that have a problem with 1.0.153 to still use
<code>serde_with</code>.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bcda3fa3ff"><code>bcda3fa</code></a>
Bump version to 3.7.0 (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/720">#720</a>)</li>
<li><a
href="a446da1e12"><code>a446da1</code></a>
Bump version to 3.7.0</li>
<li><a
href="7e9772ff1e"><code>7e9772f</code></a>
Implement <code>JsonSchemaAs</code> for <code>OneOrMany</code> (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/719">#719</a>)</li>
<li><a
href="5e360837b0"><code>5e36083</code></a>
Add impls and tests for OneOrMany</li>
<li><a
href="c5c35db655"><code>c5c35db</code></a>
Implement JsonSchemaAs for KeyValueMap (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/713">#713</a>)</li>
<li><a
href="046f820610"><code>046f820</code></a>
Bump the github-actions group with 1 update (<a
href="https://redirect.github.com/jonasbb/serde_with/issues/718">#718</a>)</li>
<li><a
href="7e87fe5632"><code>7e87fe5</code></a>
Bump the github-actions group with 1 update</li>
<li><a
href="ffade779c5"><code>ffade77</code></a>
Add <code>JsonSchemaAs</code> impl for <code>IfIsHumanReadable</code>
(<a
href="https://redirect.github.com/jonasbb/serde_with/issues/717">#717</a>)</li>
<li><a
href="bb2ab60a3a"><code>bb2ab60</code></a>
Add JsonSchemaAs impl for IfIsHumanReadable</li>
<li><a
href="a80425783f"><code>a804257</code></a>
Implement JsonSchemaAs for KeyValueMap</li>
<li>Additional commits viewable in <a
href="https://github.com/jonasbb/serde_with/compare/v2.3.3...v3.7.0">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_with&package-manager=cargo&previous-version=2.3.3&new-version=3.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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 <dependency name> 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)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
V3_GIT_ORIGIN_REV_ID: 1db291014bc664f7e9d46c8f187989994980ea85
Bumps [bson](https://github.com/mongodb/bson-rust) from 2.7.0 to 2.9.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mongodb/bson-rust/releases">bson's
releases</a>.</em></p>
<blockquote>
<h2>v2.9.0</h2>
<p>The MongoDB Rust driver team is pleased to announce the v2.9.0
release of the <code>bson</code> crate.</p>
<h2>Highlighted Changes</h2>
<p>This release adds several externally contributed improvements!</p>
<ul>
<li>A new <code>RawIter</code> type that iterates over elements in a
document without deserializing them,</li>
<li>An improvement to the <code>doc</code> and <code>bson</code> macros
(and their <code>raw</code> counterparts) that allows using types that
implement <code>Into<Bson></code> or
<code>Into<RawBson></code>,</li>
<li>An impl of <code>From<&mut T></code> for <code>Bson</code>
for types that implement <code>Into<Bson></code>,</li>
<li>A smaller dependency tree thanks to updating the indexmap
crate,</li>
<li>And a fix for the <code>serde_with</code> 3.x support for the
<code>Uuid</code> type.</li>
</ul>
<h2>Full Release Notes</h2>
<h2>New Features</h2>
<ul>
<li>RUST-1815 provide lazy iterator implementation (thanks <a
href="https://github.com/tychoish"><code>@tychoish</code></a>!)</li>
<li>RUST-1716 Add BSON Binary Data subtype Sensitive (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/454">#454</a>)</li>
</ul>
<h2>Improvements</h2>
<ul>
<li>RUST-1822 Allow using the {,raw}{bson,doc} with types implementing
Into<!-- raw HTML omitted --> (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/450">#450</a>)
(thanks <a
href="https://github.com/tyilo"><code>@tyilo</code></a>!)</li>
<li>RUST-1825 Implement From<!-- raw HTML omitted --> for Bson (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/452">#452</a>)
(thanks <a
href="https://github.com/tyilo"><code>@tyilo</code></a>!)</li>
<li>RUST-1814 minor: bump indexmap to 2.1.0 (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/448">#448</a>)
(thanks <a
href="https://github.com/froydnj"><code>@froydnj</code></a>!)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>RUST-1828 Fix feature name for serde_with Uuid implementation (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/453">#453</a>)
(thanks <a
href="https://github.com/jonasbb"><code>@jonasbb</code></a>!)</li>
</ul>
<h2>v2.8.1</h2>
<p>The MongoDB Rust driver team is pleased to announce the v2.8.1
release of the <code>bson</code> crate.</p>
<h2>Highlighted Changes</h2>
<p>This release fixes compilation for the <code>wasm32-wasi</code>
target, which broke in the 2.8.0 release.</p>
<h2>Full Release Notes</h2>
<h2>Bugfixes</h2>
<ul>
<li>Fix compilation on wasm32-wasi target <a
href="https://redirect.github.com/mongodb/bson-rust/issues/445">#445</a>
(thanks <a
href="https://github.com/tyranron"><code>@tyranron</code></a>!)</li>
</ul>
<h2>v2.8.0</h2>
<p>The MongoDB Rust driver team is pleased to announce the v2.8.0
release of the <code>bson</code> crate.</p>
<h2>Highlighted Changes</h2>
<p>This release adds optimizations to the <code>serde</code> integration
that show up to 50% deserialization speed improvement in our benchmarks,
as well as a variety of user-submitted fixes.</p>
<h2>Full Release Notes</h2>
<h2>Improvements</h2>
<ul>
<li>RUST-1132 Implement DeserializeSeed for owned and borrowed raw
documents (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/433">#433</a>)</li>
<li>RUST-1780 Bump MSRV to 1.61.0, upgrade ahash to 0.8.5 in
<code>Cargo.lock.msrv</code> (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/436">#436</a>)
(thanks <a
href="https://github.com/stIncMale"><code>@stIncMale</code></a>!)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="38ffff5343"><code>38ffff5</code></a>
release v2.9.0 (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/455">#455</a>)</li>
<li><a
href="230dab13f5"><code>230dab1</code></a>
RUST-1716 Add BSON Binary Data subtype Sensitive (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/454">#454</a>)</li>
<li><a
href="81a9895089"><code>81a9895</code></a>
Fix feature name for serde_with Uuid implementation (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/453">#453</a>)</li>
<li><a
href="8247d271b2"><code>8247d27</code></a>
Implement From<&mut T> for Bson (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/452">#452</a>)</li>
<li><a
href="622007da1d"><code>622007d</code></a>
minor: update clippy to 1.75 (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/451">#451</a>)</li>
<li><a
href="7e114303ae"><code>7e11430</code></a>
Allow using the {,raw}{bson,doc} with types implementing
Into<{,Raw}Bson> (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/450">#450</a>)</li>
<li><a
href="9294ee5b45"><code>9294ee5</code></a>
provide lazy iterator implementation (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/449">#449</a>)</li>
<li><a
href="d044889a9f"><code>d044889</code></a>
minor: bump indexmap to <code>2.1.0</code> (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/448">#448</a>)</li>
<li><a
href="4af5805248"><code>4af5805</code></a>
Fix compilation on <code>wasm32-wasi</code> target (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/445">#445</a>)</li>
<li><a
href="6981c342c7"><code>6981c34</code></a>
release v2.8.0 (<a
href="https://redirect.github.com/mongodb/bson-rust/issues/443">#443</a>)
(<a
href="https://redirect.github.com/mongodb/bson-rust/issues/444">#444</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mongodb/bson-rust/compare/v2.7.0...v2.9.0">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bson&package-manager=cargo&previous-version=2.7.0&new-version=2.9.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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 <dependency name> 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)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
V3_GIT_ORIGIN_REV_ID: 8e483de7788695902efdfbb2c9fe0b9b185b4bf7
Outputs traces to stdout in addition to exporting via otlp. Stdout contains one JSON object per line, with a single span resource in each output line. This will make it quite a bit easier for me to get a quick look at what is going on in the engine during local development.
The first commit makes the change using the existing opentelemetry crate versions. The second commit upgrades the opentelemetry dependencies. I thought I would include that just because I went to the trouble of figuring out how to do that upgrade.
The JSON output is noisy, but can be formatted nicely with some shell functions. For example in nushell I use these functions to process the opentelemetry data coming via docker-compose or arion-compose log output:
```nu
# Get log output from arion/docker-compose services with JSON parsing. If an
# argument is given filters to logs from the given service
def logs [
service?: string@docker_compose_services
--file (-f): string = "./arion-compose.nix" # Use FILE instead of the default ./arion-compose.nix
] {
let args = [$service] | compact
let input = if ($file | path exists) {
arion --file $file logs ...$args
} else {
docker-compose logs ...$args
}
$input
| lines
| parse -r '^(?<service>\S+)\s*\|\s*(?<log>.*)$'
| where {|it| is_json $it.log}
| update log {|it| $it.log | from json }
| flatten
}
# Gets log output from a given docker-compose service, and extracts and formats
# relevant opentelemetry data
def otel [
service: string@docker_compose_services
--file (-f): string = "./arion-compose.nix" # Use FILE instead of the default ./arion-compose.nix
] {
logs $service -f $file | get resourceSpans | each {|it| $it.scopeSpans.0.spans.0 | select name attributes status }
}
# Helper to provide autocompletion for inputs to the logs command
def docker_compose_services [] {
let compose_file = if ("arion-compose.nix" | path exists) {
arion cat | from json
} else if ("docker-compose.yaml" | path exists) {
open docker-compose.yaml
} else {
return []
}
$compose_file | get services | columns
}
# Helper for the logs command
def is_json [input: string] {
($input | from json | describe) =~ '^(record|table|list)'
}
```
V3_GIT_ORIGIN_REV_ID: 38fd62f321a363a52b03d661b66d4dd49ac922de