-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update Apollo GraphQL packages #436
Conversation
10556a9
to
2efe27c
Compare
c662db5
to
5983803
Compare
5a2594d
to
92ad64d
Compare
461525a
to
bb0ae34
Compare
4f8d8da
to
9150c77
Compare
85c9624
to
7cda92f
Compare
7cda92f
to
e6e00d1
Compare
35d1716
to
15259cb
Compare
7cdc39b
to
f02badf
Compare
fbabb1f
to
65ad710
Compare
ecd757e
to
5671b28
Compare
5671b28
to
081ef98
Compare
081ef98
to
735da6d
Compare
68f10b9
to
0414510
Compare
1bae180
to
a8f3635
Compare
a8f3635
to
ea3ebf4
Compare
023f961
to
56ba8bf
Compare
9e7e223
to
cde52eb
Compare
Overview for:
|
Gateway | RPS ⬇️ | Requests | Duration | Notes |
---|---|---|---|---|
cosmo | 169 | 5155 total, 0 failed | avg: 510ms, p95: 682ms | ✅ |
apollo-router | 165 | 5027 total, 0 failed | avg: 523ms, p95: 732ms | ✅ |
wundergraph | 154 | 4703 total, 0 failed | avg: 550ms, p95: 987ms | ✅ |
mesh-supergraph-bun | 72 | 2236 total, 0 failed | avg: 1334ms, p95: 2322ms | ✅ |
apollo-server | 49 | 1556 total, 0 failed | avg: 1979ms, p95: 2516ms | ✅ |
mercurius | 28 | 872 total, 0 failed | avg: 3475ms, p95: 4851ms | ✅ |
mesh-supergraph | 28 | 902 total, 0 failed | avg: 3448ms, p95: 5801ms | ✅ |
Summary for: `cosmo`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 15465 ✗ 0
data_received..................: 452 MB 15 MB/s
data_sent......................: 6.1 MB 202 kB/s
http_req_blocked...............: avg=28.18µs min=1.5µs med=3.03µs max=58.09ms p(90)=4.85µs p(95)=6.17µs
http_req_connecting............: avg=10.79µs min=0s med=0s max=5.43ms p(90)=0s p(95)=0s
http_req_duration..............: avg=510.2ms min=32.25ms med=509.68ms max=1.34s p(90)=623.61ms p(95)=681.62ms
{ expected_response:true }...: avg=510.2ms min=32.25ms med=509.68ms max=1.34s p(90)=623.61ms p(95)=681.62ms
http_req_failed................: 0.00% ✓ 0 ✗ 5155
http_req_receiving.............: avg=27.28ms min=37.49µs med=86.12µs max=1.03s p(90)=69.11ms p(95)=185.02ms
http_req_sending...............: avg=1.59ms min=8.44µs med=14.03µs max=432.39ms p(90)=51.15µs p(95)=336.05µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=481.33ms min=32.16ms med=498.58ms max=751.03ms p(90)=579.52ms p(95)=604.49ms
http_reqs......................: 5155 169.802903/s
iteration_duration.............: avg=586.03ms min=42.05ms med=551.76ms max=1.87s p(90)=786.23ms p(95)=951.3ms
iterations.....................: 5155 169.802903/s
vus............................: 95 min=95 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `apollo-router`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 15081 ✗ 0
data_received..................: 441 MB 15 MB/s
data_sent......................: 6.0 MB 196 kB/s
http_req_blocked...............: avg=73.63µs min=1.52µs med=3.72µs max=55.11ms p(90)=6µs p(95)=8.42µs
http_req_connecting............: avg=48.99µs min=0s med=0s max=5.02ms p(90)=0s p(95)=0s
http_req_duration..............: avg=522.96ms min=15.44ms med=519.66ms max=1.9s p(90)=662.98ms p(95)=732.32ms
{ expected_response:true }...: avg=522.96ms min=15.44ms med=519.66ms max=1.9s p(90)=662.98ms p(95)=732.32ms
http_req_failed................: 0.00% ✓ 0 ✗ 5027
http_req_receiving.............: avg=29.93ms min=37.49µs med=90.46µs max=1.7s p(90)=71.87ms p(95)=181.57ms
http_req_sending...............: avg=1.67ms min=8.9µs med=18.84µs max=523.49ms p(90)=58.92µs p(95)=264.81µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=491.35ms min=15.34ms med=503.66ms max=864.87ms p(90)=630.73ms p(95)=658.43ms
http_reqs......................: 5027 165.021656/s
iteration_duration.............: avg=601.93ms min=34.21ms med=570.99ms max=2.47s p(90)=784.73ms p(95)=928.94ms
iterations.....................: 5027 165.021656/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `wundergraph`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 14109 ✗ 0
data_received..................: 413 MB 14 MB/s
data_sent......................: 5.6 MB 184 kB/s
http_req_blocked...............: avg=43.45µs min=1.07µs med=2.92µs max=54.78ms p(90)=4.79µs p(95)=6.22µs
http_req_connecting............: avg=19.75µs min=0s med=0s max=5.81ms p(90)=0s p(95)=0s
http_req_duration..............: avg=549.53ms min=20.14ms med=518.34ms max=2.34s p(90)=863.98ms p(95)=987.4ms
{ expected_response:true }...: avg=549.53ms min=20.14ms med=518.34ms max=2.34s p(90)=863.98ms p(95)=987.4ms
http_req_failed................: 0.00% ✓ 0 ✗ 4703
http_req_receiving.............: avg=39.39ms min=40.74µs med=87.38µs max=1.63s p(90)=100.08ms p(95)=303.81ms
http_req_sending...............: avg=2.21ms min=7.94µs med=13.81µs max=1.04s p(90)=45.96µs p(95)=253.01µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=507.92ms min=20.07ms med=491.71ms max=1.23s p(90)=808.76ms p(95)=911.87ms
http_reqs......................: 4703 154.857111/s
iteration_duration.............: avg=642.44ms min=30.44ms med=594.88ms max=3.03s p(90)=993.68ms p(95)=1.18s
iterations.....................: 4703 154.857111/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `mesh-supergraph-bun`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 6708 ✗ 0
data_received..................: 196 MB 6.4 MB/s
data_sent......................: 2.7 MB 87 kB/s
http_req_blocked...............: avg=170.73µs min=1.59µs med=4.5µs max=48.43ms p(90)=6.7µs p(95)=25.04µs
http_req_connecting............: avg=123.13µs min=0s med=0s max=5.48ms p(90)=0s p(95)=0s
http_req_duration..............: avg=1.33s min=199.14ms med=1.15s max=3.34s p(90)=2.15s p(95)=2.32s
{ expected_response:true }...: avg=1.33s min=199.14ms med=1.15s max=3.34s p(90)=2.15s p(95)=2.32s
http_req_failed................: 0.00% ✓ 0 ✗ 2236
http_req_receiving.............: avg=13.91ms min=44.9µs med=143.5µs max=794.91ms p(90)=1.99ms p(95)=35.51ms
http_req_sending...............: avg=422.98µs min=9.56µs med=24.18µs max=64.17ms p(90)=53.99µs p(95)=393.68µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=1.31s min=198.66ms med=1.14s max=3.34s p(90)=2.14s p(95)=2.31s
http_reqs......................: 2236 72.959958/s
iteration_duration.............: avg=1.35s min=212.61ms med=1.18s max=3.37s p(90)=2.17s p(95)=2.34s
iterations.....................: 2236 72.959958/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `apollo-server`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 4668 ✗ 0
data_received..................: 137 MB 4.3 MB/s
data_sent......................: 1.8 MB 59 kB/s
http_req_blocked...............: avg=45.6µs min=1.49µs med=3.15µs max=5.01ms p(90)=5.44µs p(95)=139.63µs
http_req_connecting............: avg=32.97µs min=0s med=0s max=2.71ms p(90)=0s p(95)=92.17µs
http_req_duration..............: avg=1.97s min=371.98ms med=1.66s max=20.96s p(90)=2.08s p(95)=2.51s
{ expected_response:true }...: avg=1.97s min=371.98ms med=1.66s max=20.96s p(90)=2.08s p(95)=2.51s
http_req_failed................: 0.00% ✓ 0 ✗ 1556
http_req_receiving.............: avg=220.87µs min=49.32µs med=118.46µs max=53.19ms p(90)=195.36µs p(95)=281.21µs
http_req_sending...............: avg=35.53µs min=8.74µs med=17.08µs max=4.56ms p(90)=33.71µs p(95)=98.68µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=1.97s min=371.88ms med=1.66s max=20.96s p(90)=2.08s p(95)=2.51s
http_reqs......................: 1556 49.379392/s
iteration_duration.............: avg=1.99s min=380.14ms med=1.67s max=20.97s p(90)=2.09s p(95)=2.52s
iterations.....................: 1556 49.379392/s
vus............................: 52 min=52 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `mercurius`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 2616 ✗ 0
data_received..................: 77 MB 2.5 MB/s
data_sent......................: 1.0 MB 34 kB/s
http_req_blocked...............: avg=229.89µs min=1.5µs med=4.4µs max=5.16ms p(90)=136.93µs p(95)=2.24ms
http_req_connecting............: avg=219.19µs min=0s med=0s max=5.09ms p(90)=111.63µs p(95)=2.21ms
http_req_duration..............: avg=3.47s min=678.03ms med=3.28s max=7.82s p(90)=4.52s p(95)=4.85s
{ expected_response:true }...: avg=3.47s min=678.03ms med=3.28s max=7.82s p(90)=4.52s p(95)=4.85s
http_req_failed................: 0.00% ✓ 0 ✗ 872
http_req_receiving.............: avg=156.87µs min=44.39µs med=121.58µs max=4.45ms p(90)=196.34µs p(95)=259.22µs
http_req_sending...............: avg=47.28µs min=8.55µs med=24.23µs max=518.19µs p(90)=62.09µs p(95)=245.21µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=3.47s min=677.92ms med=3.28s max=7.82s p(90)=4.52s p(95)=4.85s
http_reqs......................: 872 28.438617/s
iteration_duration.............: avg=3.48s min=686.9ms med=3.3s max=7.83s p(90)=4.53s p(95)=4.86s
iterations.....................: 872 28.438617/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `mesh-supergraph`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 2706 ✗ 0
data_received..................: 79 MB 2.5 MB/s
data_sent......................: 1.1 MB 34 kB/s
http_req_blocked...............: avg=177.13µs min=1.36µs med=3.78µs max=5.96ms p(90)=106.36µs p(95)=672.46µs
http_req_connecting............: avg=164.78µs min=0s med=0s max=5.93ms p(90)=73.39µs p(95)=603.98µs
http_req_duration..............: avg=3.44s min=891.61ms med=3.38s max=7.19s p(90)=5.09s p(95)=5.8s
{ expected_response:true }...: avg=3.44s min=891.61ms med=3.38s max=7.19s p(90)=5.09s p(95)=5.8s
http_req_failed................: 0.00% ✓ 0 ✗ 902
http_req_receiving.............: avg=1.92ms min=44.08µs med=128.46µs max=91.2ms p(90)=2.26ms p(95)=3.35ms
http_req_sending...............: avg=83.77µs min=8.16µs med=20.97µs max=7.88ms p(90)=86.29µs p(95)=285.28µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=3.44s min=889.24ms med=3.38s max=7.12s p(90)=5.09s p(95)=5.8s
http_reqs......................: 902 28.287504/s
iteration_duration.............: avg=3.46s min=901.97ms med=3.4s max=7.21s p(90)=5.1s p(95)=5.81s
iterations.....................: 902 28.287504/s
vus............................: 73 min=73 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Overview for:
|
Gateway | duration(p95)⬇️ | RPS | Requests | Durations | Notes |
---|---|---|---|---|---|
apollo-router | 2171ms | 166 | 11665 total, 0 failed | avg: 796ms, p95: 2172ms, max: 5574ms, med: 647ms | ✅ |
cosmo | 2331ms | 165 | 11572 total, 0 failed | avg: 889ms, p95: 2332ms, max: 8332ms, med: 687ms | ✅ |
wundergraph | 2657ms | 157 | 10999 total, 0 failed | avg: 844ms, p95: 2657ms, max: 5320ms, med: 533ms | ✅ |
mesh-supergraph-bun | 6587ms | 98 | 6908 total, 0 failed | avg: 2696ms, p95: 6588ms, max: 10469ms, med: 2393ms | ✅ |
mesh-supergraph | 6819ms | 66 | 4672 total, 0 failed | avg: 4091ms, p95: 6819ms, max: 8642ms, med: 4257ms | ✅ |
apollo-server | 23923ms | 67 | 4974 total, 0 failed | avg: 4199ms, p95: 23924ms, max: 45298ms, med: 2237ms | ✅ |
Summary for: `apollo-router`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 34995 ✗ 0
data_received..................: 1.0 GB 15 MB/s
data_sent......................: 14 MB 198 kB/s
http_req_blocked...............: avg=21.47ms min=1.5µs med=3.35µs max=3.74s p(90)=5.5µs p(95)=21.19µs
http_req_connecting............: avg=20.27ms min=0s med=0s max=3.74s p(90)=0s p(95)=0s
http_req_duration..............: avg=795.87ms min=6.2ms med=646.52ms max=5.57s p(90)=1.61s p(95)=2.17s
{ expected_response:true }...: avg=795.87ms min=6.2ms med=646.52ms max=5.57s p(90)=1.61s p(95)=2.17s
http_req_failed................: 0.00% ✓ 0 ✗ 11665
http_req_receiving.............: avg=193.3ms min=32.23µs med=80.8µs max=4.34s p(90)=762.29ms p(95)=1.23s
http_req_sending...............: avg=32.84ms min=7.71µs med=15.93µs max=3.04s p(90)=209.15µs p(95)=91.44ms
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=569.72ms min=6.12ms med=435.92ms max=3.36s p(90)=1.18s p(95)=1.43s
http_reqs......................: 11665 166.614587/s
iteration_duration.............: avg=1.57s min=11.73ms med=1.16s max=10.03s p(90)=3.58s p(95)=4.49s
iterations.....................: 11665 166.614587/s
vus............................: 1 min=1 max=499
vus_max........................: 500 min=500 max=500
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `cosmo`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 34716 ✗ 0
data_received..................: 1.0 GB 15 MB/s
data_sent......................: 14 MB 196 kB/s
http_req_blocked...............: avg=22.93ms min=1.68µs med=3.68µs max=3.79s p(90)=6.2µs p(95)=24.6µs
http_req_connecting............: avg=20.95ms min=0s med=0s max=3.47s p(90)=0s p(95)=0s
http_req_duration..............: avg=888.69ms min=7.12ms med=687.04ms max=8.33s p(90)=1.73s p(95)=2.33s
{ expected_response:true }...: avg=888.69ms min=7.12ms med=687.04ms max=8.33s p(90)=1.73s p(95)=2.33s
http_req_failed................: 0.00% ✓ 0 ✗ 11572
http_req_receiving.............: avg=287.97ms min=34.37µs med=90.53µs max=7.47s p(90)=990.7ms p(95)=1.5s
http_req_sending...............: avg=35.07ms min=8.29µs med=17.4µs max=6.37s p(90)=209.65µs p(95)=90.92ms
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=565.64ms min=7.01ms med=482.35ms max=5.27s p(90)=1.14s p(95)=1.37s
http_reqs......................: 11572 165.306014/s
iteration_duration.............: avg=1.59s min=13.11ms med=1.14s max=11.15s p(90)=3.49s p(95)=4.52s
iterations.....................: 11572 165.306014/s
vus............................: 1 min=1 max=499
vus_max........................: 500 min=500 max=500
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `wundergraph`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 32997 ✗ 0
data_received..................: 965 MB 14 MB/s
data_sent......................: 13 MB 187 kB/s
http_req_blocked...............: avg=26.49ms min=1.59µs med=3.31µs max=4.14s p(90)=5.4µs p(95)=97.98µs
http_req_connecting............: avg=25.22ms min=0s med=0s max=3.99s p(90)=0s p(95)=0s
http_req_duration..............: avg=844.08ms min=6.43ms med=532.61ms max=5.32s p(90)=2.05s p(95)=2.65s
{ expected_response:true }...: avg=844.08ms min=6.43ms med=532.61ms max=5.32s p(90)=2.05s p(95)=2.65s
http_req_failed................: 0.00% ✓ 0 ✗ 10999
http_req_receiving.............: avg=309.54ms min=35.21µs med=92.37µs max=4.7s p(90)=1.29s p(95)=1.97s
http_req_sending...............: avg=37.05ms min=8.1µs med=15.35µs max=3.44s p(90)=1.22ms p(95)=103.4ms
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=497.48ms min=6.33ms med=376.64ms max=2.8s p(90)=1.07s p(95)=1.32s
http_reqs......................: 10999 157.099395/s
iteration_duration.............: avg=1.68s min=12.43ms med=1.14s max=10.24s p(90)=4s p(95)=4.92s
iterations.....................: 10999 157.099395/s
vus............................: 1 min=1 max=500
vus_max........................: 500 min=500 max=500
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `mesh-supergraph-bun`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 20724 ✗ 0
data_received..................: 606 MB 8.7 MB/s
data_sent......................: 8.2 MB 117 kB/s
http_req_blocked...............: avg=2.44ms min=1.5µs med=3.21µs max=578.92ms p(90)=6.37µs p(95)=245.24µs
http_req_connecting............: avg=2.23ms min=0s med=0s max=374.54ms p(90)=0s p(95)=169.44µs
http_req_duration..............: avg=2.69s min=8.67ms med=2.39s max=10.46s p(90)=5.07s p(95)=6.58s
{ expected_response:true }...: avg=2.69s min=8.67ms med=2.39s max=10.46s p(90)=5.07s p(95)=6.58s
http_req_failed................: 0.00% ✓ 0 ✗ 6908
http_req_receiving.............: avg=22.95ms min=36.18µs med=80.4µs max=1.74s p(90)=11.91ms p(95)=139.64ms
http_req_sending...............: avg=2.85ms min=8.31µs med=14.97µs max=949.77ms p(90)=110.2µs p(95)=10.58ms
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=2.66s min=8.5ms med=2.36s max=10.46s p(90)=4.98s p(95)=6.52s
http_reqs......................: 6908 98.665061/s
iteration_duration.............: avg=2.77s min=15.09ms med=2.49s max=10.95s p(90)=5.21s p(95)=6.7s
iterations.....................: 6908 98.665061/s
vus............................: 1 min=1 max=500
vus_max........................: 500 min=500 max=500
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `mesh-supergraph`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 14016 ✗ 0
data_received..................: 410 MB 5.9 MB/s
data_sent......................: 5.5 MB 79 kB/s
http_req_blocked...............: avg=487.63µs min=1.42µs med=3.95µs max=119.13ms p(90)=179.14µs p(95)=335.17µs
http_req_connecting............: avg=448µs min=0s med=0s max=119.06ms p(90)=119.83µs p(95)=232.84µs
http_req_duration..............: avg=4.09s min=11.05ms med=4.25s max=8.64s p(90)=6.39s p(95)=6.81s
{ expected_response:true }...: avg=4.09s min=11.05ms med=4.25s max=8.64s p(90)=6.39s p(95)=6.81s
http_req_failed................: 0.00% ✓ 0 ✗ 4672
http_req_receiving.............: avg=3.25ms min=42.38µs med=126.72µs max=540.21ms p(90)=2.41ms p(95)=5.75ms
http_req_sending...............: avg=682.28µs min=8.3µs med=23.03µs max=557.6ms p(90)=51.89µs p(95)=132.97µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=4.08s min=10.93ms med=4.25s max=8.64s p(90)=6.38s p(95)=6.79s
http_reqs......................: 4672 66.730981/s
iteration_duration.............: avg=4.12s min=17.61ms med=4.28s max=8.66s p(90)=6.44s p(95)=6.88s
iterations.....................: 4672 66.730981/s
vus............................: 1 min=1 max=499
vus_max........................: 500 min=500 max=500
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `apollo-server`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 14922 ✗ 0
data_received..................: 437 MB 6.0 MB/s
data_sent......................: 5.9 MB 81 kB/s
http_req_blocked...............: avg=85.6µs min=1.48µs med=3.38µs max=29.34ms p(90)=135.64µs p(95)=241.31µs
http_req_connecting............: avg=74.19µs min=0s med=0s max=29.27ms p(90)=72.04µs p(95)=166.24µs
http_req_duration..............: avg=4.19s min=83.62ms med=2.23s max=45.29s p(90)=3.41s p(95)=23.92s
{ expected_response:true }...: avg=4.19s min=83.62ms med=2.23s max=45.29s p(90)=3.41s p(95)=23.92s
http_req_failed................: 0.00% ✓ 0 ✗ 4974
http_req_receiving.............: avg=268.58µs min=45.79µs med=116.44µs max=169.22ms p(90)=194.51µs p(95)=283.61µs
http_req_sending...............: avg=78.18µs min=8.94µs med=17.3µs max=26.52ms p(90)=43.18µs p(95)=62.16µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=4.19s min=83.53ms med=2.23s max=45.29s p(90)=3.41s p(95)=23.92s
http_reqs......................: 4974 67.941196/s
iteration_duration.............: avg=4.21s min=91.1ms med=2.25s max=45.3s p(90)=3.42s p(95)=23.94s
iterations.....................: 4974 67.941196/s
vus............................: 20 min=20 max=500
vus_max........................: 500 min=500 max=500
Performance Overview
Subgraphs Overview
HTTP Overview
cde52eb
to
0b42a94
Compare
Overview for:
|
Gateway | RPS ⬇️ | Requests | Duration | Notes |
---|---|---|---|---|
apollo-router | 171 | 5212 total, 0 failed | avg: 485ms, p95: 697ms | ✅ |
cosmo | 171 | 5224 total, 0 failed | avg: 499ms, p95: 709ms | ✅ |
wundergraph | 151 | 4609 total, 0 failed | avg: 543ms, p95: 951ms | ✅ |
mesh-supergraph-bun | 78 | 2400 total, 0 failed | avg: 1233ms, p95: 2100ms | ✅ |
apollo-server | 48 | 1511 total, 0 failed | avg: 2028ms, p95: 2680ms | ✅ |
mercurius | 30 | 927 total, 0 failed | avg: 3266ms, p95: 4469ms | ✅ |
mesh-supergraph | 26 | 852 total, 0 failed | avg: 3715ms, p95: 5764ms | ✅ |
Summary for: `apollo-router`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 15636 ✗ 0
data_received..................: 457 MB 15 MB/s
data_sent......................: 6.2 MB 204 kB/s
http_req_blocked...............: avg=97.94µs min=1.37µs med=2.84µs max=198.66ms p(90)=4.56µs p(95)=6.47µs
http_req_connecting............: avg=91.91µs min=0s med=0s max=198.58ms p(90)=0s p(95)=0s
http_req_duration..............: avg=485.22ms min=20.36ms med=482.08ms max=1.71s p(90)=629.21ms p(95)=696.75ms
{ expected_response:true }...: avg=485.22ms min=20.36ms med=482.08ms max=1.71s p(90)=629.21ms p(95)=696.75ms
http_req_failed................: 0.00% ✓ 0 ✗ 5212
http_req_receiving.............: avg=26.66ms min=33.07µs med=76.67µs max=1.37s p(90)=67.59ms p(95)=154.76ms
http_req_sending...............: avg=1.8ms min=7.97µs med=13.58µs max=497.03ms p(90)=78.77µs p(95)=644.58µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=456.76ms min=11.71ms med=469.43ms max=991.85ms p(90)=592.77ms p(95)=638.95ms
http_reqs......................: 5212 171.661707/s
iteration_duration.............: avg=579.21ms min=31.92ms med=544.53ms max=2.2s p(90)=776.49ms p(95)=930.9ms
iterations.....................: 5212 171.661707/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `cosmo`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 15672 ✗ 0
data_received..................: 458 MB 15 MB/s
data_sent......................: 6.2 MB 204 kB/s
http_req_blocked...............: avg=33.99µs min=1.38µs med=2.89µs max=98.66ms p(90)=4.67µs p(95)=6.04µs
http_req_connecting............: avg=8.25µs min=0s med=0s max=2.57ms p(90)=0s p(95)=0s
http_req_duration..............: avg=499.45ms min=38.77ms med=496.97ms max=2.43s p(90)=627.11ms p(95)=708.95ms
{ expected_response:true }...: avg=499.45ms min=38.77ms med=496.97ms max=2.43s p(90)=627.11ms p(95)=708.95ms
http_req_failed................: 0.00% ✓ 0 ✗ 5224
http_req_receiving.............: avg=30.74ms min=39.15µs med=78.31µs max=1.91s p(90)=68.6ms p(95)=210.43ms
http_req_sending...............: avg=1.55ms min=8.4µs med=13.5µs max=1.08s p(90)=41.19µs p(95)=173.67µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=467.14ms min=33.69ms med=482.72ms max=811.07ms p(90)=583.01ms p(95)=621.92ms
http_reqs......................: 5224 171.960612/s
iteration_duration.............: avg=578.12ms min=72.4ms med=544.76ms max=2.48s p(90)=791.92ms p(95)=941.71ms
iterations.....................: 5224 171.960612/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `wundergraph`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 13827 ✗ 0
data_received..................: 404 MB 13 MB/s
data_sent......................: 5.5 MB 180 kB/s
http_req_blocked...............: avg=118.8µs min=1.37µs med=2.97µs max=339.18ms p(90)=4.87µs p(95)=6.17µs
http_req_connecting............: avg=39.92µs min=0s med=0s max=4.49ms p(90)=0s p(95)=0s
http_req_duration..............: avg=543.27ms min=15.19ms med=517.99ms max=1.81s p(90)=835.51ms p(95)=951.19ms
{ expected_response:true }...: avg=543.27ms min=15.19ms med=517.99ms max=1.81s p(90)=835.51ms p(95)=951.19ms
http_req_failed................: 0.00% ✓ 0 ✗ 4609
http_req_receiving.............: avg=38.41ms min=36.59µs med=87.17µs max=1.19s p(90)=110.25ms p(95)=294.75ms
http_req_sending...............: avg=2.48ms min=7.91µs med=13.89µs max=746.76ms p(90)=40.74µs p(95)=317.95µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=502.37ms min=15.08ms med=486.43ms max=1.43s p(90)=780.25ms p(95)=879.37ms
http_reqs......................: 4609 151.908564/s
iteration_duration.............: avg=654.92ms min=31.77ms med=608.06ms max=2.65s p(90)=1.01s p(95)=1.2s
iterations.....................: 4609 151.908564/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `mesh-supergraph-bun`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 7200 ✗ 0
data_received..................: 211 MB 6.9 MB/s
data_sent......................: 2.8 MB 93 kB/s
http_req_blocked...............: avg=144.24µs min=1.58µs med=3.42µs max=6.93ms p(90)=5.55µs p(95)=13.31µs
http_req_connecting............: avg=133.58µs min=0s med=0s max=6.79ms p(90)=0s p(95)=0s
http_req_duration..............: avg=1.23s min=593.82ms med=1.06s max=3.01s p(90)=1.94s p(95)=2.09s
{ expected_response:true }...: avg=1.23s min=593.82ms med=1.06s max=3.01s p(90)=1.94s p(95)=2.09s
http_req_failed................: 0.00% ✓ 0 ✗ 2400
http_req_receiving.............: avg=16.97ms min=41.34µs med=115.76µs max=636.04ms p(90)=11.05ms p(95)=127.42ms
http_req_sending...............: avg=335.36µs min=8.62µs med=16.36µs max=177.17ms p(90)=46.48µs p(95)=248.11µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=1.21s min=593.71ms med=1.05s max=3s p(90)=1.93s p(95)=2.08s
http_reqs......................: 2400 78.181271/s
iteration_duration.............: avg=1.26s min=614.99ms med=1.09s max=3.09s p(90)=1.96s p(95)=2.12s
iterations.....................: 2400 78.181271/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `apollo-server`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 4533 ✗ 0
data_received..................: 133 MB 4.2 MB/s
data_sent......................: 1.8 MB 57 kB/s
http_req_blocked...............: avg=41.93µs min=1.43µs med=3.28µs max=3.25ms p(90)=5.62µs p(95)=160.73µs
http_req_connecting............: avg=29.96µs min=0s med=0s max=1.34ms p(90)=0s p(95)=119.29µs
http_req_duration..............: avg=2.02s min=410.72ms med=1.68s max=21.58s p(90)=2.06s p(95)=2.68s
{ expected_response:true }...: avg=2.02s min=410.72ms med=1.68s max=21.58s p(90)=2.06s p(95)=2.68s
http_req_failed................: 0.00% ✓ 0 ✗ 1511
http_req_receiving.............: avg=234.14µs min=48µs med=122.24µs max=68.14ms p(90)=215.92µs p(95)=323.52µs
http_req_sending...............: avg=34.78µs min=8.54µs med=17.69µs max=1.47ms p(90)=35.72µs p(95)=121.22µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=2.02s min=410.22ms med=1.68s max=21.58s p(90)=2.06s p(95)=2.67s
http_reqs......................: 1511 48.097144/s
iteration_duration.............: avg=2.03s min=419.41ms med=1.69s max=21.6s p(90)=2.07s p(95)=2.69s
iterations.....................: 1511 48.097144/s
vus............................: 43 min=43 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `mercurius`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 2781 ✗ 0
data_received..................: 81 MB 2.7 MB/s
data_sent......................: 1.1 MB 36 kB/s
http_req_blocked...............: avg=206.44µs min=1.44µs med=3.73µs max=5.39ms p(90)=115.32µs p(95)=1.45ms
http_req_connecting............: avg=174.78µs min=0s med=0s max=4.97ms p(90)=80.54µs p(95)=1.24ms
http_req_duration..............: avg=3.26s min=623.88ms med=3.09s max=7.16s p(90)=4.21s p(95)=4.46s
{ expected_response:true }...: avg=3.26s min=623.88ms med=3.09s max=7.16s p(90)=4.21s p(95)=4.46s
http_req_failed................: 0.00% ✓ 0 ✗ 927
http_req_receiving.............: avg=273.03µs min=46µs med=113.42µs max=41.09ms p(90)=207.28µs p(95)=339.85µs
http_req_sending...............: avg=42.14µs min=8.9µs med=19.53µs max=2.01ms p(90)=52.81µs p(95)=209.48µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=3.26s min=623.8ms med=3.09s max=7.16s p(90)=4.21s p(95)=4.46s
http_reqs......................: 927 30.25374/s
iteration_duration.............: avg=3.27s min=633.62ms med=3.1s max=7.17s p(90)=4.22s p(95)=4.47s
iterations.....................: 927 30.25374/s
vus............................: 100 min=100 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
Summary for: `mesh-supergraph`
K6 Output
✓ response code was 200
✓ no graphql errors
✓ valid response structure
checks.........................: 100.00% ✓ 2556 ✗ 0
data_received..................: 75 MB 2.3 MB/s
data_sent......................: 1.0 MB 31 kB/s
http_req_blocked...............: avg=177µs min=1.5µs med=4.51µs max=8.37ms p(90)=229.93µs p(95)=1.22ms
http_req_connecting............: avg=121.05µs min=0s med=0s max=4.32ms p(90)=118.7µs p(95)=1.04ms
http_req_duration..............: avg=3.71s min=2.28s med=3.45s max=7.07s p(90)=5.05s p(95)=5.76s
{ expected_response:true }...: avg=3.71s min=2.28s med=3.45s max=7.07s p(90)=5.05s p(95)=5.76s
http_req_failed................: 0.00% ✓ 0 ✗ 852
http_req_receiving.............: avg=2.59ms min=43.16µs med=210.08µs max=81.9ms p(90)=2.88ms p(95)=7.01ms
http_req_sending...............: avg=83.42µs min=9.25µs med=25.8µs max=2.82ms p(90)=99.21µs p(95)=327.59µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=3.71s min=2.28s med=3.45s max=7.07s p(90)=5.05s p(95)=5.76s
http_reqs......................: 852 26.099379/s
iteration_duration.............: avg=3.73s min=2.3s med=3.47s max=7.08s p(90)=5.08s p(95)=5.77s
iterations.....................: 852 26.099379/s
vus............................: 54 min=54 max=100
vus_max........................: 100 min=100 max=100
Performance Overview
Subgraphs Overview
HTTP Overview
0b42a94
to
009aeff
Compare
This PR contains the following updates:
2.7.2
->2.9.2
2.8.5
->2.9.2
4.10.2
->4.11.0
v1.43.0
->v1.56.0
Release Notes
apollographql/federation (@apollo/composition)
v2.9.2
Compare Source
Patch Changes
2192f355f50db33fe0807d16153f357696b9f190
,e1e2605b30efc488b57f62ba43436606a38a3607
,5ac01b534318105e904c1e6598070f753add3bb1
]:v2.9.1
Compare Source
Patch Changes
Fix bugs in composition when merging nulls in directive applications and when handling renames. (#3134)
Updated dependencies [
b8e4ab5352a4dfd262af49493fdd42e86e5e3d99
,e6c05b6c96023aa3dec79889431f8217fcb3806d
]:v2.9.0
Compare Source
Minor Changes
@cost
directive allows setting a custom weight to a particular field in the graph, overriding the default cost calculation. The@listSize
directive gives the cost calculator information about how to estimate the size of lists returned by subgraphs. This can either be a static size or a value derived from input arguments, such as paging parameters. (#3074)Patch Changes
Reduce memory overhead during satisfiability checking when there are many options. (#3109)
Updated dependencies [
acfe3193429c7f99b4fc564b20828aaa8659a75c
,02c2a34a62c3717a4885449172e404f19ebf66c9
,0ccfd937d4b4a576f890665ceebbd7986fac5d0c
,e0a5075c0d12a0e2f7ef303b246e3216a139d3e0
]:v2.8.5
Compare Source
Patch Changes
v2.8.4
Compare Source
Patch Changes
When doing interface type intersection detection, allow @interfaceObject to stand in for any type (#3087)
Updated dependencies [
5f4bb160d024678d6facd471c43c8ec61c86e701
,672aca7cbeb0a6a38586357a4e154f2dd91caa0c
]:v2.8.3
Compare Source
Patch Changes
Error messages are now lazily evaluated for satisfiability validations. (#3068)
Query graph caches now use maps instead of sparsely-populated arrays for per-subgraph data. (#3066)
Add a fast path to skip override validation for fields without any subgraph
@override
s. (#3070)Type merging now uses maps instead of sparsely-populated arrays for per-subgraph data. (#3069)
Stop duplicating hints for inconsistent value type fields per subgraph. (#3071)
Fix logic to compute missing subgraphs when generating composition hints/errors (#3076)
Use sets instead of arrays for tracking schema type/directive referencers. (#3067)
Updated dependencies [
38debcf2f9af1a719bd1c8acbd9335efa8427ddb
,50d648ccffb05591878de75dc5522914ed48698f
,860aace9904e787f9bf05aad94be5b5920f10543
,f753d55e9a49d11389ee4f8d7976533447e95ede
,3af790517d662f3bec9064c0bf243014c579e9cd
]:v2.8.2
Compare Source
Patch Changes
b2e5ab66f84688ec304cfcf2c6f749c86aded549
]:v2.8.1
Compare Source
Patch Changes
Fix performance regression in needsJoinField() for large graphs (#3038)
Updated dependencies []:
v2.8.0
Compare Source
Minor Changes
Implement new directives to allow getting and setting context. This allows resolvers to reference and access data referenced by entities that exist in the GraphPath that was used to access the field. The following example demonstrates the ability to access the
prop
field within the Child resolver. (#2988)Patch Changes
Various set context bugfixes (#3017)
Updated dependencies [
c4744da360235d8bb8270ea048f0e0fa5d03be1e
,8a936d741a0c05835ff2533714cf330d18209179
,f5fe3e74d36722f78004c1e2e03c77d8b95cd6bf
]:v2.7.8
Compare Source
Patch Changes
Triggering a clean 2.7.8 release now that harmonizer build has been fixed. (#3010)
Updated dependencies [
2ad72802044310a528e8944f4538efe519424504
]:v2.7.7
Compare Source
Patch Changes
No logical changes since 2.7.5 or 2.7.6, but we fixed a bug in the release process, so we need to publish a new patch version (2.7.7). (#2999)
Updated dependencies [
bee0b0828b4fb6a1d3172ac330560e2ab6c046bb
]:v2.7.6
Compare Source
Patch Changes
There is no functionality change between 2.7.5 and 2.7.6. Triggering new release as previous one released partially leading to a broken experience. (#2997)
Updated dependencies []:
v2.7.5
Compare Source
Patch Changes
v2.7.4
Compare Source
Patch Changes
d80b7f0ca1456567a0866a32d2b2abf940598f77
]:v2.7.3
Compare Source
Patch Changes
Fix a query planning bug where invalid subgraph queries are generated with
reuseQueryFragments
set true. (#2952) (#2963)Updated dependencies [
ec04c50b4fb832bfd281ecf9c0c2dd7656431b96
,a494631918156f0431ceace74281c076cf1d5d51
]:apollographql/federation (@apollo/gateway)
v2.9.2
Compare Source
Patch Changes
2192f355f50db33fe0807d16153f357696b9f190
,e1e2605b30efc488b57f62ba43436606a38a3607
,5ac01b534318105e904c1e6598070f753add3bb1
]:v2.9.1
Compare Source
Patch Changes
Fix bugs in composition when merging nulls in directive applications and when handling renames. (#3134)
Updated dependencies [
b8e4ab5352a4dfd262af49493fdd42e86e5e3d99
,e6c05b6c96023aa3dec79889431f8217fcb3806d
]:v2.9.0
Compare Source
Patch Changes
Avoid type explosion for inline fragments where the type condition is an interface that implements the parent type. (#3122)
Reduce memory overhead during satisfiability checking when there are many options. (#3109)
Updated dependencies [
02c2a34a62c3717a4885449172e404f19ebf66c9
,0ccfd937d4b4a576f890665ceebbd7986fac5d0c
,e0a5075c0d12a0e2f7ef303b246e3216a139d3e0
]:apollographql/apollo-server (@apollo/server)
v4.11.0
Compare Source
Minor Changes
#7916
4686454
Thanks @andrewmcgivery! - AddhideSchemaDetailsFromClientErrors
option to ApolloServer to allow hiding 'did you mean' suggestions from validation errors.Even with introspection disabled, it is possible to "fuzzy test" a graph manually or with automated tools to try to determine the shape of your schema. This is accomplished by taking advantage of the default behavior where a misspelt field in an operation
will be met with a validation error that includes a helpful "did you mean" as part of the error text.
For example, with this option set to
true
, an error would readCannot query field "help" on type "Query".
whereas with this option set tofalse
it would readCannot query field "help" on type "Query". Did you mean "hello"?
.We recommend enabling this option in production to avoid leaking information about your schema to malicious actors.
To enable, set this option to
true
in yourApolloServer
options:v4.10.5
Compare Source
Patch Changes
#7821
b2e15e7
Thanks @renovate! - Non-major dependency updates#7900
86d7111
Thanks @trevor-scheer! - Inline a small dependency that was causing build issues for ESM projectsv4.10.4
Compare Source
Patch Changes
18a3827
Thanks @tninesling! - Subscription heartbeats are initialized prior to awaiting subscribe(). This allows long-running setup to happen in the returned Promise without the subscription being terminated prior to resolution.v4.10.3
Compare Source
Patch Changes
5f335a5
Thanks @tninesling! - Catch errors thrown by subscription generators, and gracefully clean up the subscription instead of crashing.apollographql/router (ghcr.io/apollographql/router)
v1.56.0
Compare Source
🚀 Features
Native query planner is now in public preview
The native query planner is now in public preview. You can configure the
experimental_query_planner_mode
option in the router configuration YAML to change the mode of the native query planner. The following modes are available:new
: Enable only the new Rust-native query planner in the hot-path of query execution.legacy
: Enable only the legacy JavaScript query planner in the hot-path of query execution.both_best_effort
: Enables both the new and legacy query planners. They are configured in a comparison-based mode of operation with the legacy planner in the hot-path and the and the new planner in the cold-path. Comparisons are made between the two plans on a sampled basis and metrics are available to analyze the differences in aggregate.Support loading Apollo key from file (PR #5917)
You can now specific the location to a file containing the Apollo key that's used by Apollo Uplink and usage reporting. The router now supports both the
--apollo-key-path
CLI argument and theAPOLLO_KEY_PATH
environment variable for passing the file containing your Apollo key.Previously, the router supported only the
APOLLO_KEY
environment variable to provide the key. The new CLI argument and environment variable help users who prefer not to pass sensitive keys through environment variables.Note: This feature is unavailable for Windows.
By @lleadbet in https://github.com/apollographql/router/pull/5917
🐛 Fixes
Prevent sending internal
apollo_private.*
attributes to Jaeger collector (PR #6033)When using the router's Jaeger collector to send traces, you will no longer receive span attributes with the
apollo_private.
prefix. Those attributes were incorrectly sent, as that prefix is reserved for internal attributes.By @bnjjj in https://github.com/apollographql/router/pull/6033
Fix displaying custom event attributes on subscription events (PR #6033)
The router now properly displays custom event attributes that are set with selectors at the supergraph level.
An example configuration:
By @bnjjj in https://github.com/apollographql/router/pull/6033
Update to Federation v2.9.2 (PR #6069)
This release updates to Federation v2.9.2, with a small fix to the internal
__typename
optimization and a fix to prevent argument name collisions in the@context
/@fromContext
directives.By @dariuszkuc in https://github.com/apollographql/router/pull/6069
📃 Configuration
Add metrics for Rust vs. Deno configuration values (PR #6056)
To help track the migration from JavaScript (Deno) to native Rust implementations, the router now reports the values of the following configuration options to Apollo:
apollo.router.config.experimental_query_planner_mode
apollo.router.config.experimental_introspection_mode
By @goto-bus-stop in https://github.com/apollographql/router/pull/6056
v1.55.0
Compare Source
🚀 Features
Support aliasing standard attributes for telemetry (Issue #5930)
The router now supports creating aliases for standard attributes for telemetry.
This fixes issues where standard attribute names collide with reserved attribute names. For example, the standard attribute name
entity.type
is a reserved attribute name for New Relic, so it won't work properly. Moreoverentity.type
is inconsistent with our other GraphQL attributes prefixed withgraphql.
The example configuration below renames
entity.type
tographql.type.name
:By @bnjjj in https://github.com/apollographql/router/pull/5957
Enable router customizations to access demand control info (PR #5972)
Rhai scripts and coprocessors can now access demand control information via the context. For more information on Rhai constants to access demand control info, see available Rhai API constants.
By @tninesling in https://github.com/apollographql/router/pull/5972
Support Redis connection pooling (PR #5942)
The router now supports Redis connection pooling for APQs, query planners and entity caches. This can improve performance when there is contention on Redis connections or latency in Redis calls.
By @Geal in https://github.com/apollographql/router/pull/5942
🐛 Fixes
Remove unused fragments and input arguments when filtering operations (PR #5952)
This release fixes the authorization plugin's query filtering to remove unused fragments and input arguments if the related parts of the query are removed. Previously the plugin's query filtering generated validation errors when planning certain queries.
By @Geal in https://github.com/apollographql/router/pull/5952
Hot-reloads will no longer interrupt certain gauges (PR #5996, PR #5999, PR #5999)
Previously when the router hot-reloaded a schema or a configuration file, the following gauges stopped working:
apollo.router.cache.storage.estimated_size
apollo_router_cache_size
apollo.router.v8.heap.used
apollo.router.v8.heap.total
apollo.router.query_planning.queued
This issue has been fixed in this release, and the gauges now continue to function after a router hot-reloads.
By @BrynCooke in https://github.com/apollographql/router/pull/5996 and https://github.com/apollographql/router/pull/5999 and https://github.com/apollographql/router/pull/6012
Datadog sample propagation will respect previous sampling decisions (PR #6005)
PR #5788 introduced a regression where sampling was set on propagated headers regardless of the sampling decision in the router or upstream.
This PR reverts the code in question and adds a test to check that a non-sampled request doesn't result in sampling in the downstream subgraph service.
By @BrynCooke in https://github.com/apollographql/router/pull/6005
Include request variables when scoring for demand control (PR #5995)
Demand control scoring in the router now accounts for variables in queries.
By @tninesling in https://github.com/apollographql/router/pull/5995
📃 Configuration
Enable new and old schema introspection implementations by default (PR #6014)
Starting with this release, if schema introspection is enabled, the router runs both the old Javascript implementation and a new Rust implementation of its introspection logic by default.
The more performant Rust implementation will eventually replace the Javascript implementation. For now, both implementations are run by default so we can definitively assess the reliability and stability of the Rust implementation before removing the Javascript one.
You can still toggle between implementations using the
experimental_introspection_mode
configuration key. Its valid values:new
runs only Rust-based validationlegacy
runs only Javascript-based validationboth
(default) runs both in comparison and logs errors if differences ariseHaving
both
as the default causes no client-facing impact. It will record and output the metrics of its comparison as aapollo.router.operations.introspection.both
counter. (Note: if this counter in your metrics hasrust_error = true
oris_matched = false
, please open an issue with Apollo.)Note: schema introspection itself is disabled by default, so its implementation(s) are run only if it's enabled in your configuration:
By @SimonSapin in https://github.com/apollographql/router/pull/6014
🧪 Experimental
Allow disabling persisted-queries-based query plan cache prewarm on schema reload
The router supports the new
persisted_queries.experimental_prewarm_query_plan_cache.on_reload
configuration option. It toggles whether a query plan cache that's prewarmed upon loading a new schema includes operations from persisted query lists. Its default istrue
. Setting itfalse
precludes operations from persisted query lists from being added to the prewarmed query plan cache.Some background about the development of this option:
In router v1.31.0, we started including operations from persisted query lists when the router prewarms the query plan cache when loading a new schema.
Then in router v1.49.0, we let you also prewarm the query plan cache from the persisted query list during router startup by setting
persisted_queries.experimental_prewarm_query_plan_cache
to true.In this release, we now allow you to disable the original feature so that the router can prewarm only recent operations from the query planning cache (and not operations from persisted query lists) when loading a new schema.
Note: the option added in v1.49.0 has been renamed from
persisted_queries.experimental_prewarm_query_plan_cache
topersisted_queries.experimental_prewarm_query_plan_cache.on_startup
. Existing configuration files will keep working as before, but with a warning that can be resolved by updating your config file:By @glasser in https://github.com/apollographql/router/pull/5990
v1.54.0
Compare Source
🚀 Features
Add configurability of span attributes in logs (Issue #5540)
The router supports a new
telemetry.exporters.logging.stdout.format.json.span_attributes
option that enables you to choose a subset of all span attributes to display in your logs.When
span_attributes
is specified, the router searches for the first attribute in its input list of span attributes from the root span to the current span and attaches it to the outermost JSON object for the log event. If you set the same attribute name for different spans at different levels, the router chooses the attributes of child spans before the attributes of parent spans.For example, if you have spans that contains
span_attr_1
attribute and you only want to display this span attribute:Example output with a list of spans:
To learn more, go to
span_attributes
docs.By @bnjjj in https://github.com/apollographql/router/pull/5867
Add a histogram metric tracking evaluated query plans (PR #5875)
The router supports the new
apollo.router.query_planning.plan.evaluated_plans
histogram metric to track the number of evaluated query plans.You can use it to help set an optimal
supergraph.query_planning.experimental_plans_limit
option that limits the number of query plans evaluated for a query and reduces the time spent planning.By @Geal in https://github.com/apollographql/router/pull/5875
🐛 Fixes
Fix Datadog sampling (PR #5788)
The router's Datadog exporter has been fixed so that traces are sampled as intended.
Previously, the Datadog exporter's context may not have been set correctly, causing traces to be undersampled.
By @BrynCooke & @bnjjj in https://github.com/apollographql/router/pull/5788
📃 Configuration
General availability of Apollo usage report generation (#5807)
The router's Apollo usage report generation feature that was previously experimental is now generally available.
If you used its experimental configuration, you should migrate to the new configuration options:
telemetry.apollo.experimental_apollo_metrics_reference_mode
is nowtelemetry.apollo.metrics_reference_mode
telemetry.apollo.experimental_apollo_signature_normalization_algorithm
is nowtelemetry.apollo.signature_normalization_algorithm
experimental_apollo_metrics_generation_mode
has been removed because the Rust implementation (the default since router v1.49.0) is generating reports identical to the previous router-bridge implementationThe experimental configuration options are now deprecated. They are functional but will log warnings.
By @bonnici in https://github.com/apollographql/router/pull/5807
Helm: Enable easier Kubernetes debugging with heaptrack (Issue #5789)
The router's Helm chart has been updated to help make debugging with heaptrack easier.
Previously, when debugging multiple Pods with heaptrack, all Pods wrote to the same file, so they'd overwrite each others' results. This issue has been fixed by adding a
hostname
to each output data file from heaptrack.Also, the Helm chart now supports a
restartPolicy
that enables you to configure a Pod's restart policy. The default value ofrestartPolicy
isAlways
(the same as the Kubernetes default).By @cyberhck in https://github.com/apollographql/router/pull/5850
📚 Documentation
Document OpenTelemetry information for operation limits (PR #5884)
The router's docs for operation limits now describe using telemetry to set operation limits and logging values.
By @andrewmcgivery in https://github.com/apollographql/router/pull/5884
v1.53.0
Compare Source
🚀 Features
Support demand control directives (PR #5777)
The router supports two new demand control directives,
@cost
and@listSize
, that you can use to provide more accurate estimates of GraphQL operation costs to the router's demand control plugin.Use the
@cost
directive to customize the weights of operation cost calculations, particularly for expensive resolvers.Use the
@listSize
directive to provide a more accurate estimate for the size of a specific list field, particularly for those that differ greatly from the global list size estimate.To learn more, go to Demand Control docs.
By @tninesling in https://github.com/apollographql/router/pull/5777
General Availability (GA) of Demand Control (PR #5868)
Demand control in the router is now a generally available (GA) feature.
GA compatibility update: if you used demand control during its preview, to use it in GA you must update your configuration from
preview_demand_control
todemand_control
.To learn more, go to Demand Control docs.
By @tninesling in https://github.com/apollographql/router/pull/5868
Enable native query planner to run in the background (PR #5790, PR #5811, PR #5771, PR #5860)
The router now schedules background jobs to run the native (Rust) query planner to compare its results to the legacy implementation. This helps ascertain its correctness before making a decision to switch entirely to it from the legacy query planner.
To learn more, go to Experimental Query Planner Mode docs.
The router continues to use the legacy query planner to plan and execute operations, so there is no effect on the hot path.
To disable running background comparisons with the native query planner, you can configure the router to enable only the
legacy
query planner:By @SimonSapin in (PR #5790, PR #5811, PR #5771 PR #5860)
Add warnings for invalid configuration of custom telemetry (PR #5759)
The router now logs warnings when running with telemetry that may have invalid custom configurations.
For example, you may customize telemetry using invalid conditions or inaccessible statuses:
Although the configuration is syntactically correct, its customization is invalid, and the router now outputs warnings for such invalid configurations.
By @bnjjj in https://github.com/apollographql/router/pull/5759
Add V8 heap usage metrics (PR #5781)
The router supports new gauge metrics for tracking heap memory usage of the V8 Javascript engine:
apollo.router.v8.heap.used
: heap memory used by V8, in bytesapollo.router.v8.heap.total
: total heap allocated by V8, in bytesBy @Geal in https://github.com/apollographql/router/pull/5781
Update Federation to v2.9.0 (PR #5902)
This updates the router to Federation v2.9.0.
By @tninesling in https://github.com/apollographql/router/pull/5902
Helm: Support
maxSurge
andmaxUnavailable
for rolling updates (Issue #5664)The router Helm chart now supports the configuration of
maxSurge
andmaxUnavailable
for theRollingUpdate
deployment strategy.By @theJC in https://github.com/apollographql/router/pull/5665
Support new telemetry trace ID format (PR #5735)
The router supports a new UUID format for telemetry trace IDs.
The following formats are supported in router configuration for trace IDs:
open_telemetry
hexadecimal
(same asopentelemetry
)decimal
datadog
uuid
(may contain dashes)You can configure router logging to display the formatted trace ID with
display_trace_id
:By @bnjjj in https://github.com/apollographql/router/pull/5735
Add
format
for trace ID propagation. (PR #5803)The router now supports specifying the format of trace IDs that are propagated to subgraphs via headers.
You can configure the format with the
format
option:Note that incoming requests must be some form of UUID, either with or without dashes.
To learn about supported formats, go to
request
configuration reference docs.By @BrynCooke in https://github.com/apollographql/router/pull/5803
New
apollo.router.cache.storage.estimated_size
gauge (PR #5770)The router supports the new metric
apollo.router.cache.storage.estimated_size
that helps users understand and monitor the amount of memory that query planner cache entries consume.The
apollo.router.cache.storage.estimated_size
metric gives an estimated size in bytes of a cache entry. It has the following attributes:kind
:query planner
.storage
:memory
.Before using the estimate to decide whether to update the cache, users should validate that the estimate correlates with their pod's memory usage.
To learn how to troubleshoot with this metric, see the Pods terminating due to memory pressure guide in docs.
By @BrynCooke in https://github.com/apollographql/router/pull/5770
🐛 Fixes
Fix GraphQL query directives validation bug (PR #5753)
The router now supports GraphQL queries where a variable is used in a directive on the same operation where the variable is declared.
For example, the following query both declares and uses
$var
:By @goto-bus-stop in https://github.com/apollographql/router/pull/5753
Evaluate selectors in response stage when possible (PR #5725)
The router now support
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.