mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-22 15:01:39 +03:00
7fffc11077
* server: use a leaky bucket algorithm for bytes-per-second cache rate limiting * Use evalsha properly * Adds redis cache limit parameters to PoliciesConfig * Loads Leaky Bucket Script On Server Start * Adds more redis logging and moves cache update into lua script * reverts setex in lua and adds notes * Refactors cacheStore and adds max TTL and cache size limits * Filter session vars in cache key * WIP * parens * cache-clear-hander POC implementation * cache-clear-hander POC implementation * Pro projectId used as cache key * POC working! * prefixing query-response keys in redis * Add cacheClearer to RedisScripts * Partial implementation of cacheClearer from scripts record * updating tests * [automated] stylish-haskell commit * Adds query look with up with metrics script * Adds missing module and lua script from last commit * Changes redis script module structure to match cache clearing branch * minor change to lua script * cleaning up cache clearing * generalising JsonLog * [automated] stylish-haskell commit * Draft Cache Metrics Endpoint * Adds Cache Metrics Handler * Adds hook handler module * Missed HandlerHook module in last commit * glob * Fixes redis mget bug * Removes cache totals and changes dashes to colons in metric cache keys * Adds query param to clear clear endpoint for deleting specific keys * Adds query param to clear clear endpoint for deleting specific keys * Cache Metrics on query families rather then queries * Replace Set with nub * Base16 Redis Hashes * Query Family Redis Keys With Roles * response headers for cache keys * fixing bug in family key by excluding operation name; using hash for response header instead of entire key * Adds query family to redis cache keys and cache clear endpoint * Fixes queryfamily hash bug * Moves cache endpoints to /pro * Moved cache clear to POST * Refactors cache clear function * Fixes query family format bug * Adds query cache tests and optional --redis-url flag to python test suite * Adds session variable cache test * Update pro changelog * adding documentation for additional caching features * more docs * clearing up units of leaky bucket params * Adds comments to leaky bucket script * removes old todo * Fixes session variable filtering to work with new query rootfield * more advanced defaulting behaviour for bucket rate and capacity. * Updates Docs * Moves Role into QueryFamily hash * Use Aeson for Cache Clear endpoint response * Moves trace to bracket the leaky bucket script * Misc review tweaks * Adds sum type for cache clear query params * Hardcodes RegisReplyLog log level * Update docs/graphql/cloud/response-caching.rst Co-authored-by: Phil Freeman <phil@hasura.io> * new prose for rate limiting docs * [automated] stylish-haskell commit * make rootToSessVarPreds total * [automated] stylish-haskell commit * Fixes out of scope error * Renamed _acRedis to _acCacheStore Co-authored-by: Solomon Bothwell <ssbothwell@gmail.com> Co-authored-by: Lyndon Maydwell <lyndon@sordina.net> Co-authored-by: David Overton <david@hasura.io> Co-authored-by: Stylish Haskell Bot <stylish-haskell@users.noreply.github.com> Co-authored-by: Lyndon Maydwell <lyndon@hasura.io> GitOrigin-RevId: dda5c1a3f902967b3d78310f950541a55fabb1b0
80 lines
2.0 KiB
YAML
80 lines
2.0 KiB
YAML
- description: call the simple endpoint to write to the cache
|
|
url: /v1/graphql
|
|
status: 200
|
|
query:
|
|
query: |
|
|
query @cached(ttl: 300) {
|
|
test_table {
|
|
first_name
|
|
last_name
|
|
}
|
|
}
|
|
resp_headers:
|
|
Cache-Control: max-age=300
|
|
X-Hasura-Query-Cache-Key: 29c20d58ac50d0934e6708b4752ca5b122c09e3a
|
|
X-Hasura-Query-Family-Cache-Key: 05e354afeca0828bbe6c1e77c25e4ae948f45f80
|
|
response:
|
|
data:
|
|
test_table:
|
|
- first_name: Foo
|
|
last_name: Bar
|
|
- first_name: Baz
|
|
last_name: Qux
|
|
- first_name: X%20Y
|
|
last_name: Test
|
|
|
|
- description: call the simple endpoint to write to the cache
|
|
url: /v1/graphql
|
|
status: 200
|
|
query:
|
|
query: |
|
|
query ($name: String!) @cached(ttl: 300) {
|
|
test_table(where: {first_name: {_eq: $name}}) {
|
|
first_name
|
|
last_name
|
|
}
|
|
}
|
|
variables:
|
|
name: Baz
|
|
resp_headers:
|
|
Cache-Control: max-age=300
|
|
X-Hasura-Query-Cache-Key: 9b73b0e24aa2ea370775815d4aaea711c5f14642
|
|
X-Hasura-Query-Family-Cache-Key: 84e1f3f29c75859c2cffe4c6c52f738a46ce8fd3
|
|
response:
|
|
data:
|
|
test_table:
|
|
- first_name: Baz
|
|
last_name: Qux
|
|
|
|
- description: call the simple endpoint to write to the cache
|
|
url: /v1/graphql
|
|
status: 200
|
|
query:
|
|
query: |
|
|
query ($name: String!) @cached(ttl: 300) {
|
|
test_table(where: {first_name: {_eq: $name}}) {
|
|
first_name
|
|
last_name
|
|
}
|
|
}
|
|
variables:
|
|
name: Foo
|
|
resp_headers:
|
|
Cache-Control: max-age=300
|
|
X-Hasura-Query-Cache-Key: 8e0d6cc0760cc90abe942ca3ea0930b587166f42
|
|
X-Hasura-Query-Family-Cache-Key: 84e1f3f29c75859c2cffe4c6c52f738a46ce8fd3
|
|
response:
|
|
data:
|
|
test_table:
|
|
- first_name: Foo
|
|
last_name: Bar
|
|
|
|
- description: call the cache clear endpoint
|
|
url: /pro/cache/clear?family=84e1f3f29c75859c2cffe4c6c52f738a46ce8fd3
|
|
method: POST
|
|
status: 200
|
|
query:
|
|
response:
|
|
message: success
|
|
clearedItemCount: '2'
|