Releases: movio/bramble
v1.3.6
What's Changed
- Add nil pointer check for parent definition in extractSelectionSet by @joshiefu in #139
- Remove service polling client keep alive by @lucianjon in #144
Full Changelog: v1.3.5...v1.3.6
v1.3.5
What's Changed
- Remove ModifyExtensions from plugin by @joshiefu in #128
- Fixed DoS vulnerability in graphql-go package by @azadasanali in #133
- Restore log output after tests finish by @joshiefu in #127
- Allow bramble to be used as a library by @joshiefu in #130
- Remove query caching from exposed gateway by @LeonHuston in #131
- Improve "not currently supported" part of README.md by @pasdeloup in #137
- handle failed schema composition in merge test helper by @exterm in #138
- Use locally built bramble in docker setup by @lucianjon in #140
- ExecuteQuery refactoring by @lucianjon in #141
- Increase default polling period to 10 seconds. by @lucianjon in #143
New Contributors
- @azadasanali made their first contribution in #133
- @pasdeloup made their first contribution in #137
- @exterm made their first contribution in #138
Full Changelog: v1.3.4...v1.3.5
v1.3.4
What's Changed
- Improve Bramble timeout support by @joshiefu in #119
- Handle nullable destinations in results merge of query execution by @pkqk in #123
- Bump github.com/graph-gophers/graphql-go from 1.2.0 to 1.3.0 in /examples/graph-gophers-service by @dependabot in #118
- Update gqlgen example deps to latest by @lucianjon in #126
- Small changes for Movio by @pkqk in #124
- Add custom http client option to GraphQLClient by @jainpiyush19 in #122
New Contributors
- @joshiefu made their first contribution in #119
- @jainpiyush19 made their first contribution in #122
Full Changelog: v1.3.3...v1.3.4
v1.3.3
What's Changed
- Remove unused functions after execution refactor by @lucianjon in #111
- Fix: broken namespace aliases and mutable selections by @gmac in #108
- Refactor: interface selections have proper location by @gmac in #107
- Add handling of ast.Interface to kindToStr by @lucianjon in #114
- Dynamic boundary argument by @gmac in #115
- Allow customization of the graph "id" field by @gmac in #116
- Filter out null boundary results before calling nested child step by @lucianjon in #117
Full Changelog: v1.3.2...v1.3.3
v1.3.2
This is another small bug fix release, the change in #105 will mean that the reserved alias (now _bramble__typename
) for the bramble injected __typename
is less likely to conflict with a user defined alias. Now all reserved aliases begin with _bramble
.
What's Changed
- Fix data race in query execution by @nmaquet in #102
- Replace mutex with atomic primitives by @nmaquet in #103
- Fix: merge composite scopes in final selection by @gmac in #104
- Use
_bramble__typename
alias for bramble injected __typename by @lucianjon in #105 - Example of gateway operating in a docker compose environment by @suessflorian in #86
Full Changelog: v1.3.1...v1.3.2
v1.3.1
This is a bug fix release which includes a number of fixes to Bramble's query planner and an issue where Bramble would fall out of sync with services if they went down and back up again.
- always add __typename to abstract types. by @gmac in #91
- fix schema syncing issue. by @lucianjon in #95
- prevent user-defined aliases from breaking federation. by @gmac in #94
Small backwards-compatibility breakage: Bramble now rejects queries where __typename
is used to alias a field not named __typename
or _bramble_id
is used to alias a field not named id
.
Full Changelog: v1.3.0...v1.3.1
v1.3.0
This is a significant release that contains a new execution pipeline and important fixes to the query planner.
New Execution Pipeline
The code that receives the query plan and executes it step by step, before forming the response has been completely redone. There were enough significant changes we had planned that a rewrite became the simpler approach. While the changes are significant, they are self generally self contained and do not impact the other parts of bramble. The changes are contained in #74. Thanks to @nmaquet, @segfault88, and @suessflorian for the help on these.
Goals for the new pipeline
- Handle the bugs that were cropping up when marshalling the merged result back into JSON. The previous approach of using the merged execution result to create the JSON was proving problematic when the shape of the results started to diverge from the request document. This was especially apparent when dealing with fragments and where most of the issues were contained. The new approach instead uses the GraphQL request document to guide the creation of the JSON response, which removes an entire class of bugs.
- Remove any mutable state between the various execution steps. The previous code shared a
map[string]interface{}
that was passed between the steps and merged into step by step. This is now done by passing the responses down a channel and is then merged as a seperate stage after all the steps have been executed. - Deprecate unmaintained code paths.
- Some general maintainability and readability improvements.
Visible Changes
- The planner now injects
__typename
when it encounters fragments, this is to aid in marshalling fragments to JSON. - Support for the
Node
interface federation protocol has been dropped. This was briefly in use internally at Movio before the public release of Bramble. - Support for opentracing has been dropped, this was another code path that had been implemented early on but unused since.
- When using the
X-Bramble-Debug: timing
header, the execution, merging, and marshalling steps are now shown as seperate values.
Query Planning Fixes
Huge thanks to @gmac for these, they are contained in #85 and #81.
Other Changes
- DOC: fixed typo on installation url. by @hsblhsn in #62
- Fix documentation on jwt auth by @seeday in #69
- Give better errors if duplicate boundary query exists by @haydenwoodhead in #55
- Allow specifying the full listen address in config by @pkqk in #70
- Update jwt library by @pkqk in #72
- Add missing dependancies for
gqlgen
server example by @suessflorian in #77 - Buffer
os.Interrupt
channel by @suessflorian in #78 - Update dependencies and update go to 1.17 by @lucianjon in #82
Full Changelog: v1.2.1...v1.3.0
v1.3.0-rc.2
- Add missing dependancies for
gqlgen
server example - Buffer
os.Interrupt
channel - No error on fragment expansion when
__typename
is not required
v1.3.0-rc.1
This release contains the rewritten execution pipeline. This change is mostly invisible, however it should greatly improve reliability when using fragments inside federated queries. It also drops support for the deprecated Node
interface boundary field resolving support, as well as opentracing support (due to the lack of usage and maintenance).