graphql-hive 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +41 -2
- data/k6/graphql-api/Gemfile.lock +1 -1
- data/lib/graphql-hive/usage_reporter.rb +25 -11
- data/lib/graphql-hive/version.rb +1 -1
- data/lib/graphql-hive.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be9427b081e7a486adf0537b3afa6e073c6c31eba88acae351589d0e1f708c87
|
4
|
+
data.tar.gz: de06ee85feb0ddd539a248534fdfe642aab8a8bb693f0cb66f0519f53ab95e11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eae35b3398dfbf84327efcca83c3ccc206e50698b64646359b6134143b516f2c50a51504cd6a8165ced58487b526d7c019aa95235cb2ba6132146e61e75694af
|
7
|
+
data.tar.gz: 96377bff1cf7c9f7e4e69847f68dc8143bc68702cfedfc6359f0147c16e534e660dcb871f3464a361ec082910a75db2b7ae8410cd6926a6df387ba0143c05cb4
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
graphql-hive (0.
|
4
|
+
graphql-hive (0.3.0)
|
5
5
|
graphql (~> 2.0.9)
|
6
6
|
|
7
7
|
GEM
|
@@ -9,7 +9,7 @@ GEM
|
|
9
9
|
specs:
|
10
10
|
ast (2.4.2)
|
11
11
|
diff-lcs (1.5.0)
|
12
|
-
graphql (2.0.
|
12
|
+
graphql (2.0.16)
|
13
13
|
parallel (1.22.1)
|
14
14
|
parser (3.1.2.0)
|
15
15
|
ast (~> 2.4.1)
|
data/README.md
CHANGED
@@ -64,6 +64,44 @@ If you only want to use the operations monitoring, replace the `reporting` optio
|
|
64
64
|
|
65
65
|
<br/>
|
66
66
|
|
67
|
+
## 3. (Optional) Configure Lifecycle Hooks
|
68
|
+
|
69
|
+
Calling these hooks are situational - it's likely that you may not need to call
|
70
|
+
them at all!
|
71
|
+
|
72
|
+
### `on_start`
|
73
|
+
|
74
|
+
Call this hook if you are running `GraphQL::Hive` in a process that `fork`s
|
75
|
+
itself.
|
76
|
+
|
77
|
+
example: `puma` web server running in (["clustered
|
78
|
+
mode"](https://github.com/puma/puma/tree/6d8b728b42a61bcf3c1e4c698c9165a45e6071e8#clustered-mode))
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
# config/puma.rb
|
82
|
+
preload_app!
|
83
|
+
|
84
|
+
on_worker_boot do
|
85
|
+
GraphQL::Hive.instance.on_start
|
86
|
+
end
|
87
|
+
```
|
88
|
+
|
89
|
+
### `on_exit`
|
90
|
+
|
91
|
+
If your GraphQL API process is shut down non-gracefully but has a shutdown hook
|
92
|
+
to call into, call `on_worker_exit`.
|
93
|
+
|
94
|
+
`puma` example:
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
# config/puma.rb
|
98
|
+
|
99
|
+
on_worker_shutdown do
|
100
|
+
GraphQL::Hive.instance.on_exit
|
101
|
+
end
|
102
|
+
```
|
103
|
+
|
104
|
+
<br />
|
67
105
|
|
68
106
|
**You are all set! 🚀**
|
69
107
|
|
@@ -74,7 +112,7 @@ When deploying or starting up your GraphQL API, `graphql-hive` will immediately:
|
|
74
112
|
|
75
113
|
<br/>
|
76
114
|
|
77
|
-
##
|
115
|
+
## 4. See how your GraphQL API is operating
|
78
116
|
|
79
117
|
You should now see operations information (RPM, error rate, queries performed) on your [GraphQL Hive dashboard](https://app.graphql-hive.com/):
|
80
118
|
|
@@ -86,7 +124,7 @@ You should now see operations information (RPM, error rate, queries performed) o
|
|
86
124
|
<br/>
|
87
125
|
|
88
126
|
|
89
|
-
##
|
127
|
+
## 5. Going further: use the Hive Github app
|
90
128
|
|
91
129
|
Stay on top of your GraphQL Schema changes by installing the Hive Github Application and enabling Slack notifications about breaking changes:
|
92
130
|
|
@@ -117,6 +155,7 @@ class MySchema < GraphQL::Schema
|
|
117
155
|
endpoint: 'app.graphql-hive.com', # optional
|
118
156
|
port: 80, # optional
|
119
157
|
buffer_size: 50, # forward the operations data to Hive every 50 requests
|
158
|
+
collect_usage_sampling: 1.0,
|
120
159
|
reporting: { # mandatory if `report_schema: true`
|
121
160
|
# mandatory member of `reporting`
|
122
161
|
author: 'Author of the latest change',
|
data/k6/graphql-api/Gemfile.lock
CHANGED
@@ -27,6 +27,31 @@ module GraphQL
|
|
27
27
|
|
28
28
|
@options_mutex = Mutex.new
|
29
29
|
@queue = Queue.new
|
30
|
+
|
31
|
+
start_thread
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_operation(operation)
|
35
|
+
@queue.push(operation)
|
36
|
+
end
|
37
|
+
|
38
|
+
def on_exit
|
39
|
+
@queue.close
|
40
|
+
@thread.join
|
41
|
+
end
|
42
|
+
|
43
|
+
def on_start
|
44
|
+
start_thread
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def start_thread
|
50
|
+
if @thread&.alive?
|
51
|
+
@options[:logger].warn('Tried to start operations flushing thread but it was already alive')
|
52
|
+
return
|
53
|
+
end
|
54
|
+
|
30
55
|
@thread = Thread.new do
|
31
56
|
buffer = []
|
32
57
|
while (operation = @queue.pop(false))
|
@@ -47,17 +72,6 @@ module GraphQL
|
|
47
72
|
end
|
48
73
|
end
|
49
74
|
|
50
|
-
def add_operation(operation)
|
51
|
-
@queue.push(operation)
|
52
|
-
end
|
53
|
-
|
54
|
-
def on_exit
|
55
|
-
@queue.close
|
56
|
-
@thread.join
|
57
|
-
end
|
58
|
-
|
59
|
-
private
|
60
|
-
|
61
75
|
def process_operations(operations)
|
62
76
|
report = {
|
63
77
|
size: 0,
|
data/lib/graphql-hive/version.rb
CHANGED
data/lib/graphql-hive.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-hive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charly POLY
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|