graphql-engine/server/src-lib/Data
Vamshi Surabhi c52bfc540d
More robust forking, exception safety. Closes #3768 (#3860)
This is the result of a general audit of how we fork threads, with a
detour into how we're using mutable state especially in websocket
codepaths, making more robust to async exceptions and exceptions
resulting from bugs.

Some highlights:
- use a wrapper around 'immortal' so threads that die due to bugs are
  restarted, and log the error
- use 'withAsync' some places
- use bracket a few places where we might break invariants
- log some codepaths that represent bugs
- export UnstructuredLog for ad hoc logging (the alternative is we
  continue not logging useful stuff)

I had to timebox this. There are a few TODOs I didn't want to address.
And we'll wait until this is merged to attempt #3705 for
Control.Concurrent.Extended
2020-03-05 23:29:26 +05:30
..
Aeson export metadata without nulls, empty arrays & default values (#3393) 2019-12-14 00:47:38 -06:00
HashMap/Strict Use arrows instead of monads to define the schema cache construction 2020-01-08 16:43:06 -06:00
List allow custom mutations through actions (#3042) 2020-02-13 23:08:23 +05:30
Parser fix cache-control header parsing for JWK (fix #3655) (#3676) 2020-01-13 15:56:51 -06:00
Sequence fix updating a column with multiple operators causing postgres query error (fix #3432) (#3458) 2019-12-03 14:00:37 -06:00
Text refactor to remove warnings especially with orphan instances (#1163) 2018-12-13 12:56:15 +05:30
Time/Clock Add request timings and count histograms to telemetry. Closes #3552 2020-02-03 18:50:10 -06:00
URL allow custom mutations through actions (#3042) 2020-02-13 23:08:23 +05:30
TByteString.hs More robust forking, exception safety. Closes #3768 (#3860) 2020-03-05 23:29:26 +05:30