Commit Graph
100 Commits
Author SHA1 Message Date
lukaszraczylo 1b7890f322 Gofmt the codebase. 2025-02-26 00:47:41 +00:00
lukaszraczylo 66c8fef24d Improve the test coverage 2025-02-26 00:44:14 +00:00
lukaszraczylo d83c3a4567 Increase tests coverage. 2025-02-25 23:55:25 +00:00
lukaszraczylo 2ab78d35ce Configuration Management:
Optimized the getDetailsFromEnv function to reduce redundant lookups and improve type handling
Added direct environment variable access for better performance

Memory Cache Optimization:

Implemented a size-based compression threshold (1KB) to avoid compressing small payloads
Added cache size limits (10,000 entries) to prevent memory leaks
Implemented efficient eviction strategies for the oldest entries
Added atomic counter for thread-safe cache size tracking
Improved cleanup routines with GC triggering for large caches

Proxy Implementation:

Refactored the proxy code into smaller, focused functions for better maintainability
Optimized gzip handling for better performance
Improved error handling and logging
Enhanced tracing integration

GraphQL Processing:

Optimized introspection query checking with fast-path returns
Improved object pool usage
Added detailed comments for better code understanding
Split complex functions into smaller, more focused ones
Fixed test compatibility issues with introspection checking

Request Processing:

Refactored the request processing logic into smaller, focused functions
Separated user extraction, caching, and request handling for better maintainability
Improved error handling and response generation

Tracing Enhancements:

Added better span context management
Implemented custom attributes for more detailed tracing
Added sampling configuration to reduce overhead
Improved resource attribution with host and process information
Added timeout handling for tracing operations

Application Lifecycle:

Implemented graceful shutdown with proper signal handling
Added goroutine management with wait groups
Improved startup sequence with better error handling
Added timeout handling for shutdown operations
2025-02-25 23:34:39 +00:00
lukaszraczyloandGitHub 6af5aefe54 Add tracing and relevant tests (#21)
* Add tracing and relevant tests.

* fixup! Add tracing and relevant tests.

* gofmt the code 🤷

* fixup! gofmt the code 🤷
2025-01-08 18:29:25 +00:00
lukaszraczylo 984e448ff0 fixup! fixup! Fixes the code for additional test cases. 2024-12-06 13:27:59 +00:00
lukaszraczylo 5799f8ca7c fixup! Fixes the code for additional test cases. 2024-12-06 13:22:18 +00:00
lukaszraczylo ac84c69812 Fixes the code for additional test cases. 2024-12-06 12:54:36 +00:00
lukaszraczylo e54bbe8249 Additional tests to ensure that schema introspection is working as expected 2024-12-06 12:03:37 +00:00
lukaszraczylo ed3966e577 If the field is allowed, continue checking remaining fields. 2024-12-06 11:58:34 +00:00
lukaszraczylo 6a52a9f673 Fixes the issue with case comparison. 2024-12-06 11:49:47 +00:00
lukaszraczylo 1ca05a7a2a Release 0.24.x - changes the query introspection. 2024-12-06 11:27:01 +00:00
lukaszraczylo eb1b4b4eb7 Enhance the tests to cover the end status code as well. 2024-12-06 11:15:38 +00:00
lukaszraczylo fc9bab47fb Fix query introspection blocking on deeply nested types. 2024-12-06 11:04:26 +00:00
lukaszraczylo cbe2afe539 Gather cleaner event errors and display as a group rather than separately. 2024-12-06 09:39:26 +00:00
lukaszraczyloandGitHub 6b31e5c4c0 Little code cleanup. (#19) 2024-10-10 10:34:23 +01:00
lukaszraczylo 7726be1aed Update dependencies, latest ask library. 2024-09-16 21:42:46 +01:00
lukaszraczyloandGitHub 2e1ca3584d further improvements (#18)
* Remove unnecessary mutex

* Update with latest, improved version of graphql client
2024-09-13 21:41:17 +01:00
lukaszraczylo 9437aebabe Update README.md 2024-08-20 13:56:46 +01:00
lukaszraczylo 68526ddfd4 Add delay, in case the container runs in deployment with hasura.
Hasura takes its sweet time to start up, that causes the client to error out
as the graphql proxy fires up practically instantly. This is a temporary workaround.
2024-08-20 13:14:24 +01:00
lukaszraczylo 9f9e36efa9 fixup! Enhance the retry logic for the proxied queries. 2024-08-20 13:07:37 +01:00
lukaszraczylo cdd2a2a2c6 Enhance the retry logic for the proxied queries. 2024-08-20 12:45:22 +01:00
lukaszraczylo 5b171b2317 Add initial retry for end graphql server connection. 2024-08-20 12:40:04 +01:00
lukaszraczylo 427ed49d62 Update makefile to allow for local builds. 2024-08-20 12:22:57 +01:00
lukaszraczylo 9150b25227 Fixing the proxy timeout settings which were not passed to the client and and graphql server. 2024-08-20 11:38:40 +01:00
lukaszraczylo 8b8a389cc3 Update README.md 2024-08-19 15:58:20 +01:00
lukaszraczylo 839e211790 fixup! New release. 2024-08-19 15:52:40 +01:00
lukaszraczylo ae9a44033b New release.
Includes the panic when cache is completely disabled.
2024-08-19 15:43:42 +01:00
lukaszraczylo dc9e0906fd Resolve issue when proxy could panic.
Issue occured when cache was disabled via environment variables but
graphql queries contained the cache directive.
2024-08-19 11:27:06 +01:00
lukaszraczylo dfd3b02014 Release 0.19.x 2024-06-29 09:57:52 +01:00
lukaszraczylo 6f6d1afcd4 Release 0.19.x 2024-06-29 09:44:39 +01:00
lukaszraczylo a24e6c8c4d fixup! Fix the introduced bug where RO endpoint could've been accidentally used. (#17) 2024-06-29 08:52:41 +01:00
lukaszraczyloandGitHub d141fe3c04 Fix the introduced bug where RO endpoint could've been accidentally used. (#17)
* Fix the introduced bug where RO endpoint could've been accidentally used.
2024-06-28 21:48:39 +01:00
lukaszraczylo 162c4acd7c fixup! fixup! fixup! fixup! fixup! fixup! Fix redis cache benchmark. 2024-06-28 18:05:17 +01:00
lukaszraczylo fde78a4ece fixup! fixup! fixup! fixup! fixup! Fix redis cache benchmark. 2024-06-28 17:58:46 +01:00
lukaszraczyloandGitHub b1ffffd545 Create static.yml 2024-06-28 17:49:21 +01:00
lukaszraczylo 977554dd49 fixup! fixup! fixup! fixup! Fix redis cache benchmark. 2024-06-28 14:12:25 +01:00
lukaszraczylo 4ca8ce5751 fixup! fixup! fixup! Fix redis cache benchmark. 2024-06-28 13:57:43 +01:00
lukaszraczylo de55444012 fixup! fixup! Fix redis cache benchmark. 2024-06-28 13:50:58 +01:00
lukaszraczylo 3ec1c37f23 fixup! Fix redis cache benchmark. 2024-06-28 13:40:43 +01:00
lukaszraczylo eb9821dc3f Fix redis cache benchmark. 2024-06-28 13:37:31 +01:00
lukaszraczylo 3467cc5be0 Fix the cleanup routine. 2024-06-28 13:26:18 +01:00
lukaszraczyloandGitHub b10a28bf52 General code optimisations. (#16)
* General code optimisations.
2024-06-28 12:31:01 +01:00
lukaszraczylo b29733e435 fixup! fixup! Update go.mod and go.sum 2024-06-28 00:46:34 +01:00
lukaszraczylo f8a7b8ad83 fixup! Update go.mod and go.sum 2024-06-28 00:40:58 +01:00
lukaszraczylo 43b7ab7a77 fixup! fixup! fixup! fixup! fixup! fixup! fixup! Disable caller as it's not necessary and generates slight delay. 2024-06-27 13:48:36 +01:00
lukaszraczylo d0c883a418 fixup! fixup! fixup! fixup! fixup! fixup! Disable caller as it's not necessary and generates slight delay. 2024-06-27 13:42:43 +01:00
lukaszraczylo 33fc370ff5 fixup! fixup! fixup! fixup! fixup! Disable caller as it's not necessary and generates slight delay. 2024-06-27 13:40:13 +01:00
lukaszraczylo 0a1fb50906 fixup! fixup! fixup! fixup! Disable caller as it's not necessary and generates slight delay. 2024-06-27 13:31:44 +01:00
lukaszraczylo f348c07b60 fixup! fixup! fixup! Disable caller as it's not necessary and generates slight delay. 2024-06-27 08:44:46 +01:00
lukaszraczylo 60b2f217d0 fixup! fixup! Disable caller as it's not necessary and generates slight delay. 2024-06-27 08:44:14 +01:00
lukaszraczylo f7babe93d9 fixup! Disable caller as it's not necessary and generates slight delay. 2024-06-20 08:41:33 +01:00
lukaszraczylo 16844e325e Disable caller as it's not necessary and generates slight delay. 2024-06-19 23:40:44 +01:00
lukaszraczyloandGitHub 61d7a45d00 Update cache library, use miniredis for testing, add additional benchmarks. (#14)
Update cache library,
Update logging library,
use miniredis for testing, add additional benchmarks.
2024-06-19 23:10:36 +01:00
de31912d2f increase error handling and mutex encapsulation (#12)
* increase error handling and mutex encapsulation

* undo method rename for now

* set cant return error

---------

Co-authored-by: Chris Clayton <[email protected]>
2024-06-15 10:21:49 +01:00
lukaszraczylo e0e9b4278f Release: Improve documentation and number of logs cleaned. 2024-06-12 12:59:54 +01:00
lukaszraczylo 9a7635bd35 fixup! fixup! Add cleaning up action logs as well. 2024-06-12 12:46:13 +01:00
lukaszraczylo e8b07d2e01 fixup! Add cleaning up action logs as well. 2024-06-12 12:27:13 +01:00
lukaszraczylo efdd2de035 Add cleaning up action logs as well. 2024-06-12 12:23:14 +01:00
lukaszraczylo 57d2fd8e80 Update documentation. 2024-06-12 12:12:25 +01:00
lukaszraczylo e5b3eff1cd Adjust field alignment. 2024-06-12 12:07:22 +01:00
lukaszraczylo a23f9de262 fixup! Update dependencies. 2024-06-12 12:05:50 +01:00
lukaszraczylo d98f87f609 Update dependencies. 2024-06-12 11:57:10 +01:00
lukaszraczylo ceed490680 Additional updates. 2024-06-12 11:54:03 +01:00
lukaszraczylo b2380c689b Add cleanup of the event and invocation logs on timer. 2024-06-12 11:47:21 +01:00
lukaszraczylo 2e40ee0c62 Update the helpers to sort labels alpabetically.
It will help to avoid the flaky tests and duplicated metrics.

As a bonus - added tests and benchmarks for monitoring package.
2024-06-11 19:57:18 +01:00
lukaszraczylo df9f43718a fixup! fixup! fixup! fixup! fixup! fixup! Fix: Redis connection for tests. 2024-06-11 12:53:29 +01:00
lukaszraczylo 91d824636d fixup! fixup! fixup! fixup! fixup! Fix: Redis connection for tests. 2024-06-11 12:12:17 +01:00
lukaszraczylo cecccc1441 fixup! fixup! fixup! fixup! Fix: Redis connection for tests. 2024-06-11 12:08:44 +01:00
lukaszraczylo 32eef4af37 fixup! fixup! fixup! Fix: Redis connection for tests. 2024-06-11 12:07:30 +01:00
lukaszraczylo d05172294c fixup! fixup! Fix: Redis connection for tests. 2024-06-11 11:49:50 +01:00
lukaszraczylo 44cd694086 fixup! Fix: Redis connection for tests. 2024-06-11 11:44:17 +01:00
lukaszraczylo fe7af0b8ca Fix: Redis connection for tests. 2024-06-11 11:43:07 +01:00
lukaszraczylo 12e0294945 Add distibuted cache with Redis 2024-06-11 11:35:50 +01:00
lukaszraczylo a01a4da9b5 Add metrics for cached queries + cache hit/miss 2024-06-11 11:35:49 +01:00
lukaszraczylo 371d51f96f Update dependencies. 2024-06-11 11:35:49 +01:00
lukaszraczylo a9fd6b3d0a Release: Add cache operations via API + support distributed redis cache. 2024-06-11 11:35:46 +01:00
lukaszraczylo 9291ac03db Improved graphql library. 2024-05-14 11:33:35 +01:00
lukaszraczylo 75944a3a52 Fixup: Update graphql client library. 2024-05-14 09:40:21 +01:00
lukaszraczylo 5a01ec3876 Improve logging and cache sub-packages to decrease the number of allocations
and improve performance.
2024-05-14 09:21:16 +01:00
lukaszraczylo c3e5b85f57 Update dependencies. 2024-05-04 21:22:19 +01:00
lukaszraczylo bc2dff0185 Update dependencies. 2024-04-12 23:30:18 +01:00
lukaszraczyloandGitHub ce344d17eb Add read only replica (#11)
* Improve stats gathering.
2024-03-13 23:09:38 +00:00
lukaszraczylo dc916d36cd Fix documentation after testing. 2024-03-12 23:12:50 +00:00
lukaszraczyloandGitHub e495cf23d9 Read only endpoint support (#10)
* This change introduces ability to set additional endpoint leading to the
instance of the graphql server connected to the read only database.
If regular query is detected and endpoint for `HOST_GRAPHQL_READONLY` value is set,
the query will be proxied to it. Mutations and non-graphql will be sent
to the `HOST_GRAPHQL` endpoint.
2024-03-12 11:16:35 +00:00
lukaszraczyloandGitHub ba1fef9b57 Improve stats gathering (#9) 2024-03-05 22:42:30 +00:00
lukaszraczyloandGitHub 3a18e0e935 Improve stats gathering and tests improvements. (#8) 2024-03-05 22:40:06 +00:00
lukaszraczylo b6c284b66d Update dependencies. 2024-03-05 14:40:45 +00:00
lukaszraczylo 88ef1aac7f Reuse http client and add retry to the proxied requests. 2024-03-05 14:38:03 +00:00
lukaszraczylo 6d32278851 Reuse http client. 2024-03-05 14:24:49 +00:00
lukaszraczylo f2085c8491 Update dependencies. 2024-02-15 10:22:31 +00:00
lukaszraczylo ebbb1c53f5 Micro fixes. 2024-02-15 10:21:51 +00:00
lukaszraczylo 0bdea741bf Move results to the struct for ease of management. 2024-02-15 09:50:51 +00:00
lukaszraczylo 4cb0d22874 Return 403 on blocked queries. 2024-02-15 09:34:57 +00:00
lukaszraczylo 9910bb1d45 Update documentation. 2024-02-15 09:31:49 +00:00
lukaszraczylo 756c63c0d1 Add support for 'refresh' in @cached section of the query.
Example:

```
query MyProducts @cached(refresh: true) {
  products {
    id
    name
  }
}
```
2024-02-15 09:29:27 +00:00
lukaszraczylo 029e0166c0 Docker to use distroless image. 2024-02-08 20:50:50 +00:00
lukaszraczylo 4cf27e0e3b Missed on files requiring json encoding. 2024-02-05 15:37:24 +00:00
lukaszraczylo 3149a27466 Update semver config. 2024-02-05 15:31:45 +00:00
lukaszraczylo bb28f2fcd8 Change the json library to the fully compatible ( and fast ) one. 2024-02-05 15:30:59 +00:00