Commit Graph

5730 Commits

Author SHA1 Message Date
Daniel Harvey
79b50add5e [server] regularly ping selected sources
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6945
GitOrigin-RevId: cad67b121090d4100330067d3d50f575292b4584
2022-11-23 16:41:46 +00:00
Stefano Magni
c50cfad476 console: Improve the analytics docs
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7015
GitOrigin-RevId: 66e461f20173d5e669056f3d818821a1f1384bb4
2022-11-23 16:04:30 +00:00
Abby Sassel
4598e1e008 NDAT-300: skip fewer CockroachDB tests
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7016
GitOrigin-RevId: 0fbbfd9fed46301759ee4d62827c9ab7989617b6
2022-11-23 15:22:19 +00:00
Nicolas Beaussart
1b33ebc32d ci: introduce required review github action
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7011
GitOrigin-RevId: 357186328a784ad5b44a155d098944c242b08ca8
2022-11-23 14:33:45 +00:00
Kailash Sudhakar
458ce8b384 Build configs for preview builds through GKE
Build configs for preview builds through GKE

## Description ✍️

Moving the docs preview builds from Cloudflare to "websitecloud" Google Cloud Project which is currently handling the staging and production deployments:

The preview triggers are expected to be called only on changes to the docs folder

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6999
GitOrigin-RevId: 1699fe7677ebc03b8ce6338394e91d8e848640c3
2022-11-23 14:18:37 +00:00
Samir Talwar
43779ff0c1 server/tests-py: Fix test_inconsistent_meta.py for split databases.
This test did not work when splitting the metadata and source backends. Fixed mostly by running the relevant SQL using `source_backend.engine`, but I also took the time to clean it up a little, and broke up _test.yaml_ into 3 files.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6957
GitOrigin-RevId: bbca60a8906caba2d0cffd834b3b8595fca058fd
2022-11-23 14:14:01 +00:00
Matthew Goodwin
7a1dc37bf6 refactor (console): create global metadata hooks that use the new metadata types
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6931
Co-authored-by: Vijay Prasanna <11921040+vijayprasanna13@users.noreply.github.com>
GitOrigin-RevId: e57ed8bf14f2b855c6f4c20e072ecd25a784d08b
2022-11-23 13:18:15 +00:00
Varun Choudhary
8a35522970 console: console crashes on searching special character on table and action search bar
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7008
GitOrigin-RevId: 29e445da8d4be0daba60b02eb8a40c640086df2b
2022-11-23 12:07:23 +00:00
Sameer Kolhar
42d2e9bf10 console: add UI to show DB connection latency reports on cloud console
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6808
GitOrigin-RevId: 2768bdf3611ecaf40ed1b967d27c57aa3d80034a
2022-11-23 11:08:29 +00:00
Shahidh K Muhammed
e495c788b2 docs: update security team's email address
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6968
GitOrigin-RevId: d65596d0b5b6a36f4b2b35db4a50c3b6d0a91c72
2022-11-23 10:32:19 +00:00
awjchen
339e19048b server: update metadata api for the OpenTelemetry exporter
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6844
GitOrigin-RevId: 3d808215fc46a79caf85a1c4d964ac874f905029
2022-11-23 07:54:53 +00:00
Samir Talwar
c6557ced13 server/test-harness: Do not fail if the database cannot be dropped.
Sometimes this happens, especially in CI. It's alright. We can just leave it lying around and it will be destroyed when the container and associated volume are removed.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7003
GitOrigin-RevId: dcb74920c12341d7a15f9b6ebfe52d0864de4738
2022-11-23 07:54:44 +00:00
Abby Sassel
9c4aaccdb2 Server/test: fix enum test for CosmosDB: cleanup types in teardown
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6992
GitOrigin-RevId: 4c872e5837367b1449c9c0eeb085b708560d9bbd
2022-11-23 07:54:36 +00:00
Daniel Harvey
80c3846aaa [server/tests] run setup for each set of tests again
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7000
GitOrigin-RevId: 2e85870c970144dbd417cf555b14b63c18f495ab
2022-11-23 07:54:28 +00:00
Sean Park-Ross
26a5946622 Docs: Docusaurus update fixes
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6998
GitOrigin-RevId: 2b60acba07f8c0bdce116ec44986efcaa3f4587d
2022-11-23 07:54:19 +00:00
Daniel Harvey
bc2d173161 [server/tests] New SQLServer DB per test
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6834
Co-authored-by: Gil Mizrahi <8547573+soupi@users.noreply.github.com>
GitOrigin-RevId: 3ee30313e47ba64d5b50ff46345ce507735c4d1f
2022-11-23 07:54:10 +00:00
Auke Booij
67b922bac1 Avoid GraphQL schema rebuild when changing irrelevant Metadata
This increases the speed of `create_query_collection` and `add_collection_to_allowlist` by a factor ~~10~~ 65, by caching the in-memory GraphQL schema. This speedup also applies more broadly to Metadata changes relating to:
- allowlists
- query collections
- cron triggers
- REST endpoints
- API limits
- metrics config
- GraphQL introspection options
- TLS allow lists
- OpenTelemetry

When is construction of the in-memory GraphQL schema cached between Metadata operations?

Before this PR, **never**! It's rebuilt fully, for every role, on every Metadata operation.

However, there are many Metadata operations that don't influence the GraphQL schema. So we should be caching its construction.

The `Hasura.Incremental` framework allows us to cache such constructions: whenever we have an arrow `Rule m a b`, where `a` is the input to the arrow and `b` the output, we can use the `Inc.cache` combinator to obtain a new arrow which is only re-executed when the input `a` changes in a material way. To test this, `a` needs an `Eq` instance. (Before hasura/graphql-engine-mono#6877, this was a `Cacheable` type class which has now been removed.)

We can't simply apply `Inc.cache` to the "Steps 3 and 4" in `buildSchemaCacheRule`, because the inputs (components of `BuildOutputs` such as `SourceCache`) don't have an `Eq` instance.

So the changes to `buildSchemaCacheRule` restructure the code so that the input to "Step 1", namely the Metadata, can be used as a caching key instead, so that `Inc.cache` can be applied to the whole sequence of steps.

That works to cache construction of the GraphQL schema, but it means that now only those Metadata operations that _don't_ influence any of the products of steps 1-4 can use a cached build of the GraphQL schema. The most important intermediate product is `BuildOutputs`. So now the exercise becomes to minimize the amount of stuff stored in `BuildOutputs`, so that as many Metadata operations as possible can be handled outside of the codepath that produces a GraphQL schema.

Per hasura/graphql-engine-mono#6609, the `BuildOutputs` structure is too big, and stores things unnecessarily. Refer to the PR description there for reasoning - the same logic applies to this PR, and simply goes a few steps further. In doing so, it can benefit from hasura/graphql-engine-mono#6765, which allows us to verify at compile time that certain Schema Cache building steps _don't_ generate "Metadata dependencies". If a certain Metadata dependency is never generated, we don't need to handle that case in `deleteMetadataObject`. Thus such intermediate products don't need to be passed through `resolveDependencies`, and thus they don't need to be stored in `BuildOutputs`, and thus their rebuild won't trigger a GraphQL schema rebuild.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6613
GitOrigin-RevId: 27d2e69d3461bd4c32f08febef9995c0369fab3a
2022-11-23 07:54:01 +00:00
Gil Mizrahi
b213907671 use schemaName in postgres event triggers tests
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6964
GitOrigin-RevId: b05a1333583d59684b5fbd33b43544080d542696
2022-11-23 07:53:53 +00:00
Varun Choudhary
489d1fe493 console: browse back from allow list using browser back button
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6990
GitOrigin-RevId: 1c99dbdb7098dee57839cd98e4d19c19edd470b9
2022-11-23 07:53:45 +00:00
Nicolas Inchauspe
0ebb4a04ec console: fix code exporter style
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6952
GitOrigin-RevId: 269cff9788a12a02f13f89c2d98793b8aa50ca25
2022-11-23 07:53:36 +00:00
Vishnu Bharathi
5d7f4fa1a9 ci: tag multiple releases
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6983
GitOrigin-RevId: 5e118b498d95cdcd5141a171a6e61e122181e093
2022-11-23 07:53:27 +00:00
awjchen
329f3f0a39 multitenant: make shutdown logic more abstract
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5836
GitOrigin-RevId: 2f94cdee01702e49ff130f6a40f6be26fa69ec88
2022-11-23 07:53:19 +00:00
Brandon Simmons
378817d05a server: memoize in tableSelectColumnsEnum and mkNumericAggFields for more sharing
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6789
GitOrigin-RevId: 744600d42b497b77f2eca5fc46715e0df3e1fc8e
2022-11-23 07:53:11 +00:00
Vishnu Bharathi
c89e31b253 ci: tag release v2.15.2
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6980
GitOrigin-RevId: 662897f76160eeaa6a5b88d8e6b9381362c4df07
2022-11-23 07:52:59 +00:00
Erik Magnusson
55715f7074 console: added styling for relationship legacy tabs
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6938
GitOrigin-RevId: 644364a3e47bd23a5740aaf9e3b294a1f453f2c1
2022-11-21 17:07:45 +00:00
Auke Booij
cdac24c79f server: delete the Cacheable type class in favor of Eq
What is the `Cacheable` type class about?
```haskell
class Eq a => Cacheable a where
  unchanged :: Accesses -> a -> a -> Bool
  default unchanged :: (Generic a, GCacheable (Rep a)) => Accesses -> a -> a -> Bool
  unchanged accesses a b = gunchanged (from a) (from b) accesses
```
Its only method is an alternative to `(==)`. The added value of `unchanged` (and the additional `Accesses` argument) arises _only_ for one type, namely `Dependency`. Indeed, the `Cacheable (Dependency a)` instance is non-trivial, whereas every other `Cacheable` instance is completely boilerplate (and indeed either generated from `Generic`, or simply `unchanged _ = (==)`). The `Cacheable (Dependency a)` instance is the only one where the `Accesses` argument is not just passed onwards.

The only callsite of the `unchanged` method is in the `ArrowCache (Rule m)` method. That is to say that the `Cacheable` type class is used to decide when we can re-use parts of the schema cache between Metadata operations.

So what is the `Cacheable (Dependency a)` instance about? Normally, the output of a `Rule m a b` is re-used when the new input (of type `a`) is equal to the old one. But sometimes, that's too coarse: it might be that a certain `Rule m a b` only depends on a small part of its input of type `a`. A `Dependency` allows us to spell out what parts of `a` are being depended on, and these parts are recorded as values of types `Access a` in the state `Accesses`.

If the input `a` changes, but not in a way that touches the recorded `Accesses`, then the output `b` of that rule can be re-used without recomputing.

So now you understand _why_ we're passing `Accesses` to the `unchanged` method: `unchanged` is an equality check in disguise that just needs some additional context.

But we don't need to pass `Accesses` as a function argument. We can use the `reflection` package to pass it as type-level context. So the core of this PR is that we change the instance declaration from
```haskell
instance (Cacheable a) => Cacheable (Dependency a) where
```
to
```haskell
 instance (Given Accesses, Eq a) => Eq (Dependency a) where
```
and use `(==)` instead of `unchanged`.

If you haven't seen `reflection` before: it's like a `MonadReader`, but it doesn't require a `Monad`.

In order to pass the current `Accesses` value, instead of simply passing the `Accesses` as a function argument, we need to instantiate the `Given Accesses` context. We use the `give` method from the `reflection` package for that.
```haskell
give :: forall r. Accesses -> (Given Accesses => r) -> r

unchanged :: (Given Accesses => Eq a) => Accesses -> a -> a -> Bool
unchanged accesses a b = give accesses (a == b)
```
With these three components in place, we can delete the `Cacheable` type class entirely.

The remainder of this PR is just to remove the `Cacheable` type class and its instances.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6877
GitOrigin-RevId: 7125f5e11d856e7672ab810a23d5bf5ad176e77f
2022-11-21 16:35:37 +00:00
Abby Sassel
2b639406ca Misc docs compatibility updates
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6956
GitOrigin-RevId: 4f8db44a62efc1e0b7998e43a301424648928c0b
2022-11-21 15:46:44 +00:00
Auke Booij
09e328223e Fix build errors related to dynamic building
When building under the `dev.sh`-adjusted `cabal.local` files, it's not possible to build all Haskell components:
```shell
$ cabal build all all:tests all:benchmarks
[... snipped ...]
[1 of 1] Compiling Harness.GraphqlEnginePro ( src/Harness/GraphqlEnginePro.hs, /home/auke/graphql-engine-mono/dist-newstyle/build/x86_64-linux/ghc-9.2.5/test-harness-pro-0.1.0.0/opt/build/Harness/GraphqlEnginePro.o, /home/auke/graphql-engine-mono/dist-newstyle/build/x86_64-linux/ghc-9.2.5/test-harness-pro-0.1.0.0/opt/build/Harness/GraphqlEnginePro.dyn_o )

src/Harness/GraphqlEnginePro.hs:13:1: error:
    Could not find module 'Control.Concurrent.Extended'
    There are files missing in the 'graphql-engine-1.0.0' package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
13 | import Control.Concurrent.Extended (sleep)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Harness/GraphqlEnginePro.hs:14:1: error:
    Could not find module 'Data.Environment'
    There are files missing in the 'graphql-engine-1.0.0' package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
14 | import Data.Environment qualified as Env
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6962
GitOrigin-RevId: dd7992dfa4e5b999f9b3d39389121bde1465965d
2022-11-21 15:07:53 +00:00
Abby Sassel
0343bfc9a7 Server/Test and document Azure Cosmos DB support
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6943
GitOrigin-RevId: 7fba24a0b711c1c54b93a944f97b2da8e202a2fd
2022-11-21 14:37:59 +00:00
Aravind K P
695bd632f4 cli: port migrate create migrate apply to use internal/errors
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6634
Co-authored-by: Mohd Bilal <24944223+m-Bilal@users.noreply.github.com>
GitOrigin-RevId: 90db2db2b98bfe5e2948ae2866443f6d9501f402
2022-11-21 12:08:51 +00:00
Erik Magnusson
42832cdc84 console: fallback for editing expanded text fields
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6951
GitOrigin-RevId: fa0d2b8538b612ec86b1f9fa180188bb8d55b289
2022-11-21 10:59:47 +00:00
Luca Restagno
02c21d21aa console: fix the condition to show the custom table tracking modal
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6944
GitOrigin-RevId: bfacd2dcf1aad95feb323db9686c7d9d15ebdaba
2022-11-21 10:29:48 +00:00
paritosh-08
0cc66d0f31 docs: add event trigger metrics
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6898
GitOrigin-RevId: f16577e2d964937287e1cbbd582467e908e9fd69
2022-11-21 08:27:28 +00:00
paritosh-08
00005020a6 server: rename event trigger metric hasura_event_processing_time_seconds to hasura_event_webhook_processing_time_seconds
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6950
GitOrigin-RevId: a32ce3f167eb6bb5c48645a614288c043c252d26
2022-11-21 07:49:28 +00:00
paritosh-08
e74ba68230 server: add default naming convention to ServerConfig
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6918
GitOrigin-RevId: 6c97f566d50f633c3ae7b8cec65ce76a36a4c088
2022-11-21 05:05:14 +00:00
Nicolas Beaussart
66077866cb platform: introduce nx docs
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6829
GitOrigin-RevId: b0a6a7ccc647ca13863f4c296b7c6b993f784bbb
2022-11-18 18:56:30 +00:00
Adron Hall
91e483123d Reordered the prereq for getting started with Athena.
## Description

Reordering the flow so that things are presented in the order in which a user would arrive at the particular step.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6935
GitOrigin-RevId: 5c04bc4142f3417cfb2eab0d057d0e264adf3f6b
2022-11-18 16:47:12 +00:00
Nicolas Inchauspe
4df205197a console: prevent react-ace to use a service worker
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6778
GitOrigin-RevId: 0a00b924bcc7b9dc0c7b465dc4d05a67549fd329
2022-11-18 16:39:53 +00:00
Sean Park-Ross
619cc552f0 Updates Docusaurus to 2.1
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6390
Co-authored-by: Rob Dominguez <24390149+robertjdominguez@users.noreply.github.com>
Co-authored-by: surendran82 <26085612+surendran82@users.noreply.github.com>
GitOrigin-RevId: ca59e788e7d16bf74389c00a51db18604350b483
2022-11-18 16:02:38 +00:00
Philip Lykke Carlsen
cdb62ff277 server/tests: Avoid schema aliasing
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6942
GitOrigin-RevId: d439290ae60f8f4be616c9217d03137cace675a6
2022-11-18 15:57:36 +00:00
Daniel Harvey
4683d4786d [server/tests] new Citus DB per test
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6833
Co-authored-by: Gil Mizrahi <8547573+soupi@users.noreply.github.com>
GitOrigin-RevId: 343aba12ff30c67908160b4c153334d46c5655ff
2022-11-18 11:10:29 +00:00
Daniel Chambers
7e9f5bdd96 Fixed filtering not being applied across object relations in SQLite agent
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6937
GitOrigin-RevId: 655e9be98059a1e86566b975ae646b49d67fa06e
2022-11-18 08:15:50 +00:00
Lyndon Maydwell
7228d0327f Add display_name, release_name fields to MD Agent APIs - GDC-626
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6849
GitOrigin-RevId: 0ab90aaf281cc1c043f73fd6d63c4c18d58c7c92
2022-11-18 04:19:08 +00:00
Solomon
461e6ceb3f Breakup api-tests into a lib and an exe.
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6798
GitOrigin-RevId: 7e4f7be34124e1e8d67534b1e45381f90d31bea8
2022-11-18 01:34:33 +00:00
Brandon Martin
da611aaa58 [GDC] Add explicit ordering to distinct, paginated, and filtered test
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6932
GitOrigin-RevId: 42cd06ac91935c2a86820df9125681018d895770
2022-11-18 01:00:23 +00:00
Stef Moreno
387a73b11f docs: link to DB matrix to individual DB sections
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6909
Co-authored-by: Rob Dominguez <24390149+robertjdominguez@users.noreply.github.com>
GitOrigin-RevId: ab49f8aa5c15da285cfab7e67baffaae52d83cad
2022-11-18 00:13:54 +00:00
Abby Sassel
4626084eaf NDAT-293 Cleanup Test.Databases.Postgres
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6929
GitOrigin-RevId: ef973937b3d80fba2ffa4a30ba9460c799eb677c
2022-11-17 22:35:40 +00:00
Tom Harding
bb141dacb4 String interpolation for Postgres backend module
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6927
GitOrigin-RevId: 153975ec6e860a0bd1a06a85f11567d0fdc5b14d
2022-11-17 20:08:25 +00:00
Luca Restagno
6e091bae30 console: E2E test to verify DB compatibility
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6867
GitOrigin-RevId: be5803fd3b3436fc38c75ae70aa8d3e6a7f38402
2022-11-17 17:00:58 +00:00
Tom Harding
d0cf84d921 Fix EventTrigger tests for the compatibility matrix
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6921
GitOrigin-RevId: b104829355a5c2465d3f845c98d70334b7e8b7d7
2022-11-17 15:48:30 +00:00