mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 09:22:43 +03:00
4160b783fe
793 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
Daniel Harvey
|
4160b783fe |
Changelog for v2024.10.21 release (#1248)
Update changelog. V3_GIT_ORIGIN_REV_ID: 469adb7ecab0ee0ed3a156e0a8e55db993af5619 |
||
dependabot[bot]
|
9e35246aca |
Bump futures from 0.3.30 to 0.3.31 (#1245)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.30 to 0.3.31. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/releases">futures's releases</a>.</em></p> <blockquote> <h2>0.3.31</h2> <ul> <li>Fix use after free of task in <code>FuturesUnordered</code> when dropped future panics (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2886">#2886</a>)</li> <li>Fix soundness bug in <code>task::waker_ref</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2830">#2830</a>) This is a breaking change but allowed because it is soundness bug fix.</li> <li>Fix bugs in <code>AsyncBufRead::read_line</code> and <code>AsyncBufReadExt::lines</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2884">#2884</a>)</li> <li>Fix parsing issue in <code>select!</code>/<code>select_biased!</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2832">#2832</a>) This is technically a breaking change as it will now reject a very odd undocumented syntax that was previously accidentally accepted.</li> <li>Work around issue due to upstream <code>Waker::will_wake</code> change (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2865">#2865</a>)</li> <li>Add <code>stream::Iter::{get_ref,get_mut,into_inner}</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2875">#2875</a>)</li> <li>Add <code>future::AlwaysReady</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2825">#2825</a>)</li> <li>Relax trait bound on non-constructor methods of <code>io::{BufReader,BufWriter}</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2848">#2848</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures's changelog</a>.</em></p> <blockquote> <h1>0.3.31 - 2024-10-05</h1> <ul> <li>Fix use after free of task in <code>FuturesUnordered</code> when dropped future panics (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2886">#2886</a>)</li> <li>Fix soundness bug in <code>task::waker_ref</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2830">#2830</a>) This is a breaking change but allowed because it is soundness bug fix.</li> <li>Fix bugs in <code>AsyncBufRead::read_line</code> and <code>AsyncBufReadExt::lines</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2884">#2884</a>)</li> <li>Fix parsing issue in <code>select!</code>/<code>select_biased!</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2832">#2832</a>) This is technically a breaking change as it will now reject a very odd undocumented syntax that was previously accidentally accepted.</li> <li>Work around issue due to upstream <code>Waker::will_wake</code> change (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2865">#2865</a>)</li> <li>Add <code>stream::Iter::{get_ref,get_mut,into_inner}</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2875">#2875</a>)</li> <li>Add <code>future::AlwaysReady</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2825">#2825</a>)</li> <li>Relax trait bound on non-constructor methods of <code>io::{BufReader,BufWriter}</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2848">#2848</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
816992f1e4 |
Bump openssl from 0.10.66 to 0.10.68 (#1244)
Bumps [openssl](https://github.com/sfackler/rust-openssl) from 0.10.66 to 0.10.68. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sfackler/rust-openssl/releases">openssl's releases</a>.</em></p> <blockquote> <h2>openssl-v0.10.68</h2> <h2>What's Changed</h2> <ul> <li>fixes <a href="https://redirect.github.com/sfackler/rust-openssl/issues/2317">#2317</a> -- restore compatibility with our MSRV and release openssl 0.9.68 by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2318">sfackler/rust-openssl#2318</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.67...openssl-v0.10.68">https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.67...openssl-v0.10.68</a></p> <h2>openssl-v0.10.67</h2> <h2>What's Changed</h2> <ul> <li>Added a utility function to ensure we never have an issue with 0-length slices from pointers again by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2268">sfackler/rust-openssl#2268</a></li> <li>Fix CI for the latest rustc by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2271">sfackler/rust-openssl#2271</a></li> <li>Add binding for EVP_DigestSqueeze by <a href="https://github.com/initsecret"><code>@initsecret</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2270">sfackler/rust-openssl#2270</a></li> <li>libressl 4.0: const correctness for X509_LOOKUP_METHOD by <a href="https://github.com/botovq"><code>@botovq</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2276">sfackler/rust-openssl#2276</a></li> <li>Bump hex dev-dependency version by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2277">sfackler/rust-openssl#2277</a></li> <li>Raise bindgen version by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2278">sfackler/rust-openssl#2278</a></li> <li>Ensure Rsa::check_key doesn't leave errors on the stack by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2279">sfackler/rust-openssl#2279</a></li> <li>Update some docs to use the corresponds macro by <a href="https://github.com/rushilmehra"><code>@rushilmehra</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2282">sfackler/rust-openssl#2282</a></li> <li>Don't leave errors on the stack in <code>MdCtxRef::digest_verify_final</code> by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2283">sfackler/rust-openssl#2283</a></li> <li>Adjustments for LibreSSL 4 by <a href="https://github.com/botovq"><code>@botovq</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2287">sfackler/rust-openssl#2287</a></li> <li>Explicit rustfmt config by <a href="https://github.com/kornelski"><code>@kornelski</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2285">sfackler/rust-openssl#2285</a></li> <li>add basic EVP_KDF bindings by <a href="https://github.com/reaperhulk"><code>@reaperhulk</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2289">sfackler/rust-openssl#2289</a></li> <li>add ossl3 thread pool bindings by <a href="https://github.com/reaperhulk"><code>@reaperhulk</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2293">sfackler/rust-openssl#2293</a></li> <li>add argon2id support for ossl 3.2+ by <a href="https://github.com/reaperhulk"><code>@reaperhulk</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2290">sfackler/rust-openssl#2290</a></li> <li>fix 3.2.0 thread support and simplify by <a href="https://github.com/reaperhulk"><code>@reaperhulk</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2294">sfackler/rust-openssl#2294</a></li> <li>add libctx arg to argon2id by <a href="https://github.com/reaperhulk"><code>@reaperhulk</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2295">sfackler/rust-openssl#2295</a></li> <li>support using threads in argon2id by <a href="https://github.com/reaperhulk"><code>@reaperhulk</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2296">sfackler/rust-openssl#2296</a></li> <li>Ensure beginning and end of the error output is readable by <a href="https://github.com/kornelski"><code>@kornelski</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2284">sfackler/rust-openssl#2284</a></li> <li>Test against 3.4.0-alpha1 by <a href="https://github.com/sfackler"><code>@sfackler</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2302">sfackler/rust-openssl#2302</a></li> <li>Resolve clippy warnings from nightly by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2310">sfackler/rust-openssl#2310</a></li> <li>fixes <a href="https://redirect.github.com/sfackler/rust-openssl/issues/2311">#2311</a> -- silencer resolver warnings by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2312">sfackler/rust-openssl#2312</a></li> <li>Bump to 3.4.0-beta1 by <a href="https://github.com/sfackler"><code>@sfackler</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2313">sfackler/rust-openssl#2313</a></li> <li>LibreSSL 4.0.0 by <a href="https://github.com/botovq"><code>@botovq</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2315">sfackler/rust-openssl#2315</a></li> <li>Release openssl v0.10.67 and openssl-sys v0.9.104 by <a href="https://github.com/alex"><code>@alex</code></a> in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2316">sfackler/rust-openssl#2316</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/initsecret"><code>@initsecret</code></a> made their first contribution in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2270">sfackler/rust-openssl#2270</a></li> <li><a href="https://github.com/rushilmehra"><code>@rushilmehra</code></a> made their first contribution in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2282">sfackler/rust-openssl#2282</a></li> <li><a href="https://github.com/kornelski"><code>@kornelski</code></a> made their first contribution in <a href="https://redirect.github.com/sfackler/rust-openssl/pull/2285">sfackler/rust-openssl#2285</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.66...openssl-v0.10.67">https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.66...openssl-v0.10.67</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
d157aa9382 |
Bump clap from 4.5.19 to 4.5.20 (#1243)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.19 to 4.5.20. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p> <blockquote> <h2>[4.5.20] - 2024-10-08</h2> <h3>Features</h3> <ul> <li><em>(unstable)</em> Add <code>CommandExt</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
6ee7a183d4 |
Bump syn from 2.0.79 to 2.0.82 (#1242)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.79 to 2.0.82. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/syn/releases">syn's releases</a>.</em></p> <blockquote> <h2>2.0.82</h2> <ul> <li>Provide <code>Parse</code> impls for PreciseCapture and CapturedParam (<a href="https://redirect.github.com/dtolnay/syn/issues/1757">#1757</a>, <a href="https://redirect.github.com/dtolnay/syn/issues/1758">#1758</a>)</li> <li>Support parsing <code>unsafe</code> attributes (<a href="https://redirect.github.com/dtolnay/syn/issues/1759">#1759</a>)</li> <li>Add Fold and VisitMut methods for Vec<Attribute> (<a href="https://redirect.github.com/dtolnay/syn/issues/1762">#1762</a>)</li> </ul> <h2>2.0.81</h2> <ul> <li>Add TypeParamBound::PreciseCapture to represent precise capture syntax <code>impl Trait + use<'a, T></code> (<a href="https://redirect.github.com/dtolnay/syn/issues/1752">#1752</a>, <a href="https://redirect.github.com/dtolnay/syn/issues/1753">#1753</a>, <a href="https://redirect.github.com/dtolnay/syn/issues/1754">#1754</a>)</li> </ul> <h2>2.0.80</h2> <ul> <li>Add <code>Expr::RawAddr</code> (<a href="https://redirect.github.com/dtolnay/syn/issues/1743">#1743</a>)</li> <li>Reject precise captures and ~const in inappropriate syntax positions (<a href="https://redirect.github.com/dtolnay/syn/issues/1747">#1747</a>)</li> <li>Reject trait bound containing only precise capture (<a href="https://redirect.github.com/dtolnay/syn/issues/1748">#1748</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
2922ef2ef3 |
Bump uuid from 1.10.0 to 1.11.0 (#1241)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.10.0 to 1.11.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/uuid-rs/uuid/releases">uuid's releases</a>.</em></p> <blockquote> <h2>1.11.0</h2> <h2>What's Changed</h2> <ul> <li>Upgrade zerocopy to 0.8 by <a href="https://github.com/yotamofek"><code>@yotamofek</code></a> in <a href="https://redirect.github.com/uuid-rs/uuid/pull/771">uuid-rs/uuid#771</a></li> <li>Prepare for 1.11.0 release by <a href="https://github.com/KodrAus"><code>@KodrAus</code></a> in <a href="https://redirect.github.com/uuid-rs/uuid/pull/772">uuid-rs/uuid#772</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/yotamofek"><code>@yotamofek</code></a> made their first contribution in <a href="https://redirect.github.com/uuid-rs/uuid/pull/771">uuid-rs/uuid#771</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/uuid-rs/uuid/compare/1.10.0...1.11.0">https://github.com/uuid-rs/uuid/compare/1.10.0...1.11.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
Abhinav Gupta
|
0ac2fbb2e1 |
Revert "subscriptions: Unhide OpenDd Metadata and lift from unstability" (#1246)
Reverts hasura/v3-engine#1225 According to @danieljharvey, websockets don't currently work in multitenant and we want to do a release using a commit after this one. V3_GIT_ORIGIN_REV_ID: 2d9239ab3203d5acbedef1cd86644861a99c99b2 |
||
Daniel Harvey
|
065035631c |
Check JSONAPI sorting (#1234)
<!-- The PR description should answer 2 important questions: --> ### What Wasn't sure what was implemented, added some tests, it's working. This PR is stacked on top of https://github.com/hasura/v3-engine/pull/1233 V3_GIT_ORIGIN_REV_ID: fbfce6dd8ce325c5a1659db2755a09c7728030f2 |
||
Rakesh Emmadi
|
db19cf965a |
subscriptions: Unhide OpenDd Metadata and lift from unstability (#1225)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> - Remove `enable-subscriptions` from unstable features. - Expose the subscriptions related opendd metadata in the json schema ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> - Update unstable feature related types by dropping subscriptions. - Remove `hidden=true` opendd attribute and other related on subscription opendd metadata. - Update json schema files V3_GIT_ORIGIN_REV_ID: 0aa763f516d394aab2e375da0817d0e60228c9b2 |
||
Phil Freeman
|
16118760fd |
[ENG-643] Support array-valued session variables (#1221)
<!-- The PR description should answer 2 important questions: --> ### What Allows JSON arrays in session variables. ### How If the type of a session variable isn't special (custom scalar, string, or ID), then we parse the header as JSON, and switch into type-_checking_ mode, returning the JSON wholesale if the type matches. V3_GIT_ORIGIN_REV_ID: 386558898a188c06b73270a90020a20ff963f5a0 |
||
Rakesh Emmadi
|
a0b998ad7c |
subscriptions: respect allow_subscriptions in select permissions (#1235)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> Until now the `allow_subscriptions` in select permission is no-op. This PR implements its intended functionality, i.e, do not generate subscription root field schema for models that don't have `allow_subscriptions: true`. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> - Plumb the `allow_subscriptions` value to namespace annotation. - Modify subscription root field annotations; filter roles by allow_subscriptions. - Add a check in IR generation for the permission and raise an internal error, if the check fails. V3_GIT_ORIGIN_REV_ID: 98120809b1294716c96c190e1b6ec875635b5da1 |
||
Daniel Harvey
|
c80d0db252 |
Tidy JSONAPI up (#1233)
<!-- The PR description should answer 2 important questions: --> ### What Work so far has been mostly in one big file, let's split it up a bit so we can see what is going on better. ### How Move code around. No functional changes. V3_GIT_ORIGIN_REV_ID: 7dbb2ea8d66de845a0e725edf61eede65cd2d994 |
||
Daniel Harvey
|
1879d1bb75 |
Enable argument presets in OpenDD pipeline (#1228)
<!-- The PR description should answer 2 important questions: --> ### What This PR enables argument presets in the OpenDD pipeline by using functions from `graphql_ir`. In the ideal future we'd flip the dependency and move these functions out of `graphql_ir` and into the `plan` crate, however we can't do that until `execute` crate is no longer in active development as it will involve making a big mess there. ### How - Calculate argument presets in the `plan/query/model_target` module using functions from `graphql_ir` - We also begin adding boolean expression resolve, then back away slowly as it's a massive job and better tackled when we start making `where` clauses work in this pipeline, to stop this PR ballooning insanely. V3_GIT_ORIGIN_REV_ID: 47867452b7366e83f71b118e37302de93d9bde72 |
||
Daniel Harvey
|
79decc86e2 |
Fix a few small JSONAPI bugs (#1230)
<!-- The PR description should answer 2 important questions: --> Fixes - offset / limit didn't work - fixed by updating the `hasura/jsonapi` library to use `offset` / `limit` instead of `number` / `page` - this was a change in JSONAPI 1.1 - Render type names as `subgraph_typename` - Send `OrderBy` as `None` when it contains no columns - `Some(vec![])` was upsetting Mongo, so let's be more stringent. No functional changes as feature is behind flag. V3_GIT_ORIGIN_REV_ID: 419993a3acd955ef74872078d11769f564c7fc36 |
||
Rakesh Emmadi
|
8844fab8d3 |
opendd-derive: Support multiple JSON schema examples (#1229)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> The `example` JSON schema attribute can be specified multiple times enabling inclusion of multiple examples. The OpenDd metadata is auto-documented in hasura.io/docs using the json schema. Having multiple examples is quite helpful for our users. Inspired from the `schemars`'s `example` attribute behavior. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> - Use `#[darling(multiple)]` attr to allow the `example` attribute multiple times. - Add more examples for model predicates and permission. V3_GIT_ORIGIN_REV_ID: 7e9c31891afed5b96ec8a5bb7538062382ef4d27 |
||
Daniel Harvey
|
3eb06d9314 |
Commit snapshot test per role (#1227)
<!-- The PR description should answer 2 important questions: --> ### What We've been testing our OpenDD pipeline with snapshot tests that run for each role. However, now that we're adding argument presets, it means that the results will potentially be different. Therefore this saves snapshots for each role the test is run against so that we don't get tests conflicting with themselves. Functional no-op. ### How Change label in `insta::assert_json_snapshot!`, commit new snapshots. V3_GIT_ORIGIN_REV_ID: 1570ed82bdb76d27270c73c96d2671e8a3c7fe13 |
||
Vamshi Surabhi
|
77c6f9b7ca |
/sql endpoint on multi-tenant (#1219)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> --------- Co-authored-by: Abhinav Gupta <127770473+abhinav-hasura@users.noreply.github.com> V3_GIT_ORIGIN_REV_ID: 05adb2015efda4d5244b93cfe337991370f0b27e |
||
Daniel Harvey
|
bec9dee021 |
Move argument presets resolve into metadata-resolve (#1226)
<!-- The PR description should answer 2 important questions: --> ### What Previously we were doing the business of calculating which arguments (and parts of arguments) were preset in the GraphQL `schema` crate. This meant we would have to reimplement the logic for each backend. Now we move it into `metadata-resolve` so the results can be shared by all frontends. ### How Move argument preset resolve into `metadata-resolve`. What's left in `graphql-schema` is all the stuff relating to `Annotation`s of various kinds. A lot of the diff is changing `ModelWithPermissions` and `CommandWithPermissions` to `ModelWithArgumentPresets` and `CommandWithArgumentPresets` in crates after `metadata-resolve`. Functional no-op. V3_GIT_ORIGIN_REV_ID: b1b0983abb9f6282652c8689b02e0796026752f5 |
||
Rakesh Emmadi
|
3786242902 |
graphql-ws: Extend GraphQL over websockets to multitenant (#1206)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> - Return the `Sec-WebSocket-Id` header denoting a unique id for the websocket connection, in the handshake request response. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> V3_GIT_ORIGIN_REV_ID: 3639a231e3bdcb8f1f6affa66c21254890dd9d2d |
||
Daniel Harvey
|
c6cc462e0c |
Run stop-docker in just docker-refresh to ensure volumes are removed (#1224)
<!-- The PR description should answer 2 important questions: --> ### What Make sure we trash old Postgres DB data when refreshing Docker, to make sure we start with the newest data. V3_GIT_ORIGIN_REV_ID: 25416e918431a915fece6fe2d9478fa722f6a7c5 |
||
Daniel Harvey
|
e133716dce |
Changelog for v2024.10.14 release (#1223)
Update changelog for `v2024.10.14` release. V3_GIT_ORIGIN_REV_ID: c160dac4b5fbbbb873434b38b6dd983e24ab8975 |
||
dependabot[bot]
|
6d2376648c |
Bump indexmap from 2.5.0 to 2.6.0 (#1214)
Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.5.0 to 2.6.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md">indexmap's changelog</a>.</em></p> <blockquote> <h2>2.6.0 (2024-10-01)</h2> <ul> <li>Implemented <code>Clone</code> for <code>map::IntoIter</code> and <code>set::IntoIter</code>.</li> <li>Updated the <code>hashbrown</code> dependency to version 0.15.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
35c29fff5a |
Bump serde_with from 3.9.0 to 3.11.0 (#1213)
Bumps [serde_with](https://github.com/jonasbb/serde_with) from 3.9.0 to 3.11.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.11.0</h2> <h3>Added</h3> <ul> <li> <p>Add support for <code>hashbrown</code> v0.15 (<a href="https://redirect.github.com/jonasbb/serde_with/issues/787">#787</a>/<a href="https://redirect.github.com/jonasbb/serde_with/issues/790">#790</a>)</p> <p>This extends the existing support for <code>hashbrown</code> v0.14 to the newly released version.</p> </li> </ul> <h2>serde_with v3.10.0</h2> <h3>Added</h3> <ul> <li> <p>Add newline separator by <a href="https://github.com/jayvdb"><code>@jayvdb</code></a> (<a href="https://redirect.github.com/jonasbb/serde_with/issues/777">#777</a>)</p> <p>The <code>UnixLineSeparator</code> and <code>DosLineSeparator</code> can be used together with <code>StringWithSeparator</code>.</p> </li> </ul> <h3>Fixed</h3> <ul> <li> <p>Proper handling of <code>cfg_attr</code> in the <code>serde_as</code> macro by <a href="https://github.com/sivizius"><code>@sivizius</code></a> (<a href="https://redirect.github.com/jonasbb/serde_with/issues/782">#782</a>)</p> <p>This allows to parse more valid forms of the <code>cfg_attr</code> macro, including multiple values and attribute that do not follow the <code>key = value</code> schema.</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
025ceac68e |
Bump clap from 4.5.18 to 4.5.19 (#1212)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.18 to 4.5.19. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p> <blockquote> <h2>v4.5.19</h2> <h2>[4.5.19] - 2024-10-01</h2> <h3>Internal</h3> <ul> <li>Update dependencies</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p> <blockquote> <h2>[4.5.19] - 2024-10-01</h2> <h3>Internal</h3> <ul> <li>Update dependencies</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
9314e3b7dc |
Bump tokio-tungstenite from 0.20.1 to 0.24.0 (#1211)
Bumps [tokio-tungstenite](https://github.com/snapview/tokio-tungstenite) from 0.20.1 to 0.24.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/snapview/tokio-tungstenite/blob/master/CHANGELOG.md">tokio-tungstenite's changelog</a>.</em></p> <blockquote> <h1>0.24.0</h1> <ul> <li>Update dependencies (TLS, tungstenite).</li> <li>Return a runtime error when WSS URLs are used without a proper TLS feature enabled.</li> </ul> <h1>0.23.1</h1> <ul> <li>Introduce a <code>url</code> feature (proxies to <code>tungstenite/url</code>).</li> </ul> <h1>0.23.0</h1> <ul> <li>Update <code>tungstenite</code> to <code>0.23.0</code>.</li> <li>Disable default features on TLS crates.</li> </ul> <h1>0.22.0</h1> <ul> <li>Update TLS dependencies.</li> <li><del>Update <code>tungstenite</code> to match <code>0.22.0</code>.</del></li> </ul> <h1>0.21.0</h1> <ul> <li>Update TLS dependencies.</li> <li>Update <code>tungstenite</code> to <code>0.21.0</code>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
dependabot[bot]
|
5a7906a788 |
Bump futures-util from 0.3.30 to 0.3.31 (#1210)
Bumps [futures-util](https://github.com/rust-lang/futures-rs) from 0.3.30 to 0.3.31. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/releases">futures-util's releases</a>.</em></p> <blockquote> <h2>0.3.31</h2> <ul> <li>Fix use after free of task in <code>FuturesUnordered</code> when dropped future panics (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2886">#2886</a>)</li> <li>Fix soundness bug in <code>task::waker_ref</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2830">#2830</a>) This is a breaking change but allowed because it is soundness bug fix.</li> <li>Fix bugs in <code>AsyncBufRead::read_line</code> and <code>AsyncBufReadExt::lines</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2884">#2884</a>)</li> <li>Fix parsing issue in <code>select!</code>/<code>select_biased!</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2832">#2832</a>) This is technically a breaking change as it will now reject a very odd undocumented syntax that was previously accidentally accepted.</li> <li>Work around issue due to upstream <code>Waker::will_wake</code> change (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2865">#2865</a>)</li> <li>Add <code>stream::Iter::{get_ref,get_mut,into_inner}</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2875">#2875</a>)</li> <li>Add <code>future::AlwaysReady</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2825">#2825</a>)</li> <li>Relax trait bound on non-constructor methods of <code>io::{BufReader,BufWriter}</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2848">#2848</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures-util's changelog</a>.</em></p> <blockquote> <h1>0.3.31 - 2024-10-05</h1> <ul> <li>Fix use after free of task in <code>FuturesUnordered</code> when dropped future panics (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2886">#2886</a>)</li> <li>Fix soundness bug in <code>task::waker_ref</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2830">#2830</a>) This is a breaking change but allowed because it is soundness bug fix.</li> <li>Fix bugs in <code>AsyncBufRead::read_line</code> and <code>AsyncBufReadExt::lines</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2884">#2884</a>)</li> <li>Fix parsing issue in <code>select!</code>/<code>select_biased!</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2832">#2832</a>) This is technically a breaking change as it will now reject a very odd undocumented syntax that was previously accidentally accepted.</li> <li>Work around issue due to upstream <code>Waker::will_wake</code> change (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2865">#2865</a>)</li> <li>Add <code>stream::Iter::{get_ref,get_mut,into_inner}</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2875">#2875</a>)</li> <li>Add <code>future::AlwaysReady</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2825">#2825</a>)</li> <li>Relax trait bound on non-constructor methods of <code>io::{BufReader,BufWriter}</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2848">#2848</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
paritosh-08
|
3cc9d2092e |
support __typename in aggregate queries (#1220)
<!-- The PR description should answer 2 important questions: --> ### What This PR enables queries `__typename` introspection field in aggregate queries. This PR also adds a test for the same. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> We have changed how we handle __typename while processing the selection set. If you use `as_object_selection_set`, you will get `__typename` for free. We are going to follow the same pattern as in the non-aggregate fields. The following has changed: - While generating the IR, we will ignore introspection fields. - use `as_object_selection_set` to process the selection set. V3_GIT_ORIGIN_REV_ID: 0b88d497efd9b754483dd786fe7e8ef5fcb462f1 |
||
paritosh-08
|
9df2108237 |
use TestNDCResponses and GenerateOpenDDQuery wherever possible for graphql frontend test (#1201)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> We can change a few `Skip` to `TestNDCResponses` or `GenerateOpenDDQuery`. We are still skipping tests for the following features: - introspection - order_by relationship - where relationship - where remote_relationship - relay - commands procedures - field presets - relationship predicates - remote_relationship predicates - apollo_federation - aggregates - most of the relationship tests ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> V3_GIT_ORIGIN_REV_ID: ea0a5d865cc40f8f7428d8e742f48dc6be300696 |
||
Daniel Chambers
|
4f5e10c636 |
Aggregate Predicates: Resolve objectAggregate and scalarAggregate BooleanExpressionTypes (#1217)
<!-- The PR description should answer 2 important questions: --> ### What This PR adds two new operand types for `BooleanExpressionType` in OpenDD: `objectAggregate` and `scalarAggregate`. These two operand types are then validated in metadata resolve to ensure their correctness. Their design is based on [this RFC](https://github.com/hasura/v3-engine/pull/945#issuecomment-2325652794). They are hidden from the OpenDD JSON Schema and their usage is blocked by default via a new unstable feature flag. They are also currently not "usable", as the metadata resolve code that would use an `objectAggregate` operand-ed `BooleanExpressionType` to satisfy an aggregate predicate over an array relationship does not exist. This will be added in a future PR; this PR is big enough! ### How A new unstable feature `enable_aggregation_predicates` has been added to gate this feature behind while it is in development. The new OpenDD types have been added to `crates/open-dds/src/boolean_expression.rs`. A new metadata resolve stage `aggregate_boolean_expressions` has been added that specifically resolves these two new operand types. Most of the new code changes in this PR exist in this new stage. The output of this stage is composed into the `boolean_expressions` stage afterwards, but other than just being consumed and included there, it is unused for now. In a future PR it will be used when resolving object-operanded `BooleanExpressionTypes`. An exhaustive set of metadata resolve tests has been added to test all the error, warning and passing cases for both object and scalar aggregate operands (`crates/metadata-resolve/tests/failing/aggregate_boolean_expressions/` and `crates/metadata-resolve/tests/passing/aggregate_boolean_expressions/`). These files make up the vast majority of the file count in this PR. V3_GIT_ORIGIN_REV_ID: e0e030b322d05212a0e2630acc9f4db7b05000c1 |
||
Rakesh Emmadi
|
92d84bc126 |
graphql-ws: avoid cloning graphql schema state on each websocket connection (#1218)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> Essential artifacts, like schema and auth/plugin configs, required for a websocket connection are cloned on each request. This is causing massive memory spike while simulating 10k concurrent connections using graphql-bench tool. ![Screenshot from 2024-10-09 16-22-33](https://github.com/user-attachments/assets/57926a00-a3cb-4a95-b220-c4728067f951) My machine has 62GB of ram, so absolute usage is `30% of 62G ~ 18 GB`. I spent some time debugging dangling tokio tasks from closed websockets using [tokio_console](https://github.com/tokio-rs/console). Tokio tasks are closed as expected when websockets are dropped. I gone through the graphql-ws code line-by-line and found that we are cloning the schema for each websocket connection. The reason for this is that, initially, I couldn't find a way to generate an `Arc` for just the schema from the EngineState struct. ~However, I found a solution by using the [mappable-rc](https://docs.rs/mappable-rc/latest/mappable_rc/index.html) crate.~ Tweak the `EngineState` struct to hold heavy fields inside `Arc` to pass them around separately. Just pass the `EngineState` without wrapping in `Arc` across axum routes, as it is cheap to clone now. After wrapping all artifact values with `Arc`, the memory usage decreased drastically. ![Screenshot from 2024-10-09 16-41-10](https://github.com/user-attachments/assets/090211d0-5318-4414-83b3-aa8cde86bfe4) The screenshot above shows 1% memory usage for 10,000 concurrent connections. From multiple runs, I found the average usage to be around 1.2% - 1.4%, which roughly translates to ~ `800MB`. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> - Avoid cloning schema, auth_config and plugin artifacts on a new websocket connections. Now, `EngineState` contains these values wrapped with `Arc`. Use them directly. - Refactor other parts of code to accommodate the above changes. V3_GIT_ORIGIN_REV_ID: f56a9eecf6e9eca9fdc56bf332f9a06f5ad4cdb5 |
||
Tom Harding
|
81bd72f4d7 |
Report a path for UnknownModelCollection during model resolution (#1216)
### What Like #1192, this PR adds a context to another error raised during the `models` resolution step. Specifically, `UnknownModelCollection`. ### How These PRs are extremely simple, it's just that there are going to be dozens of them. When an error refers to a thing, you wrap that thing in `Spanned`, and then try to extract the `path` at the error site. Most of the time, it's pretty straightforward. --------- Co-authored-by: Daniel Chambers <daniel@hasura.io> V3_GIT_ORIGIN_REV_ID: d3ea71d3d9a42cbf804add54f5f6e75ab68c6765 |
||
Daniel Chambers
|
7c4d34d80c |
Move allow partial supergraph flag to OpenDD flags instead of an env var (#1205)
### What Currently if you want v3-engine to accept metadata that is only a partial supergraph (ie missing some subgraphs), you must set the PARTIAL_SUPERGRAPH env var. Builds sent to MBS get sent to a special endpoints `/validate/partial` and `/build/partial` that runs the engine build process with that configuration option set. This results in a terrible user experience for local builds, because MBS will accept a partial supergraph and yield build artifacts, but v3-engine will refuse to run them unless you set that env var. This PR removes that env var and creates a new OpenDD flag called `allow_partial_supergraph`. When MBS's `/validate/partial` endpoint is used, that flag is set in the build artifacts. v3-engine then looks at that flag to enable partial supergraph mode. This means a `/build/partial` build via MBS just works when you run it locally via v3-engine. ### How `metadata_resolve`'s `Configuration.allow_unknown_subgraphs` has been removed, and `metadata_resolve` now looks at OpenDD's new `Flags.allow_partial_supergraph` instead. In MBS, usage of `ValidationMode` (the enum that enables partial builds) previously used to set `Configuration.allow_unknown_subgraphs`; now it is used in `compute_open_dds_flags` in order to set `Flags.allow_partial_supergraph`. The existing metadata_resolve test that tested partial supergraphs has been modified to use the flags rather than the removed configuration option (`crates/metadata-resolve/tests/passing/missing_subgraph_when_ignoring_unknown_subgraphs`). A new `metadata_resolve` test has been added that checks that comparable relationships in `BooleanExpressionType` properly respects the `allow_partial_subgraphs` flag (this functionality was added in #1182). V3_GIT_ORIGIN_REV_ID: 2c984eb791263a1fb0606c6c44a2a1ae4a5e7370 |
||
Brandon Simmons
|
62d9cbacdb |
ENG-1071: add detailed traces for MBS validate/ and some benchmarks (#1209)
<!-- The PR description should answer 2 important questions: --> ### What Set us up for more visibility into performance on prod. ### How Add traces V3_GIT_ORIGIN_REV_ID: 0ea011c1233a08bf4f9d55a9084809a6ffcd934d |
||
Daniel Harvey
|
06ca697a27 |
Move a function from graphql_ir to metadata-resolve (#1207)
<!-- The PR description should answer 2 important questions: --> ### What Functional no-op towards making `graphql_ir` less central and breaking some import cycles. ### How Move the function. V3_GIT_ORIGIN_REV_ID: 53ea007964f5ab79cb546821cfb76f542ea3b486 |
||
Rakesh Emmadi
|
66ab5b201d |
graphql-ws: Implement Plugins (#1195)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> Execute configured pre-parse and pre-response plugins for GraphQL operations over websockets. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> When a `type: subscribe` message is received, similar to HTTP requests, run pre-parse plugins. If the plugins' response results in "continue", then proceed with handling the GraphQL query. Otherwise, return the plugin response or error. For pre-response plugins, a task is spawned for handling plugins before sending the response to the client. The task is run in a new trace, linked to the poll trace. V3_GIT_ORIGIN_REV_ID: ceb7ffd6da9235b3897ef4198729c07492c13d5e |
||
Daniel Harvey
|
ad6c47a070 |
Move plan types out of GraphQL IR (#1203)
<!-- The PR description should answer 2 important questions: --> ### What A lot of the `graphql_ir` is generally useful and not GraphQL specific. Before we can move it into `plan` and share it we need to pull a few shared types out of the package and somewhere more general too. ### How Functional no-op. V3_GIT_ORIGIN_REV_ID: 3fe8ca737ef3d8c7ce09ea695453645e303d7030 |
||
Brandon Simmons
|
c7044db956 |
MBS: support zstd and gzip -encoded POST request bodies (#1204)
Since these might be 10s or even 100s of MB this is important for saving bandwidth <!-- The PR description should answer 2 important questions: --> ### What Save bandwidth (and possibly latency, etc) in mbs ### How Support compressed request bodies. When this is deployed clients like ddn-api can use it. V3_GIT_ORIGIN_REV_ID: ad6357880d7c81ad58a76a3edfbac8d377ad7f5c |
||
Daniel Harvey
|
7c3f6933bb |
Test offset/limit from GraphQL (#1202)
<!-- The PR description should answer 2 important questions: --> ### What Parse offset/limit in the GraphQL -> OpenDD pipeline, and use it test offset / limit. Functional no-op. V3_GIT_ORIGIN_REV_ID: 068d14d08a4bde140f5633625a59137d3ff81d84 |
||
Rakesh Emmadi
|
2c328b5f64 |
Wrap execution of all pre-response plugins in a span (#1200)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> Earlier, for pre-response plugins, a span is emitted for each plugin execution. This PR wraps all plugin executions in a new span that extends the client headers as parent context. Before: ![main_pre_resp_plugins](https://github.com/user-attachments/assets/a3d74498-3f56-48fc-becf-a04b814aee4c) After: ![refactors_pre_resp_plugins](https://github.com/user-attachments/assets/9277327f-a8de-419c-8423-e662ae09c3b0) Note: `pre_response_plugins_execute` span name renamed to `execute_all_pre_response_plugins` in later commits. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> Move execution of pre-response plugins in a task, into a new function. Create a span that wraps a function that executes all plugins async. V3_GIT_ORIGIN_REV_ID: a1febecf4b429e1441e4b53a9b32f39519a12ba9 |
||
Daniel Harvey
|
e313123ed7 |
Move commands from sql to plan (#1188)
<!-- The PR description should answer 2 important questions: --> ### What Move the function/procedure planning from `sql` to the shared OpenDD IR pipeline in `plan`. This should be a no-op for `sql` ### How Move code, fix type errors. V3_GIT_ORIGIN_REV_ID: 7da797ffedbc40a44692670679aa176817f2c65e |
||
Daniel Harvey
|
629d48a086 |
Bump all the packages (#1199)
<!-- The PR description should answer 2 important questions: --> ### What We need to bump `tonic` because of `cargo audit`, and to do so we need to bump OpenTelemetry, and to do that we need to finally bump `http`, and to do that... ### How Follow the breadcrumb trail, fix the errors. Checked, trace propagation still works: <img width="1781" alt="Screenshot 2024-10-02 at 15 56 28" src="https://github.com/user-attachments/assets/4c3f8763-e646-445d-84de-f507da15ad2e"> V3_GIT_ORIGIN_REV_ID: aa219e91375aa310dc656183948edc33f77cdfdc |
||
Rakesh Emmadi
|
454ca0575f |
graphql-ws: Tests for WebSocket server (#1191)
<!-- The PR description should answer 2 important questions: --> ### What <!-- What is this PR trying to accomplish (and why, if it's not obvious)? --> <!-- Consider: do we need to add a changelog entry? --> <!-- Does this PR introduce new validation that might break old builds? --> <!-- Consider: do we need to put new checks behind a flag? --> Write tests to confirm websocket connection behavior in conjunction with [graphl-ws](https://github.com/enisdenjo/graphql-ws/blob/master/PROTOCOL.md) subprotocol. ### How <!-- How is it trying to accomplish it (what are the implementation steps)? --> Test the websocket by spinning up a server in an async tokio task. Use tokio-tungstenite for websocket client. V3_GIT_ORIGIN_REV_ID: 32c19298b6a5b23649b22d8d820ef8d47ef1d293 |
||
Daniel Harvey
|
721ea64cc0 |
Fix docker-compose.yaml (#1197)
<!-- The PR description should answer 2 important questions: --> ### What Running `docker compose up` is a generally accepted way to try a project out, and ours was broken. This fixes ours so that running `docker compose up` builds engine and runs it with a sample schema for `ndc-postgres`. This will allow users to get a flavour for DDN as a consumer. We also remove a bunch of outdated and frankly confusing stuff from the readme, instead directing users to the docs. V3_GIT_ORIGIN_REV_ID: 77c817d1738efafe4027c7d0da1aa21bcf78dd9d |
||
Daniel Harvey
|
141d7ac70a |
Update changelog for tag v2024-10-02 instead (#1196)
<!-- The PR description should answer 2 important questions: --> ### What Release `v2024-10-02`, let's do `v2024-10-02` instead. ### How Update changelog. V3_GIT_ORIGIN_REV_ID: a6fe7e0c81ea2d4b9cfe76322ee2586cd152b458 |
||
Daniel Harvey
|
c8966f7377 |
Remove double encoding in graphql-ir/arguments (#1186)
<!-- The PR description should answer 2 important questions: --> ### What Previously when we used a string from a session variable as a passed through header it would become double escaped like `\"the string\"`. This is because we were encoding to JSON, going back to `reqwest::header::HeaderValue` and then back to JSON. Instead, let's stay in JSON. ### How Instead we stay in JSON for the session variable encoding, and explicitly do the `reqwest::header::HeaderValue` -> JSON encoding. We take the string in `HeaderValue` and make it a `serde_json::Value::String`. V3_GIT_ORIGIN_REV_ID: 3fd4df7c4aac5eadedd2d533cdf8e20dfa718060 |
||
Daniel Harvey
|
90d5268a63 |
Add feature flag for duplicate command names (#1193)
<!-- The PR description should answer 2 important questions: --> ### What In #1168 we checked for duplicate command names. However this made a project build fail, so we instead put this behind a flag and raise a warning. V3_GIT_ORIGIN_REV_ID: 41e3dcfda1d3f2da1e7ca672c9d20e0a3917d868 |
||
Tom Harding
|
188cd437a4 |
Implement error contexts for MBS (#1192)
### What This PR allows MBS errors to provide a larger "context". Our notion of context is an ordered list of annotated paths. An example would be for a name conflict, where we want to say `["this name was used here", "... and also here"]`, so reporting two paths would be helpful. Note that the actual format of `path` is a structured data type, not a string. An example of the first instance introduced by this PR can be seen here: ```json { "errors": [ { "context": [ { "message": "Data connector name given here", "path": [ { "Index": 11 }, { "Key": "definition" }, { "Key": "source" }, { "Key": "dataConnectorName" } ] } ], "code": "opendds-validation", "message": "invalid metadata: error building schema: invalid metadata: the source data connector b (in subgraph default) for model Artists (in subgraph default) has not been defined", "path": null } ] } ``` The `path` key is already generated by other parts of the MBS process, so we preserve it for now to avoid breaking changes. ### How * A new crate, `error-context`, to hold the type of the context structure. * Otherwise essentially the same as the path mechanism. V3_GIT_ORIGIN_REV_ID: 0bb529542ba0a7f6774c08fa6adb7d7c608d6c5b |
||
Daniel Harvey
|
1040631da9 |
Update changelog for v2024.10.01 (#1187)
<!-- The PR description should answer 2 important questions: --> ### What Update changelog. V3_GIT_ORIGIN_REV_ID: 5fd36aafebbad8321fb7ab95f8a7e46759441926 |
||
Tom Harding
|
b2ed771d46 |
Wire up an error path to appear in the MBS API responses (#1180)
### What This PR completes step 2 on the plan in #1153. With this PR, an attempt to call MBS to build metadata containing a model referencing an unknown data connector should result in a path to the model. ### How #1179 introduced the polymorphic version of the error type introduced by #1170. Unfortunately, due to Rust not having an apartness constraint, we can't write `impl<T, S: From<T> From<WithContext<T>> for WithContext<S>`, so we introduce the `coerce` function to allow us to cast between `WithContext<ChildError>` and `WithContext<ParentError>`. This means that we can return a `WithContext<ModelsError>` from the models stage, coerce it to a `WithContext<Error>`, and propagate that path throughout the system. This PR also extends the `path` function inside MBS to detect these paths if present, so MBS API errors will contain any available path. V3_GIT_ORIGIN_REV_ID: a47c565b792fefb99294c9e21ba526424ddf7cb7 |
||
Daniel Harvey
|
cee0e038a8 |
Update source -> sourceType in open-dds RelationshipV1 example (#1184)
<!-- The PR description should answer 2 important questions: --> ### What We used the old `source` key alias in doc examples, but we'd like to use the newer `sourceType` instead. ### How Change JSON example. V3_GIT_ORIGIN_REV_ID: f3223fb9716a2cf277ea2e82891ae8bbcdcd9ee0 |