diff --git a/.changesets/config_generate_query_fragments.md b/.changesets/config_generate_query_fragments.md deleted file mode 100644 index 2125b3d4d0..0000000000 --- a/.changesets/config_generate_query_fragments.md +++ /dev/null @@ -1,12 +0,0 @@ -### Add `generate_query_fragments` configuration option ([PR #4885](https://github.com/apollographql/router/pull/4885)) - -Add a new `supergraph` configuration option `generate_query_fragments`. When set to `true`, the query planner will extract inline fragments into fragment definitions before sending queries to subgraphs. This can significantly reduce the size of the query sent to subgraphs, but may increase the time it takes to plan the query. Note that this option and `reuse_query_fragments` are mutually exclusive; if both are set to `true`, `generate_query_fragments` will take precedence. - -An example router configuration: - -```yaml title="router.yaml" -supergraph: - generate_query_fragments: true -``` - -By [@trevor-scheer](https://github.com/trevor-scheer) in https://github.com/apollographql/router/pull/4885 diff --git a/.changesets/feat_bnjjj_feat_4319.md b/.changesets/feat_bnjjj_feat_4319.md deleted file mode 100644 index e765d0095c..0000000000 --- a/.changesets/feat_bnjjj_feat_4319.md +++ /dev/null @@ -1,43 +0,0 @@ -### Add support of instruments in configuration for telemetry ([Issue #4319](https://github.com/apollographql/router/issues/4319)) - -Add support for custom and standard instruments through the configuration file. You'll be able to add your own custom metrics just using the configuration file. They may: -- be conditional -- get values from selectors, for instance headers, context or body -- have different types like `histogram` or `counter`. - -Example: - -```yaml title="router.yaml" -telemetry: - instrumentation: - instruments: - router: - http.server.active_requests: true - acme.request.duration: - value: duration - type: counter - unit: kb - description: "my description" - attributes: - http.response.status_code: true - "my_attribute": - response_header: "x-my-header" - - supergraph: - acme.graphql.requests: - value: unit - type: counter - unit: count - description: "supergraph requests" - - subgraph: - acme.graphql.subgraph.errors: - value: unit - type: counter - unit: count - description: "my description" -``` - -[Documentation](https://www.apollographql.com/docs/router/configuration/telemetry/instrumentation/instruments) - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4771 \ No newline at end of file diff --git a/.changesets/feat_bryn_enable_otelp_http_metrics.md b/.changesets/feat_bryn_enable_otelp_http_metrics.md deleted file mode 100644 index 41561e9a23..0000000000 --- a/.changesets/feat_bryn_enable_otelp_http_metrics.md +++ /dev/null @@ -1,16 +0,0 @@ -### Add OTLP http metrics export ([Issue #4559](https://github.com/apollographql/router/issues/4559)) - -Users can now export metrics via OTLP Http in addition to the existing OTLP Grpc - -Activate this by setting the `protocol` to `http` in your your `router.yaml`: - -``` -telemetry: - exporters: - metrics: - otlp: - enabled: true - protocol: http -``` - -By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4842 diff --git a/.changesets/feat_garypen_4899_error_service_details.md b/.changesets/feat_garypen_4899_error_service_details.md deleted file mode 100644 index fb9c37d635..0000000000 --- a/.changesets/feat_garypen_4899_error_service_details.md +++ /dev/null @@ -1,5 +0,0 @@ -### add error details to 'router service call failed' ([Issue #4899](https://github.com/apollographql/router/issues/4899)) - -It can be difficult to understand 'router service call failed' messages. Adding the error detail should make them more comprehensible. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4900 \ No newline at end of file diff --git a/.changesets/feat_geal_query_plan_cache_default_ttl.md b/.changesets/feat_geal_query_plan_cache_default_ttl.md deleted file mode 100644 index 59b95e2534..0000000000 --- a/.changesets/feat_geal_query_plan_cache_default_ttl.md +++ /dev/null @@ -1,5 +0,0 @@ -### set a default TTL for query plans ([Issue #4473](https://github.com/apollographql/router/issues/4473)) - -This sets a default TTL of 30 days for query plan caches, because the previous default was to store query plans indefinitely, which does not make sense because they change with schema updates. - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4588 \ No newline at end of file diff --git a/.changesets/feat_geal_schema_hash_requires.md b/.changesets/feat_geal_schema_hash_requires.md deleted file mode 100644 index 2c46a6da9b..0000000000 --- a/.changesets/feat_geal_schema_hash_requires.md +++ /dev/null @@ -1,14 +0,0 @@ -### reuse cached query plans across schema updates if possible ([Issue #4834](https://github.com/apollographql/router/issues/4834)) - -This extends the schema aware query hashing introduced in entity caching, to reduce the amount of work when reloading the router. That hash is designed to stay the same for a same query across schema updates if the update does not affect that query. If query planner cache warm up is configured, then it can reuse previous cache entries for which the hash does not change, which will reduce CPU usage and make reloads faster. - -This can be activated with the following option: - -```yaml title="router.yaml" -supergraph: - query_planning: - warmed_up_queries: 100 - experimental_reuse_query_plans: true -``` - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4883 \ No newline at end of file diff --git a/.changesets/fix_apq_cache_key_to_match_redis_convention.md b/.changesets/fix_apq_cache_key_to_match_redis_convention.md deleted file mode 100644 index b357a36619..0000000000 --- a/.changesets/fix_apq_cache_key_to_match_redis_convention.md +++ /dev/null @@ -1,7 +0,0 @@ -### Replaces null separator in apq cache key with : to match redis convention - -This PR conforms the apq cache key to follow redis convention. This helps when using redis clients to properly display keys in nested form. - -query plan cache key was fixed in a similar pr: #4583 - -By [@tapaderster](https://github.com/tapaderster) in https://github.com/apollographql/router/pull/4886 \ No newline at end of file diff --git a/.changesets/fix_garypen_revive_docker_heaptrack.md b/.changesets/fix_garypen_revive_docker_heaptrack.md deleted file mode 100644 index 53e897278a..0000000000 --- a/.changesets/fix_garypen_revive_docker_heaptrack.md +++ /dev/null @@ -1,7 +0,0 @@ -### Make 'router' user the owner of the docker image's /dist/data directory ([PR #4898](https://github.com/apollographql/router/pull/4898)) - -Since we made our images more secure, we run our router process as user 'router'. If we are running under 'heaptrack', e.g.: in a debug image, then we cannot write to /dist/data because it is owned by 'root'. - -This changes the ownership of /dist/data from 'root' to 'router' to allow writes to succeed. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4898 \ No newline at end of file diff --git a/.changesets/fix_geal_entity_cache_configuration_update.md b/.changesets/fix_geal_entity_cache_configuration_update.md deleted file mode 100644 index 122d54855b..0000000000 --- a/.changesets/fix_geal_entity_cache_configuration_update.md +++ /dev/null @@ -1,8 +0,0 @@ -### Entity cache: require the presence of a Cache-Control header ([Issue #4880](https://github.com/apollographql/router/issues/4880)) - -The entity cache plugin intended to require a `Cache-Control` header from the subgraph to decide whether or not a response should be cached. Unfortunately in the way tit was set up, all responses were stored. -The plugin now makes sure that the `Cache-Control` is there, and if a subgraph does not provide it, then the aggregated `Cache-Control` header sent to the client will contain `no-store`. - -Additionally, the Router will now check that a TTL is configured for all subgraphs, either in per subgraph configuration, or globally. - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4882 \ No newline at end of file diff --git a/.changesets/fix_glasser_pq_error_status_codes.md b/.changesets/fix_glasser_pq_error_status_codes.md deleted file mode 100644 index 704a9d7e55..0000000000 --- a/.changesets/fix_glasser_pq_error_status_codes.md +++ /dev/null @@ -1,15 +0,0 @@ -### Persisted Query errors are now 4xx errors ([PR #4887](https://github.com/apollographql/router/pull/4887) - -Previously, sending various kinds of invalid Persisted Query requests returned a 200 status code to the client. Now, these errors return 4xx status codes: - -- Sending a PQ ID that is unknown returns 404 (Not Found). -- Sending freeform GraphQL when no freeform GraphQL is allowed returns - 400 (Bad Request). -- Sending both a PQ ID and freeform GraphQL in the same request (if the - APQ feature is not also enabled) returns 400 (Bad Request). -- Sending freeform GraphQL that is not in the safelist when the safelist - is enabled returns (403 Forbidden). -- A particular internal error that shouldn't happen returns 500 (Internal - Server Error). - - By [@glasser](https://github.com/glasser) in https://github.com/apollographql/router/pull/4887 diff --git a/.changesets/fix_glasser_selector_labels.md b/.changesets/fix_glasser_selector_labels.md deleted file mode 100644 index 305f516622..0000000000 --- a/.changesets/fix_glasser_selector_labels.md +++ /dev/null @@ -1,6 +0,0 @@ -### Helm: include all standard labels in pod spec but complete sentence that stands on its own ([PR #4862](https://github.com/apollographql/router/pull/4862)) - -The `helm.sh/chart`, `app.kubernetes.io/version`, and `app.kubernetes.io/managed-by` labels are now included on pods just like they are in every other resource created by the Helm chart, because the pod spec template now uses the `router.labels` template function instead of the `router.selectorLabels` template function. This also means that you can remove a label from the selector without removing it from resource metadata by overriding the `router.selectorLabels` and `router.labels` functions and moving the label from the former to the latter. - - -By [@glasser](https://github.com/glasser) in https://github.com/apollographql/router/pull/4862 \ No newline at end of file diff --git a/.changesets/fix_simon_accept_request_extensions_is_null.md b/.changesets/fix_simon_accept_request_extensions_is_null.md deleted file mode 100644 index 1feaea4470..0000000000 --- a/.changesets/fix_simon_accept_request_extensions_is_null.md +++ /dev/null @@ -1,7 +0,0 @@ -### Accept `extensions: null` in a GraphQL request ([Issue #3388](https://github.com/apollographql/router/issues/3388)) - -In GraphQL requests, `extensions` is an optional map. -Passing an explicit `null` was incorrectly considered a parse error. -Now it is equivalent to omiting that field entirely, or to passing an empty map. - -By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/4911 diff --git a/.changesets/maint_garypen_fix_telemetry_integration_test_macos.md b/.changesets/maint_garypen_fix_telemetry_integration_test_macos.md deleted file mode 100644 index 1707ed8ecc..0000000000 --- a/.changesets/maint_garypen_fix_telemetry_integration_test_macos.md +++ /dev/null @@ -1,5 +0,0 @@ -### fix annoying integration test warning on macOS ([PR #4919](https://github.com/apollographql/router/pull/4919)) - -For a little while we have had a warning with integration tests on macOS. This fixes the warning. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4919 \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index eaf649f68b..ad0441a09b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,201 @@ All notable changes to Router will be documented in this file. This project adheres to [Semantic Versioning v2.0.0](https://semver.org/spec/v2.0.0.html). +# [1.44.0] - 2024-04-12 + +## 🚀 Features + +### Add details to `router service call failed` errors ([Issue #4899](https://github.com/apollographql/router/issues/4899)) + +The router now includes more details in `router service call failed` error messages to improve their understandability and debuggability. + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4900 + +### Support exporting metrics via OTLP HTTP ([Issue #4559](https://github.com/apollographql/router/issues/4559)) + +In addition to exporting metrics via OTLP/gRPC, the router now supports exporting metrics via OTLP/HTTP. + +You can enable exporting via OTLP/HTTP by setting the `protocol` key to `http` in your `router.yaml`: + +``` +telemetry: + exporters: + metrics: + otlp: + enabled: true + protocol: http +``` + +By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4842 + +### Add support of instruments in configuration for telemetry ([Issue #4319](https://github.com/apollographql/router/issues/4319)) + +Add support for custom and standard instruments through the configuration file. You'll be able to add your own custom metrics just using the configuration file. They may: +- be conditional +- get values from selectors, for instance headers, context or body +- have different types like `histogram` or `counter`. + +Example: + +```yaml title="router.yaml" +telemetry: + instrumentation: + instruments: + router: + http.server.active_requests: true + acme.request.duration: + value: duration + type: counter + unit: kb + description: "my description" + attributes: + http.response.status_code: true + "my_attribute": + response_header: "x-my-header" + + supergraph: + acme.graphql.requests: + value: unit + type: counter + unit: count + description: "supergraph requests" + + subgraph: + acme.graphql.subgraph.errors: + value: unit + type: counter + unit: count + description: "my description" +``` + +[Documentation](https://www.apollographql.com/docs/router/configuration/telemetry/instrumentation/instruments) + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4771 + +### Reuse cached query plans across schema updates ([Issue #4834](https://github.com/apollographql/router/issues/4834)) + +The router now supports an experimental feature to reuse schema aware query hashing—introduced with the [entity caching](https://www.apollographql.com/docs/router/configuration/entity-caching/) feature—to cache query plans. It reduces the amount of work when reloading the router. The hash of the cache stays the same for a query across schema updates if the schema updates don't change the query. If query planner [cache warm-up](https://www.apollographql.com/docs/router/configuration/in-memory-caching/#cache-warm-up) is configured, the router can reuse previous cache entries for which the hash does not change, consequently reducing both CPU usage and reload duration. + +You can enable reuse of cached query plans by setting the `supergraph.query_planning.experimental_reuse_query_plans` option: + +```yaml title="router.yaml" +supergraph: + query_planning: + warmed_up_queries: 100 + experimental_reuse_query_plans: true +``` + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4883 + +### Set a default TTL for query plans ([Issue #4473](https://github.com/apollographql/router/issues/4473)) + +The router has updated the default TTL for query plan caches. The new default TTL is 30 days. With the previous default being an infinite duration, the new finite default better supports the fact that the router updates caches with schema updates. + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4588 + +## 🐛 Fixes + +### Replace null separator in cache key with `:` to match Redis convention ([PR #4886](https://github.com/apollographql/router/pull/4886)) + +To conform with Redis convention, the router now uses `:` instead of null as the separator in cache keys. This conformance helps to properly display cache keys in nested form in Redis clients. + +This PR (#4886) updates the separator for APQ cache keys. Another PR (#4583) updates the separator for query plan cache keys. + +By [@tapaderster](https://github.com/tapaderster) in https://github.com/apollographql/router/pull/4886 + +### Make 'router' user the owner of the docker image's /dist/data directory ([PR #4898](https://github.com/apollographql/router/pull/4898)) + +Since we made our images more secure, we run our router process as user 'router'. If we are running under 'heaptrack', e.g.: in a debug image, then we cannot write to /dist/data because it is owned by 'root'. + +This changes the ownership of /dist/data from 'root' to 'router' to allow writes to succeed. + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4898 + +### Accept `extensions: null` in a GraphQL request ([Issue #3388](https://github.com/apollographql/router/issues/3388)) + +In GraphQL requests, `extensions` is an optional map. +Passing an explicit `null` was incorrectly considered a parse error. +Now it is equivalent to omiting that field entirely, or to passing an empty map. + +By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/4911 + +### Require Cache-Control header for entity cache ([Issue #4880](https://github.com/apollographql/router/issues/4880)) + +Previously, the router's entity cache plugin didn't use a subgraph's `Cache-Control` header to decide whether to store a response. Instead, it cached all responses. + +Now, the router's entity cache plugin expects a `Cache-Control` header from a subgraph. If a subgraph does not provide it, the aggregated `Cache-Control` header sent to the client will contain `no-store`. + +Additionally, the router now verifies that a TTL is configured for all subgraphs, either globally or for each subgraph configuration. + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4882 + +### Helm: include all standard labels in pod spec but complete sentence that stands on its own ([PR #4862](https://github.com/apollographql/router/pull/4862)) + +The templates for the router's Helm chart have been updated so that the `helm.sh/chart`, `app.kubernetes.io/version`, and `app.kubernetes.io/managed-by` labels are now included on pods, as they already were for all other resources created by the Helm chart. + +The specific change to the template is that the pod spec template now uses the `router.labels` template function instead of the `router.selectorLabels` template function. This allows you to remove a label from the selector without removing it from resource metadata by overriding the `router.selectorLabels` and `router.labels` functions and moving the label from the former to the latter. + +By [@glasser](https://github.com/glasser) in https://github.com/apollographql/router/pull/4862 + +### Persisted queries return 4xx errors ([PR #4887](https://github.com/apollographql/router/pull/4887) + +Previously, sending an invalid persisted query request could return a 200 status code to the client when they should have returned errors. These requests now return errors as 4xx status codes: + +- Sending a PQ ID that is unknown returns 404 (Not Found). +- Sending freeform GraphQL when no freeform GraphQL is allowed returns + 400 (Bad Request). +- Sending both a PQ ID and freeform GraphQL in the same request (if the + APQ feature is not also enabled) returns 400 (Bad Request). +- Sending freeform GraphQL that is not in the safelist when the safelist + is enabled returns (403 Forbidden). +- A particular internal error that shouldn't happen returns 500 (Internal + Server Error). + + By [@glasser](https://github.com/glasser) in https://github.com/apollographql/router/pull/4887 + +## 📃 Configuration + +### Add `generate_query_fragments` configuration option ([PR #4885](https://github.com/apollographql/router/pull/4885)) + +Add a new `supergraph` configuration option `generate_query_fragments`. When set to `true`, the query planner will extract inline fragments into fragment definitions before sending queries to subgraphs. This can significantly reduce the size of the query sent to subgraphs, but may increase the time it takes to plan the query. Note that this option and `reuse_query_fragments` are mutually exclusive; if both are set to `true`, `generate_query_fragments` will take precedence. + +An example router configuration: + +```yaml title="router.yaml" +supergraph: + generate_query_fragments: true +``` + +By [@trevor-scheer](https://github.com/trevor-scheer) in https://github.com/apollographql/router/pull/4885 + +## 🛠 Maintenance + +### Fix integration test warning on macOS ([PR #4919](https://github.com/apollographql/router/pull/4919)) + +Previously, integration tests of the router on macOS could produce the warning messages: + +``` +warning: unused import: `common::Telemetry` + --> apollo-router/tests/integration/mod.rs:4:16 + | +4 | pub(crate) use common::Telemetry; + | ^^^^^^^^^^^^^^^^^ + | + = note: `#[warn(unused_imports)]` on by default + +warning: unused import: `common::ValueExt` + --> apollo-router/tests/integration/mod.rs:5:16 + | +5 | pub(crate) use common::ValueExt; + | ^^^^^^^^^^^^^^^^ +``` + +That issue is now resolved. + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4919 + + + # [1.43.2] - 2024-04-03 ## 🐛 Fixes diff --git a/Cargo.lock b/Cargo.lock index d9b3bf9e36..f4db1f55fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -250,7 +250,7 @@ dependencies = [ [[package]] name = "apollo-router" -version = "1.43.2" +version = "1.44.0" dependencies = [ "access-json", "anyhow", @@ -411,7 +411,7 @@ dependencies = [ [[package]] name = "apollo-router-benchmarks" -version = "1.43.2" +version = "1.44.0" dependencies = [ "apollo-parser", "apollo-router", @@ -427,7 +427,7 @@ dependencies = [ [[package]] name = "apollo-router-scaffold" -version = "1.43.2" +version = "1.44.0" dependencies = [ "anyhow", "cargo-scaffold", diff --git a/apollo-router-benchmarks/Cargo.toml b/apollo-router-benchmarks/Cargo.toml index c7c5e4f8cc..04c97a6e26 100644 --- a/apollo-router-benchmarks/Cargo.toml +++ b/apollo-router-benchmarks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-benchmarks" -version = "1.43.2" +version = "1.44.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "Elastic-2.0" diff --git a/apollo-router-scaffold/Cargo.toml b/apollo-router-scaffold/Cargo.toml index fcf25e2de5..ff6054dca0 100644 --- a/apollo-router-scaffold/Cargo.toml +++ b/apollo-router-scaffold/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-scaffold" -version = "1.43.2" +version = "1.44.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "Elastic-2.0" diff --git a/apollo-router-scaffold/templates/base/Cargo.toml b/apollo-router-scaffold/templates/base/Cargo.toml index 2f66ce5737..56e237bfce 100644 --- a/apollo-router-scaffold/templates/base/Cargo.toml +++ b/apollo-router-scaffold/templates/base/Cargo.toml @@ -22,7 +22,7 @@ apollo-router = { path ="{{integration_test}}apollo-router" } apollo-router = { git="https://github.com/apollographql/router.git", branch="{{branch}}" } {{else}} # Note if you update these dependencies then also update xtask/Cargo.toml -apollo-router = "1.43.2" +apollo-router = "1.44.0" {{/if}} {{/if}} async-trait = "0.1.52" diff --git a/apollo-router-scaffold/templates/base/xtask/Cargo.toml b/apollo-router-scaffold/templates/base/xtask/Cargo.toml index febb964c3c..0f1d41f37b 100644 --- a/apollo-router-scaffold/templates/base/xtask/Cargo.toml +++ b/apollo-router-scaffold/templates/base/xtask/Cargo.toml @@ -13,7 +13,7 @@ apollo-router-scaffold = { path ="{{integration_test}}apollo-router-scaffold" } {{#if branch}} apollo-router-scaffold = { git="https://github.com/apollographql/router.git", branch="{{branch}}" } {{else}} -apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.43.2" } +apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.44.0" } {{/if}} {{/if}} anyhow = "1.0.58" diff --git a/apollo-router/Cargo.toml b/apollo-router/Cargo.toml index b65ada6305..bac9991d7a 100644 --- a/apollo-router/Cargo.toml +++ b/apollo-router/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router" -version = "1.43.2" +version = "1.44.0" authors = ["Apollo Graph, Inc. "] repository = "https://github.com/apollographql/router/" documentation = "https://docs.rs/apollo-router" diff --git a/apollo-router/src/query_planner/caching_query_planner.rs b/apollo-router/src/query_planner/caching_query_planner.rs index 485c85460a..3e86b6087e 100644 --- a/apollo-router/src/query_planner/caching_query_planner.rs +++ b/apollo-router/src/query_planner/caching_query_planner.rs @@ -531,6 +531,10 @@ const FEDERATION_VERSION: &str = std::env!("FEDERATION_VERSION"); impl std::fmt::Display for CachingQueryKey { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let mut hasher = Sha256::new(); + hasher.update(self.operation.as_deref().unwrap_or("-")); + let operation = hex::encode(hasher.finalize()); + let mut hasher = Sha256::new(); hasher.update(&serde_json::to_vec(&self.metadata).expect("serialization should not fail")); hasher.update( @@ -538,13 +542,18 @@ impl std::fmt::Display for CachingQueryKey { ); let metadata = hex::encode(hasher.finalize()); - write!(f, "plan:{}:{}:{}", FEDERATION_VERSION, self.hash, metadata,) + write!( + f, + "plan:{}:{}:{}:{}", + FEDERATION_VERSION, self.hash, operation, metadata, + ) } } impl Hash for CachingQueryKey { fn hash(&self, state: &mut H) { self.hash.0.hash(state); + self.operation.hash(state); self.metadata.hash(state); self.plan_options.hash(state); } diff --git a/apollo-router/tests/integration/redis.rs b/apollo-router/tests/integration/redis.rs index 2c9b57159d..5a340fea03 100644 --- a/apollo-router/tests/integration/redis.rs +++ b/apollo-router/tests/integration/redis.rs @@ -8,6 +8,8 @@ mod test { use apollo_router::MockedSubgraphs; use fred::cmd; use fred::prelude::*; + use fred::types::ScanType; + use fred::types::Scanner; use futures::StreamExt; use http::header::CACHE_CONTROL; use http::HeaderValue; @@ -26,7 +28,7 @@ mod test { // 2. run `docker compose up -d` and connect to the redis container by running `docker exec -ti /bin/bash`. // 3. Run the `redis-cli` command from the shell and start the redis `monitor` command. // 4. Run this test and yank the updated cache key from the redis logs. - let known_cache_key = "plan:v2.7.2:af1ee357bc75cfbbcc6adda41089a56e7d1d52f6d44c049739dde2c259314f58:2bf7810d3a47b31d8a77ebb09cdc784a3f77306827dc55b06770030a858167c7"; + let known_cache_key = "plan:v2.7.2:af1ee357bc75cfbbcc6adda41089a56e7d1d52f6d44c049739dde2c259314f58:3973e022e93220f9212c18d0d0c543ae7c309e46640da93a4a0314de999f5112:2bf7810d3a47b31d8a77ebb09cdc784a3f77306827dc55b06770030a858167c7"; let config = RedisConfig::from_url("redis://127.0.0.1:6379")?; let client = RedisClient::new(config, None, None, None); @@ -63,7 +65,18 @@ mod test { let _ = supergraph.oneshot(request).await?.next_response().await; - let s: String = client.get(known_cache_key).await.unwrap(); + let s: String = match client.get(known_cache_key).await { + Ok(s) => s, + Err(e) => { + println!("keys in Redis server:"); + let mut scan = client.scan("plan:*", None, Some(ScanType::String)); + while let Some(key) = scan.next().await { + let key = key.as_ref().unwrap().results(); + println!("\t{key:?}"); + } + panic!("key {known_cache_key} not found: {e}"); + } + }; let exp: i64 = client .custom_raw(cmd!("EXPIRETIME"), vec![known_cache_key.to_string()]) .await diff --git a/dockerfiles/tracing/docker-compose.datadog.yml b/dockerfiles/tracing/docker-compose.datadog.yml index 26967fb052..0115029b0b 100644 --- a/dockerfiles/tracing/docker-compose.datadog.yml +++ b/dockerfiles/tracing/docker-compose.datadog.yml @@ -3,7 +3,7 @@ services: apollo-router: container_name: apollo-router - image: ghcr.io/apollographql/router:v1.43.2 + image: ghcr.io/apollographql/router:v1.44.0 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/datadog.router.yaml:/etc/config/configuration.yaml diff --git a/dockerfiles/tracing/docker-compose.jaeger.yml b/dockerfiles/tracing/docker-compose.jaeger.yml index 37ace950c4..04c0c57799 100644 --- a/dockerfiles/tracing/docker-compose.jaeger.yml +++ b/dockerfiles/tracing/docker-compose.jaeger.yml @@ -4,7 +4,7 @@ services: apollo-router: container_name: apollo-router #build: ./router - image: ghcr.io/apollographql/router:v1.43.2 + image: ghcr.io/apollographql/router:v1.44.0 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/jaeger.router.yaml:/etc/config/configuration.yaml diff --git a/dockerfiles/tracing/docker-compose.zipkin.yml b/dockerfiles/tracing/docker-compose.zipkin.yml index a201f5f86d..f7a431ea72 100644 --- a/dockerfiles/tracing/docker-compose.zipkin.yml +++ b/dockerfiles/tracing/docker-compose.zipkin.yml @@ -4,7 +4,7 @@ services: apollo-router: container_name: apollo-router build: ./router - image: ghcr.io/apollographql/router:v1.43.2 + image: ghcr.io/apollographql/router:v1.44.0 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/zipkin.router.yaml:/etc/config/configuration.yaml diff --git a/helm/chart/router/Chart.yaml b/helm/chart/router/Chart.yaml index 917c6ca099..bfbfc803cf 100644 --- a/helm/chart/router/Chart.yaml +++ b/helm/chart/router/Chart.yaml @@ -20,10 +20,10 @@ type: application # so it matches the shape of our release process and release automation. # By proxy of that decision, this version uses SemVer 2.0.0, though the prefix # of "v" is not included. -version: 1.43.2 +version: 1.44.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "v1.43.2" +appVersion: "v1.44.0" diff --git a/helm/chart/router/README.md b/helm/chart/router/README.md index 48c19541d2..b997146903 100644 --- a/helm/chart/router/README.md +++ b/helm/chart/router/README.md @@ -2,7 +2,7 @@ [router](https://github.com/apollographql/router) Rust Graph Routing runtime for Apollo Federation -![Version: 1.43.2](https://img.shields.io/badge/Version-1.43.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.43.2](https://img.shields.io/badge/AppVersion-v1.43.2-informational?style=flat-square) +![Version: 1.44.0](https://img.shields.io/badge/Version-1.44.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.44.0](https://img.shields.io/badge/AppVersion-v1.44.0-informational?style=flat-square) ## Prerequisites @@ -11,7 +11,7 @@ ## Get Repo Info ```console -helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.43.2 +helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.44.0 ``` ## Install Chart @@ -19,7 +19,7 @@ helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.43.2 **Important:** only helm3 is supported ```console -helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.43.2 --values my-values.yaml +helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.44.0 --values my-values.yaml ``` _See [configuration](#configuration) below._ @@ -95,4 +95,4 @@ helm show values oci://ghcr.io/apollographql/helm-charts/router | virtualservice.enabled | bool | `false` | | ---------------------------------------------- -Autogenerated from chart metadata using [helm-docs v1.13.1](https://github.com/norwoodj/helm-docs/releases/v1.13.1) +Autogenerated from chart metadata using [helm-docs v1.11.2](https://github.com/norwoodj/helm-docs/releases/v1.11.2) diff --git a/licenses.html b/licenses.html index 5336ced0be..e36dcba570 100644 --- a/licenses.html +++ b/licenses.html @@ -44,13 +44,13 @@

Third Party Licenses

Overview of licenses:

    -
  • MIT License (90)
  • -
  • Apache License 2.0 (70)
  • -
  • BSD 3-Clause "New" or "Revised" License (10)
  • -
  • ISC License (7)
  • +
  • Apache License 2.0 (480)
  • +
  • MIT License (152)
  • +
  • BSD 3-Clause "New" or "Revised" License (12)
  • +
  • ISC License (11)
  • +
  • BSD 2-Clause "Simplified" License (3)
  • Elastic License 2.0 (3)
  • Mozilla Public License 2.0 (3)
  • -
  • BSD 2-Clause "Simplified" License (2)
  • Creative Commons Zero v1.0 Universal (2)
  • OpenSSL License (2)
  • Unicode License Agreement - Data Files and Software (2016) (1)
  • @@ -65,7 +65,6 @@

    Used by:

  • aws-config
  • aws-credential-types
  • aws-runtime
  • -
  • aws-sigv4
  • aws-smithy-async
  • aws-smithy-http
  • aws-smithy-json
  • @@ -4652,204 +4651,6 @@

    Used by:

    of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS - - -
  • -

    Apache License 2.0

    -

    Used by:

    - -
                                     Apache License
    -                           Version 2.0, January 2004
    -                        http://www.apache.org/licenses/
    -
    -   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
    -
    -   1. Definitions.
    -
    -      "License" shall mean the terms and conditions for use, reproduction,
    -      and distribution as defined by Sections 1 through 9 of this document.
    -
    -      "Licensor" shall mean the copyright owner or entity authorized by
    -      the copyright owner that is granting the License.
    -
    -      "Legal Entity" shall mean the union of the acting entity and all
    -      other entities that control, are controlled by, or are under common
    -      control with that entity. For the purposes of this definition,
    -      "control" means (i) the power, direct or indirect, to cause the
    -      direction or management of such entity, whether by contract or
    -      otherwise, or (ii) ownership of fifty percent (50%) or more of the
    -      outstanding shares, or (iii) beneficial ownership of such entity.
    -
    -      "You" (or "Your") shall mean an individual or Legal Entity
    -      exercising permissions granted by this License.
    -
    -      "Source" form shall mean the preferred form for making modifications,
    -      including but not limited to software source code, documentation
    -      source, and configuration files.
    -
    -      "Object" form shall mean any form resulting from mechanical
    -      transformation or translation of a Source form, including but
    -      not limited to compiled object code, generated documentation,
    -      and conversions to other media types.
    -
    -      "Work" shall mean the work of authorship, whether in Source or
    -      Object form, made available under the License, as indicated by a
    -      copyright notice that is included in or attached to the work
    -      (an example is provided in the Appendix below).
    -
    -      "Derivative Works" shall mean any work, whether in Source or Object
    -      form, that is based on (or derived from) the Work and for which the
    -      editorial revisions, annotations, elaborations, or other modifications
    -      represent, as a whole, an original work of authorship. For the purposes
    -      of this License, Derivative Works shall not include works that remain
    -      separable from, or merely link (or bind by name) to the interfaces of,
    -      the Work and Derivative Works thereof.
    -
    -      "Contribution" shall mean any work of authorship, including
    -      the original version of the Work and any modifications or additions
    -      to that Work or Derivative Works thereof, that is intentionally
    -      submitted to Licensor for inclusion in the Work by the copyright owner
    -      or by an individual or Legal Entity authorized to submit on behalf of
    -      the copyright owner. For the purposes of this definition, "submitted"
    -      means any form of electronic, verbal, or written communication sent
    -      to the Licensor or its representatives, including but not limited to
    -      communication on electronic mailing lists, source code control systems,
    -      and issue tracking systems that are managed by, or on behalf of, the
    -      Licensor for the purpose of discussing and improving the Work, but
    -      excluding communication that is conspicuously marked or otherwise
    -      designated in writing by the copyright owner as "Not a Contribution."
    -
    -      "Contributor" shall mean Licensor and any individual or Legal Entity
    -      on behalf of whom a Contribution has been received by Licensor and
    -      subsequently incorporated within the Work.
    -
    -   2. Grant of Copyright License. Subject to the terms and conditions of
    -      this License, each Contributor hereby grants to You a perpetual,
    -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    -      copyright license to reproduce, prepare Derivative Works of,
    -      publicly display, publicly perform, sublicense, and distribute the
    -      Work and such Derivative Works in Source or Object form.
    -
    -   3. Grant of Patent License. Subject to the terms and conditions of
    -      this License, each Contributor hereby grants to You a perpetual,
    -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    -      (except as stated in this section) patent license to make, have made,
    -      use, offer to sell, sell, import, and otherwise transfer the Work,
    -      where such license applies only to those patent claims licensable
    -      by such Contributor that are necessarily infringed by their
    -      Contribution(s) alone or by combination of their Contribution(s)
    -      with the Work to which such Contribution(s) was submitted. If You
    -      institute patent litigation against any entity (including a
    -      cross-claim or counterclaim in a lawsuit) alleging that the Work
    -      or a Contribution incorporated within the Work constitutes direct
    -      or contributory patent infringement, then any patent licenses
    -      granted to You under this License for that Work shall terminate
    -      as of the date such litigation is filed.
    -
    -   4. Redistribution. You may reproduce and distribute copies of the
    -      Work or Derivative Works thereof in any medium, with or without
    -      modifications, and in Source or Object form, provided that You
    -      meet the following conditions:
    -
    -      (a) You must give any other recipients of the Work or
    -          Derivative Works a copy of this License; and
    -
    -      (b) You must cause any modified files to carry prominent notices
    -          stating that You changed the files; and
    -
    -      (c) You must retain, in the Source form of any Derivative Works
    -          that You distribute, all copyright, patent, trademark, and
    -          attribution notices from the Source form of the Work,
    -          excluding those notices that do not pertain to any part of
    -          the Derivative Works; and
    -
    -      (d) If the Work includes a "NOTICE" text file as part of its
    -          distribution, then any Derivative Works that You distribute must
    -          include a readable copy of the attribution notices contained
    -          within such NOTICE file, excluding those notices that do not
    -          pertain to any part of the Derivative Works, in at least one
    -          of the following places: within a NOTICE text file distributed
    -          as part of the Derivative Works; within the Source form or
    -          documentation, if provided along with the Derivative Works; or,
    -          within a display generated by the Derivative Works, if and
    -          wherever such third-party notices normally appear. The contents
    -          of the NOTICE file are for informational purposes only and
    -          do not modify the License. You may add Your own attribution
    -          notices within Derivative Works that You distribute, alongside
    -          or as an addendum to the NOTICE text from the Work, provided
    -          that such additional attribution notices cannot be construed
    -          as modifying the License.
    -
    -      You may add Your own copyright statement to Your modifications and
    -      may provide additional or different license terms and conditions
    -      for use, reproduction, or distribution of Your modifications, or
    -      for any such Derivative Works as a whole, provided Your use,
    -      reproduction, and distribution of the Work otherwise complies with
    -      the conditions stated in this License.
    -
    -   5. Submission of Contributions. Unless You explicitly state otherwise,
    -      any Contribution intentionally submitted for inclusion in the Work
    -      by You to the Licensor shall be under the terms and conditions of
    -      this License, without any additional terms or conditions.
    -      Notwithstanding the above, nothing herein shall supersede or modify
    -      the terms of any separate license agreement you may have executed
    -      with Licensor regarding such Contributions.
    -
    -   6. Trademarks. This License does not grant permission to use the trade
    -      names, trademarks, service marks, or product names of the Licensor,
    -      except as required for reasonable and customary use in describing the
    -      origin of the Work and reproducing the content of the NOTICE file.
    -
    -   7. Disclaimer of Warranty. Unless required by applicable law or
    -      agreed to in writing, Licensor provides the Work (and each
    -      Contributor provides its Contributions) on an "AS IS" BASIS,
    -      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    -      implied, including, without limitation, any warranties or conditions
    -      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
    -      PARTICULAR PURPOSE. You are solely responsible for determining the
    -      appropriateness of using or redistributing the Work and assume any
    -      risks associated with Your exercise of permissions under this License.
    -
    -   8. Limitation of Liability. In no event and under no legal theory,
    -      whether in tort (including negligence), contract, or otherwise,
    -      unless required by applicable law (such as deliberate and grossly
    -      negligent acts) or agreed to in writing, shall any Contributor be
    -      liable to You for damages, including any direct, indirect, special,
    -      incidental, or consequential damages of any character arising as a
    -      result of this License or out of the use or inability to use the
    -      Work (including but not limited to damages for loss of goodwill,
    -      work stoppage, computer failure or malfunction, or any and all
    -      other commercial damages or losses), even if such Contributor
    -      has been advised of the possibility of such damages.
    -
    -   9. Accepting Warranty or Additional Liability. While redistributing
    -      the Work or Derivative Works thereof, You may choose to offer,
    -      and charge a fee for, acceptance of support, warranty, indemnity,
    -      or other liability obligations and/or rights consistent with this
    -      License. However, in accepting such obligations, You may act only
    -      on Your own behalf and on Your sole responsibility, not on behalf
    -      of any other Contributor, and only if You agree to indemnify,
    -      defend, and hold each Contributor harmless for any liability
    -      incurred by, or claims asserted against, such Contributor by reason
    -      of your accepting any such warranty or additional liability.
    -
    -   END OF TERMS AND CONDITIONS
    -
    -   Copyright 2019 Yoshua Wuyts
    -
    -   Licensed under the Apache License, Version 2.0 (the "License");
    -   you may not use this file except in compliance with the License.
    -   You may obtain a copy of the License at
    -
    -       http://www.apache.org/licenses/LICENSE-2.0
    -
    -   Unless required by applicable law or agreed to in writing, software
    -   distributed under the License is distributed on an "AS IS" BASIS,
    -   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -   See the License for the specific language governing permissions and
    -   limitations under the License.
     
  • @@ -8411,26 +8212,13 @@

    Used by:

  • arbitrary
  • arc-swap
  • async-channel
  • -
  • async-channel
  • async-compression
  • -
  • async-executor
  • -
  • async-global-executor
  • -
  • async-io
  • -
  • async-io
  • -
  • async-lock
  • -
  • async-lock
  • -
  • async-process
  • -
  • async-signal
  • -
  • async-std
  • -
  • async-task
  • -
  • atomic-waker
  • autocfg
  • backtrace
  • base64
  • base64
  • bitflags
  • bitflags
  • -
  • blocking
  • bstr
  • bumpalo
  • bytes-utils
  • @@ -8453,9 +8241,6 @@

    Used by:

  • envmnt
  • equivalent
  • event-listener
  • -
  • event-listener
  • -
  • event-listener
  • -
  • event-listener-strategy
  • fastrand
  • fastrand
  • filetime
  • @@ -8466,7 +8251,6 @@

    Used by:

  • fraction
  • fsio
  • futures-lite
  • -
  • futures-lite
  • gimli
  • git2
  • group
  • @@ -8485,7 +8269,6 @@

    Used by:

  • indexmap
  • indexmap
  • inventory
  • -
  • io-lifetimes
  • ipconfig
  • itertools
  • itertools
  • @@ -8499,7 +8282,6 @@

    Used by:

  • libz-ng-sys
  • libz-sys
  • linux-raw-sys
  • -
  • linux-raw-sys
  • lock_api
  • log
  • maplit
  • @@ -8531,10 +8313,8 @@

    Used by:

  • pest_generator
  • pest_meta
  • petgraph
  • -
  • piper
  • pkg-config
  • platforms
  • -
  • polling
  • proc-macro2
  • prost
  • prost
  • @@ -8556,7 +8336,6 @@

    Used by:

  • rustc_version
  • rustc_version
  • rustix
  • -
  • rustix
  • rustls
  • rustls-native-certs
  • rustls-pemfile
  • @@ -8574,7 +8353,6 @@

    Used by:

  • similar
  • smallvec
  • socket2
  • -
  • socket2
  • stable_deref_trait
  • syn
  • syn
  • @@ -8599,7 +8377,6 @@

    Used by:

  • unicode-xid
  • url
  • uuid
  • -
  • value-bag
  • version_check
  • waker-fn
  • wasi
  • @@ -11105,7 +10882,6 @@

    Used by:

                                  Apache License
    @@ -11754,15 +11530,6 @@ 

    Used by:

    additional terms or conditions.
    -
  • -

    Apache License 2.0

    -

    Used by:

    - -
    ../../LICENSE-APACHE
    -
  • Apache License 2.0

    Used by:

    @@ -12410,14 +12177,17 @@

    Used by:

    Apache License 2.0

    Used by:

      +
    • allocator-api2
    • apollo-compiler
    • +
    • apollo-encoder
    • apollo-parser
    • +
    • apollo-smith
    • +
    • buildstructor
    • curve25519-dalek-derive
    • deadpool-runtime
    • deno-proc-macro-rules
    • deno-proc-macro-rules-macros
    • dunce
    • -
    • gloo-timers
    • graphql-introspection-query
    • graphql_client
    • graphql_client_codegen
    • @@ -12511,47 +12281,6 @@

      Used by:

      http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -
    • -

      Apache License 2.0

      -

      Used by:

      - -
      Copyright 2023 The allocator-api2 project developers
      -
      -Licensed under the Apache License, Version 2.0 (the "License");
      -you may not use this file except in compliance with the License.
      -You may obtain a copy of the License at
      -
      -	http://www.apache.org/licenses/LICENSE-2.0
      -
      -Unless required by applicable law or agreed to in writing, software
      -distributed under the License is distributed on an "AS IS" BASIS,
      -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      -See the License for the specific language governing permissions and
      -limitations under the License.
      -
    • -
    • -

      Apache License 2.0

      -

      Used by:

      - -
      Copyright [2022] [Bryn Cooke]
      -
      -Licensed under the Apache License, Version 2.0 (the "License");
      -you may not use this file except in compliance with the License.
      -You may obtain a copy of the License at
      -
      -    http://www.apache.org/licenses/LICENSE-2.0
      -
       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      @@ -13054,7 +12783,6 @@ 

      BSD 3-Clause "New" or "Revised" Licens

      Used by:

      Copyright (c) <year> <owner>. 
       
      @@ -13596,6 +13324,7 @@ 

      ISC License

      Used by:

         Copyright 2015-2016 Brian Smith.
       
      @@ -13616,6 +13345,7 @@ 

      ISC License

      Used by:

      /* Copyright (c) 2015, Google Inc.
        *
      @@ -13721,7 +13451,6 @@ 

      ISC License

      Used by:

      ISC License:
      @@ -14041,6 +13770,7 @@ 

      MIT License

      Used by:

      Copyright (c) 2015-2016 the fiat-crypto authors (see
       https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS).
      @@ -14472,66 +14202,6 @@ 

      Used by:

      shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -
      -
    • -
    • -

      MIT License

      -

      Used by:

      - -
      Copyright (c) 2019 Carl Lerche
      -
      -Permission is hereby granted, free of charge, to any
      -person obtaining a copy of this software and associated
      -documentation files (the "Software"), to deal in the
      -Software without restriction, including without
      -limitation the rights to use, copy, modify, merge,
      -publish, distribute, sublicense, and/or sell copies of
      -the Software, and to permit persons to whom the Software
      -is furnished to do so, subject to the following
      -conditions:
      -
      -The above copyright notice and this permission notice
      -shall be included in all copies or substantial portions
      -of the Software.
      -
      -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
      -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
      -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
      -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
      -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
      -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
      -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
      -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
      -DEALINGS IN THE SOFTWARE.
      -
      -Copyright (c) 2018 David Tolnay
      -
      -Permission is hereby granted, free of charge, to any
      -person obtaining a copy of this software and associated
      -documentation files (the "Software"), to deal in the
      -Software without restriction, including without
      -limitation the rights to use, copy, modify, merge,
      -publish, distribute, sublicense, and/or sell copies of
      -the Software, and to permit persons to whom the Software
      -is furnished to do so, subject to the following
      -conditions:
      -
      -The above copyright notice and this permission notice
      -shall be included in all copies or substantial portions
      -of the Software.
      -
       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
       ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
       TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
      @@ -15443,6 +15113,8 @@ 

      Used by:

      MIT License

      Used by:

        +
      • async-stream
      • +
      • async-stream-impl
      • base64-simd
      • convert_case
      • crunchy
      • @@ -15457,7 +15129,6 @@

        Used by:

      • jsonschema
      • lazy-regex-proc_macros
      • number_prefix
      • -
      • ring
      • serde_v8
      • v8
      • valuable
      • @@ -16315,8 +15986,6 @@

        Used by:

        MIT License

        Used by:

          -
        • aho-corasick
        • -
        • byteorder
        • globset
        • memchr
        • regex-automata
        • @@ -17136,6 +16805,7 @@

          OpenSSL License

          Used by:

          /* ====================================================================
            * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
          @@ -17190,62 +16860,6 @@ 

          Used by:

          * Hudson (tjh@cryptsoft.com). * */
          - -
        • -

          OpenSSL License

          -

          Used by:

          - -
          OpenSSL License
          -
          -Copyright (c) 1998-2008 The OpenSSL Project. All rights reserved.
          -
          -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
          -
          -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
          -
          -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
          -
          -3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
          -
          -4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org.
          -
          -5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project.
          -
          -6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)"
          -
          -THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
          -
          -This product includes cryptographic software written by Eric Young (eay@cryptsoft.com). This product includes software written by Tim Hudson (tjh@cryptsoft.com).
          -
          -
          -Original SSLeay License
          -
          -Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved.
          -
          -This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The implementation was written so as to conform with Netscapes SSL.
          -
          -This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution is covered by the same copyright terms except that the holder is Tim Hudson (tjh@cryptsoft.com).
          -
          -Copyright remains Eric Young's, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation (online or textual) provided with the package.
          -
          -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
          -
          -1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer.
          -
          -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
          -
          -3. All advertising materials mentioning features or use of this software must display the following acknowledgement:
          -"This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)"
          -The word 'cryptographic' can be left out if the rouines from the library being used are not cryptographic related :-).
          -
          -4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
          -
          -THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
          -
          -The licence and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution licence [including the GNU Public Licence.]
          -
        • Unicode License Agreement - Data Files and Software (2016)

          diff --git a/scripts/install.sh b/scripts/install.sh index b3697de80a..64afab308c 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -11,7 +11,7 @@ BINARY_DOWNLOAD_PREFIX="https://github.com/apollographql/router/releases/downloa # Router version defined in apollo-router's Cargo.toml # Note: Change this line manually during the release steps. -PACKAGE_VERSION="v1.43.2" +PACKAGE_VERSION="v1.44.0" download_binary() { downloader --check