forked from Kong/kong
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG.md
7983 lines (6486 loc) · 375 KB
/
CHANGELOG.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Table of Contents
- [3.2.0](#320)
- [3.1.0](#310)
- [3.0.1](#301)
- [3.0.0](#300)
- [2.8.1](#281)
- [2.8.0](#280)
- [2.7.1](#271)
- [2.7.0](#270)
- [2.6.0](#260)
- [2.5.1](#251)
- [2.5.0](#250)
- [2.4.1](#241)
- [2.4.0](#240)
- [2.3.3](#233)
- [2.3.2](#232)
- [2.3.1](#231)
- [2.3.0](#230)
- [2.2.2](#222)
- [2.2.1](#221)
- [2.2.0](#220)
- [2.1.4](#214)
- [2.1.3](#213)
- [2.1.2](#212)
- [2.1.1](#211)
- [2.1.0](#210)
- [2.0.5](#205)
- [2.0.4](#204)
- [2.0.3](#203)
- [2.0.2](#202)
- [2.0.1](#201)
- [2.0.0](#200)
- [1.5.1](#151)
- [1.5.0](#150)
- [1.4.3](#143)
- [1.4.2](#142)
- [1.4.1](#141)
- [1.4.0](#140)
- [1.3.0](#130)
- [1.2.2](#122)
- [1.2.1](#121)
- [1.2.0](#120)
- [1.1.2](#112)
- [1.1.1](#111)
- [1.1.0](#110)
- [1.0.3](#103)
- [1.0.2](#102)
- [1.0.1](#101)
- [1.0.0](#100)
- [0.15.0](#0150)
- [0.14.1](#0141)
- [0.14.0](#0140---20180705)
- [0.13.1](#0131---20180423)
- [0.13.0](#0130---20180322)
- [0.12.3](#0123---20180312)
- [0.12.2](#0122---20180228)
- [0.12.1](#0121---20180118)
- [0.12.0](#0120---20180116)
- [0.11.2](#0112---20171129)
- [0.11.1](#0111---20171024)
- [0.10.4](#0104---20171024)
- [0.11.0](#0110---20170816)
- [0.10.3](#0103---20170524)
- [0.10.2](#0102---20170501)
- [0.10.1](#0101---20170327)
- [0.10.0](#0100---20170307)
- [0.9.9 and prior](#099---20170202)
## Unreleased
### Additions
#### Core
- Make runloop and init error response content types compliant with Accept header value
[#10366](https://github.com/Kong/kong/pull/10366)
- Allow configuring custom error templates
[#10374](https://github.com/Kong/kong/pull/10374)
#### Plugins
- **ACME**: acme plugin now supports configuring an `account_key` in `keys` and `key_sets`
[#9746](https://github.com/Kong/kong/pull/9746)
### Fixes
#### Core
- Fixed an issue where upstream keepalive pool has CRC32 collision.
[#9856](https://github.com/Kong/kong/pull/9856)
- Fix an issue where control plane does not downgrade config for `aws_lambda` and `zipkin` for older version of data planes.
[#10346](https://github.com/Kong/kong/pull/10346)
- Fix an issue where control plane does not rename fields correctly for `session` for older version of data planes.
[#10352](https://github.com/Kong/kong/pull/10352)
- Fix an issue where validation to regex routes may be skipped when the old-fashioned config is used for DB-less Kong.
[#10348](https://github.com/Kong/kong/pull/10348)
- Fix and issue where tracing may cause unexpected behavior.
[#10364](https://github.com/Kong/kong/pull/10364)
- Fix an issue where balancer passive healthcheck would use wrong status code when kong changes status code
from upstream in `header_filter` phase.
[#10325](https://github.com/Kong/kong/pull/10325)
- Fix an issue where schema validations failing in a nested record did not propagate the error correctly
[#10449](https://github.com/Kong/kong/pull/10449)
### Changed
#### Core
- Postgres TTL cleanup timer will now only run on traditional and control plane nodes that have enabled the Admin API.
[#10405](https://github.com/Kong/kong/pull/10405)
- Postgres TTL cleanup timer now runs a batch delete loop on each ttl enabled table with a number of 50.000 rows per batch.
[#10407](https://github.com/Kong/kong/pull/10407)
#### PDK
- `request.get_uri_captures` now returns the unnamed part tagged as an array (for jsonification).
[#10390](https://github.com/Kong/kong/pull/10390)
#### Plugins
- **Request-Termination**: If the echo option was used, it would not return the uri-captures.
[#10390](https://github.com/Kong/kong/pull/10390)
### Dependencies
- Bumped lua-resty-session from 4.0.2 to 4.0.3
[#10338](https://github.com/Kong/kong/pull/10338)
- Bumped lua-protobuf from 0.3.3 to 0.4.2
[#10137](https://github.com/Kong/kong/pull/10413)
- Bumped lua-resty-openssl from 0.8.17 to 0.8.18
[#10463](https://github.com/Kong/kong/pull/10463)
## 3.2.0
### Breaking Changes
#### Plugins
- **JWT**: JWT plugin now denies a request that has different tokens in the jwt token search locations.
[#9946](https://github.com/Kong/kong/pull/9946)
- **Session**: for sessions to work as expected it is required that all nodes run Kong >= 3.2.x.
For that reason it is advisable that during upgrades mixed versions of proxy nodes run for
as little as possible. During that time, the invalid sessions could cause failures and partial downtime.
All existing sessions are invalidated when upgrading to this version.
The parameter `idling_timeout` now has a default value of `900`: unless configured differently,
sessions expire after 900 seconds (15 minutes) of idling.
The parameter `absolute_timeout` has a default value of `86400`: unless configured differently,
sessions expire after 86400 seconds (24 hours).
[#10199](https://github.com/Kong/kong/pull/10199)
- **Proxy Cache**: Add wildcard and parameter match support for content_type
[#10209](https://github.com/Kong/kong/pull/10209)
### Additions
#### Core
- Expose postgres connection pool configuration.
[#9603](https://github.com/Kong/kong/pull/9603)
- When `router_flavor` is `traditional_compatible`, verify routes created using the
Expression router instead of the traditional router to ensure created routes
are actually compatible.
[#9987](https://github.com/Kong/kong/pull/9987)
- Nginx charset directive can now be configured with Nginx directive injections
[#10111](https://github.com/Kong/kong/pull/10111)
- Services upstream TLS config is extended to stream subsystem.
[#9947](https://github.com/Kong/kong/pull/9947)
- New configuration option `ssl_session_cache_size` to set the Nginx directive `ssl_session_cache`.
This config defaults to `10m`.
Thanks [Michael Kotten](https://github.com/michbeck100) for contributing this change.
[#10021](https://github.com/Kong/kong/pull/10021)
#### Balancer
- Add a new load-balancing `algorithm` option `latency` to the `Upstream` entity.
This algorithm will choose a target based on the response latency of each target
from prior requests.
[#9787](https://github.com/Kong/kong/pull/9787)
#### Plugins
- **Plugin**: add an optional field `instance_name` that identifies a
particular plugin entity.
[#10077](https://github.com/Kong/kong/pull/10077)
- **Zipkin**: Add support to set the durations of Kong phases as span tags
through configuration property `config.phase_duration_flavor`.
[#9891](https://github.com/Kong/kong/pull/9891)
- **HTTP logging**: Suppport value of `headers` to be referenceable.
[#9948](https://github.com/Kong/kong/pull/9948)
- **AWS Lambda**: Add `aws_imds_protocol_version` configuration
parameter that allows the selection of the IMDS protocol version.
Defaults to `v1`, can be set to `v2` to enable IMDSv2.
[#9962](https://github.com/Kong/kong/pull/9962)
- **OpenTelemetry**: Support scoping with services, routes and consumers.
[#10096](https://github.com/Kong/kong/pull/10096)
- **Statsd**: Add `tag_style` configuration
parameter that allows to send metrics with [tags](https://github.com/prometheus/statsd_exporter#tagging-extensions).
Defaults to `nil` which means do not add any tags
to the metrics.
[#10118](https://github.com/Kong/kong/pull/10118)
- **Session**: now uses lua-resty-session v4.0.0
[#10199](https://github.com/Kong/kong/pull/10199)
#### Admin API
- In dbless mode, `/config` API endpoint can now flatten all schema validation
errors to a single array via the optional `flatten_errors` query parameter.
[#10161](https://github.com/Kong/kong/pull/10161)
#### PDK
- Support for `upstream_status` field in log serializer.
[#10296](https://github.com/Kong/kong/pull/10296)
### Fixes
#### Core
- Add back Postgres `FLOOR` function when calculating `ttl`, so the returned `ttl` is always a whole integer.
[#9960](https://github.com/Kong/kong/pull/9960)
- Fix an issue where after a valid declarative configuration is loaded,
the configuration hash is incorrectly set to the value: `00000000000000000000000000000000`.
[#9911](https://github.com/Kong/kong/pull/9911)
- Update the batch queues module so that queues no longer grow without bounds if
their consumers fail to process the entries. Instead, old batches are now dropped
and an error is logged.
[#10247](https://github.com/Kong/kong/pull/10247)
- Fix an issue where 'X-Kong-Upstream-Status' cannot be emitted when response is buffered.
[#10056](https://github.com/Kong/kong/pull/10056)
#### Plugins
- **Zipkin**: Fix an issue where the global plugin's sample ratio overrides route-specific.
[#9877](https://github.com/Kong/kong/pull/9877)
- **JWT**: Deny requests that have different tokens in the jwt token search locations. Thanks Jackson 'Che-Chun' Kuo from Latacora for reporting this issue.
[#9946](https://github.com/Kong/kong/pull/9946)
- **Statsd**: Fix a bug in the StatsD plugin batch queue processing where metrics are published multiple times.
[#10052](https://github.com/Kong/kong/pull/10052)
- **Datadog**: Fix a bug in the Datadog plugin batch queue processing where metrics are published multiple times.
[#10044](https://github.com/Kong/kong/pull/10044)
- **OpenTelemetry**: Fix non-compliances to specification:
- For `http.uri` in spans. The field should be full HTTP URI.
[#10069](https://github.com/Kong/kong/pull/10069)
- For `http.status_code`. It should be present on spans for requests that have a status code.
[#10160](https://github.com/Kong/kong/pull/10160)
- For `http.flavor`. It should be a string value, not a double.
[#10160](https://github.com/Kong/kong/pull/10160)
- **OpenTelemetry**: Fix a bug that when getting the trace of other formats, the trace ID reported and propagated could be of incorrect length.
[#10332](https://github.com/Kong/kong/pull/10332)
- **OAuth2**: `refresh_token_ttl` is now limited between `0` and `100000000` by schema validator. Previously numbers that are too large causes requests to fail.
[#10068](https://github.com/Kong/kong/pull/10068)
### Changed
#### Core
- Improve error message for invalid JWK entities.
[#9904](https://github.com/Kong/kong/pull/9904)
- Renamed two configuration properties:
* `opentelemetry_tracing` => `tracing_instrumentations`
* `opentelemetry_tracing_sampling_rate` => `tracing_sampling_rate`
The old `opentelemetry_*` properties are considered deprecated and will be
fully removed in a future version of Kong.
[#10122](https://github.com/Kong/kong/pull/10122)
[#10220](https://github.com/Kong/kong/pull/10220)
#### Hybrid Mode
- Revert the removal of WebSocket protocol support for configuration sync,
and disable the wRPC protocol.
[#9921](https://github.com/Kong/kong/pull/9921)
### Dependencies
- Bumped luarocks from 3.9.1 to 3.9.2
[#9942](https://github.com/Kong/kong/pull/9942)
- Bumped atc-router from 1.0.1 to 1.0.5
[#9925](https://github.com/Kong/kong/pull/9925)
[#10143](https://github.com/Kong/kong/pull/10143)
[#10208](https://github.com/Kong/kong/pull/10208)
- Bumped lua-resty-openssl from 0.8.15 to 0.8.17
[#9583](https://github.com/Kong/kong/pull/9583)
[#10144](https://github.com/Kong/kong/pull/10144)
- Bumped lua-kong-nginx-module from 0.5.0 to 0.5.1
[#10181](https://github.com/Kong/kong/pull/10181)
- Bumped lua-resty-session from 3.10 to 4.0.2
[#10199](https://github.com/Kong/kong/pull/10199)
[#10230](https://github.com/Kong/kong/pull/10230)
[#10308](https://github.com/Kong/kong/pull/10308)
- Bumped OpenSSL from 1.1.1s to 1.1.1t
[#10266](https://github.com/Kong/kong/pull/10266)
- Bumped lua-resty-timer-ng from 0.2.0 to 0.2.3
[#10265](https://github.com/Kong/kong/pull/10265)
## 3.1.0
### Breaking Changes
#### Core
- Change the reponse body for a TRACE method from `The upstream server responded with 405`
to `Method not allowed`, make the reponse to show more clearly that Kong do not support
TRACE method.
[#9448](https://github.com/Kong/kong/pull/9448)
- Add `allow_debug_header` Kong conf to allow use of the `Kong-Debug` header for debugging.
This option defaults to `off`.
[#10054](https://github.com/Kong/kong/pull/10054)
[#10125](https://github.com/Kong/kong/pull/10125)
### Additions
#### Core
- Allow `kong.conf` ssl properties to be stored in vaults or environment
variables. Allow such properties to be configured directly as content
or base64 encoded content.
[#9253](https://github.com/Kong/kong/pull/9253)
- Add support for full entity transformations in schemas
[#9431](https://github.com/Kong/kong/pull/9431)
- Allow schema `map` type field being marked as referenceable.
[#9611](https://github.com/Kong/kong/pull/9611)
- Add support for dynamically changing the log level
[#9744](https://github.com/Kong/kong/pull/9744)
- Add `keys` entity to store and manage asymmetric keys.
[#9737](https://github.com/Kong/kong/pull/9737)
- Add `key-sets` entity to group and manage `keys`
[#9737](https://github.com/Kong/kong/pull/9737)
#### Plugins
- **Rate-limiting**: The HTTP status code and response body for rate-limited
requests can now be customized. Thanks, [@utix](https://github.com/utix)!
[#8930](https://github.com/Kong/kong/pull/8930)
- **Zipkin**: add `response_header_for_traceid` field in Zipkin plugin.
The plugin will set the corresponding header in the response
if the field is specified with a string value.
[#9173](https://github.com/Kong/kong/pull/9173)
- **AWS Lambda**: add `requestContext` field into `awsgateway_compatible` input data
[#9380](https://github.com/Kong/kong/pull/9380)
- **ACME**: add support for Redis SSL, through configuration properties
`config.storage_config.redis.ssl`, `config.storage_config.redis.ssl_verify`,
and `config.storage_config.redis.ssl_server_name`.
[#9626](https://github.com/Kong/kong/pull/9626)
- **Session**: Add new config `cookie_persistent` that allows browser to persist
cookies even if browser is closed. This defaults to `false` which means
cookies are not persistend across browser restarts. Thanks [@tschaume](https://github.com/tschaume)
for this contribution!
[#8187](https://github.com/Kong/kong/pull/8187)
- **Response-rate-limiting**: add support for Redis SSL, through configuration properties
`redis_ssl` (can be set to `true` or `false`), `ssl_verify`, and `ssl_server_name`.
[#8595](https://github.com/Kong/kong/pull/8595)
Thanks [@dominikkukacka](https://github.com/dominikkukacka)!
- **OpenTelemetry**: add referenceable attribute to the `headers` field
that could be stored in vaults.
[#9611](https://github.com/Kong/kong/pull/9611)
- **HTTP-Log**: Support `http_endpoint` field to be referenceable
[#9714](https://github.com/Kong/kong/pull/9714)
#### Hybrid Mode
- Data plane node IDs will now persist across restarts.
[#9067](https://github.com/Kong/kong/pull/9067)
- Add HTTP CONNECT forward proxy support for Hybrid Mode connections. New configuration
options `cluster_use_proxy`, `proxy_server` and `proxy_server_ssl_verify` are added.
[#9758](https://github.com/Kong/kong/pull/9758)
[#9773](https://github.com/Kong/kong/pull/9773)
#### Performance
- Increase the default value of `lua_regex_cache_max_entries`, a warning will be thrown
when there are too many regex routes and `router_flavor` is `traditional`.
[#9624](https://github.com/Kong/kong/pull/9624)
- Add batch queue into the Datadog and StatsD plugin to reduce timer usage.
[#9521](https://github.com/Kong/kong/pull/9521)
#### PDK
- Extend `kong.client.tls.request_client_certificate` to support setting
the Distinguished Name (DN) list hints of the accepted CA certificates.
[#9768](https://github.com/Kong/kong/pull/9768)
### Fixes
#### Core
- Fix issue where external plugins crashing with unhandled exceptions
would cause high CPU utilization after the automatic restart.
[#9384](https://github.com/Kong/kong/pull/9384)
- Fix issue where Zipkin plugin cannot parse OT baggage headers
due to invalid OT baggage pattern. [#9280](https://github.com/Kong/kong/pull/9280)
- Add `use_srv_name` options to upstream for balancer.
[#9430](https://github.com/Kong/kong/pull/9430)
- Fix issue in `header_filter` instrumentation where the span was not
correctly created.
[#9434](https://github.com/Kong/kong/pull/9434)
- Fix issue in router building where when field contains an empty table,
the generated expression is invalid.
[#9451](https://github.com/Kong/kong/pull/9451)
- Fix issue in router rebuilding where when paths field is invalid,
the router's mutex is not released properly.
[#9480](https://github.com/Kong/kong/pull/9480)
- Fixed an issue where `kong docker-start` would fail if `KONG_PREFIX` was set to
a relative path.
[#9337](https://github.com/Kong/kong/pull/9337)
- Fixed an issue with error-handling and process cleanup in `kong start`.
[#9337](https://github.com/Kong/kong/pull/9337)
#### Hybrid Mode
- Fixed a race condition that can cause configuration push events to be dropped
when the first data-plane connection is established with a control-plane
worker.
[#9616](https://github.com/Kong/kong/pull/9616)
#### CLI
- Fix slow CLI performance due to pending timer jobs
[#9536](https://github.com/Kong/kong/pull/9536)
#### Admin API
- Increase the maximum request argument number from `100` to `1000`,
and return `400` error if request parameters reach the limitation to
avoid being truncated.
[#9510](https://github.com/Kong/kong/pull/9510)
- Paging size parameter is now propogated to next page if specified
in current request.
[#9503](https://github.com/Kong/kong/pull/9503)
- Non-normalized prefix route path is now rejected. It will also suggest
how to write the path in normalized form.
[#9760](https://github.com/Kong/kong/pull/9760)
#### PDK
- Added support for `kong.request.get_uri_captures`
(`kong.request.getUriCaptures`)
[#9512](https://github.com/Kong/kong/pull/9512)
- Fixed parameter type of `kong.service.request.set_raw_body`
(`kong.service.request.setRawBody`), return type of
`kong.service.response.get_raw_body`(`kong.service.request.getRawBody`),
and body parameter type of `kong.response.exit` to bytes. Note that old
version of go PDK is incompatible after this change.
[#9526](https://github.com/Kong/kong/pull/9526)
- Vault will not call `semaphore:wait` in `init` or `init_worker` phase.
[#9851](https://github.com/Kong/kong/pull/9851)
#### Plugins
- Add missing `protocols` field to various plugin schemas.
[#9525](https://github.com/Kong/kong/pull/9525)
- **AWS Lambda**: Fix an issue that is causing inability to
read environment variables in ECS environment.
[#9460](https://github.com/Kong/kong/pull/9460)
- **Request-Transformer**: fix a bug when header renaming will override
existing header and cause unpredictable result.
[#9442](https://github.com/Kong/kong/pull/9442)
- **OpenTelemetry**:
- Fix an issue that the default propagation header
is not configured to `w3c` correctly.
[#9457](https://github.com/Kong/kong/pull/9457)
- Replace the worker-level table cache with
`BatchQueue` to avoid data race.
[#9504](https://github.com/Kong/kong/pull/9504)
- Fix an issue that the `parent_id` is not set
on the span when propagating w3c traceparent.
[#9628](https://github.com/Kong/kong/pull/9628)
- **Response-Transformer**: Fix the bug that Response-Transformer plugin
breaks when receiving an unexcepted body.
[#9463](https://github.com/Kong/kong/pull/9463)
- **HTTP-Log**: Fix an issue where queue id serialization
does not include `queue_size` and `flush_timeout`.
[#9789](https://github.com/Kong/kong/pull/9789)
### Changed
#### Hybrid Mode
- The legacy hybrid configuration protocol has been removed in favor of the wRPC
protocol introduced in 3.0.
[#9740](https://github.com/Kong/kong/pull/9740)
### Dependencies
- Bumped openssl from 1.1.1q to 1.1.1s
[#9674](https://github.com/Kong/kong/pull/9674)
- Bumped atc-router from 1.0.0 to 1.0.1
[#9558](https://github.com/Kong/kong/pull/9558)
- Bumped lua-resty-openssl from 0.8.10 to 0.8.15
[#9583](https://github.com/Kong/kong/pull/9583)
[#9600](https://github.com/Kong/kong/pull/9600)
[#9675](https://github.com/Kong/kong/pull/9675)
- Bumped lyaml from 6.2.7 to 6.2.8
[#9607](https://github.com/Kong/kong/pull/9607)
- Bumped lua-resty-acme from 0.8.1 to 0.9.0
[#9626](https://github.com/Kong/kong/pull/9626)
- Bumped resty.healthcheck from 1.6.1 to 1.6.2
[#9778](https://github.com/Kong/kong/pull/9778)
- Bumped pgmoon from 1.15.0 to 1.16.0
[#9815](https://github.com/Kong/kong/pull/9815)
## [3.0.1]
### Fixes
#### Core
- Fix issue where Zipkin plugin cannot parse OT baggage headers
due to invalid OT baggage pattern. [#9280](https://github.com/Kong/kong/pull/9280)
- Fix issue in `header_filter` instrumentation where the span was not
correctly created.
[#9434](https://github.com/Kong/kong/pull/9434)
- Fix issue in router building where when field contains an empty table,
the generated expression is invalid.
[#9451](https://github.com/Kong/kong/pull/9451)
- Fix issue in router rebuilding where when paths field is invalid,
the router's mutex is not released properly.
[#9480](https://github.com/Kong/kong/pull/9480)
- Fixed an issue where `kong docker-start` would fail if `KONG_PREFIX` was set to
a relative path.
[#9337](https://github.com/Kong/kong/pull/9337)
- Fixed an issue with error-handling and process cleanup in `kong start`.
[#9337](https://github.com/Kong/kong/pull/9337)
## [3.0.0]
> Released 2022/09/12
This major release adds a new router written in Rust and a tracing API
that is compatible with the OpenTelemetry API spec. Furthermore,
various internal changes have been made to improve Kong's performance
and memory consumption. As it is a major release, users are advised
to review the list of braking changes to determine whether
configuration changes are needed when upgrading.
### Breaking Changes
#### Deployment
- Blue-green deployment from Kong earlier than `2.1.0` is not supported, upgrade to
`2.1.0` or later before upgrading to `3.0.0` to have blue-green deployment.
Thank you [@marc-charpentier]((https://github.com/charpentier)) for reporting issue
and proposing a pull-request.
[#8896](https://github.com/Kong/kong/pull/8896)
- Deprecate/stop producing Amazon Linux (1) containers and packages (EOLed December 31, 2020)
[Kong/docs.konghq.com #3966](https://github.com/Kong/docs.konghq.com/pull/3966)
- Deprecate/stop producing Debian 8 "Jessie" containers and packages (EOLed June 2020)
[Kong/kong-build-tools #448](https://github.com/Kong/kong-build-tools/pull/448)
[Kong/kong-distributions #766](https://github.com/Kong/kong-distributions/pull/766)
#### Core
- Kong schema library's `process_auto_fields` function will not any more make a deep
copy of data that is passed to it when the given context is `"select"`. This was
done to avoid excessive deep copying of tables where we believe the data most of
the time comes from a driver like `pgmoon` or `lmdb`. If a custom plugin relied
on `process_auto_fields` not overriding the given table, it must make its own copy
before passing it to the function now.
[#8796](https://github.com/Kong/kong/pull/8796)
- The deprecated `shorthands` field in Kong Plugin or DAO schemas was removed in favor
or the typed `shorthand_fields`. If your custom schemas still use `shorthands`, you
need to update them to use `shorthand_fields`.
[#8815](https://github.com/Kong/kong/pull/8815)
- The support for `legacy = true/false` attribute was removed from Kong schemas and
Kong field schemas.
[#8958](https://github.com/Kong/kong/pull/8958)
- The deprecated alias of `Kong.serve_admin_api` was removed. If your custom Nginx
templates still use it, please change it to `Kong.admin_content`.
[#8815](https://github.com/Kong/kong/pull/8815)
- The Kong singletons module `"kong.singletons"` was removed in favor of the PDK `kong.*`.
[#8874](https://github.com/Kong/kong/pull/8874)
- The dataplane config cache was removed. The config persistence is now done automatically with LMDB.
[#8704](https://github.com/Kong/kong/pull/8704)
- `ngx.ctx.balancer_address` does not exist anymore, please use `ngx.ctx.balancer_data` instead.
[#9043](https://github.com/Kong/kong/pull/9043)
- We have changed the normalization rules for `route.path`: Kong stores the unnormalized path, but
regex path always pattern matches with the normalized URI. We used to replace percent-encoding
in regex path pattern to ensure different forms of URI matches.
That is no longer supported. Except for reserved characters defined in
[rfc3986](https://datatracker.ietf.org/doc/html/rfc3986#section-2.2),
we should write all other characters without percent-encoding.
[#9024](https://github.com/Kong/kong/pull/9024)
- Kong will no longer use an heuristic to guess whether a `route.path` is a regex pattern. From now 3.0 onwards,
all regex paths must start with the `"~"` prefix, and all paths that don't start with `"~"` will be considered plain text.
The migration process should automatically convert the regex paths when upgrading from 2.x to 3.0
[#9027](https://github.com/Kong/kong/pull/9027)
- Bumping version number (`_format_version`) of declarative configuration to "3.0" for changes on `route.path`.
Declaritive configuration with older version are upgraded to "3.0" on the fly.
[#9078](https://github.com/Kong/kong/pull/9078)
- Removed deprecated `config.functions` from serverless-functions plugin's schema,
please use `config.access` phase instead.
[#8559](https://github.com/Kong/kong/pull/8559)
- Tags may now contain space characters.
[#9143](https://github.com/Kong/kong/pull/9143)
- The [Secrets Management](https://docs.konghq.com/gateway/latest/plan-and-deploy/security/secrets-management/)
feature, which has been in beta since release 2.8.0, is now included as a regular feature.
[#8871](https://github.com/Kong/kong/pull/8871)
[#9217](https://github.com/Kong/kong/pull/9217)
#### Admin API
- `POST` requests on Targets endpoint are no longer able to update
existing entities, they are only able to create new ones.
[#8596](https://github.com/Kong/kong/pull/8596),
[#8798](https://github.com/Kong/kong/pull/8798). If you have scripts that use
`POST` requests to modify Targets, you should change them to `PUT`
requests to the appropriate endpoints before updating to Kong 3.0.
- Insert and update operations on duplicated Targets returns 409.
[#8179](https://github.com/Kong/kong/pull/8179),
[#8768](https://github.com/Kong/kong/pull/8768)
- The list of reported plugins available on the server now returns a table of
metadata per plugin instead of a boolean `true`.
[#8810](https://github.com/Kong/kong/pull/8810)
#### PDK
- The `kong.request.get_path()` PDK function now performs path normalization
on the string that is returned to the caller. The raw, non-normalized version
of the request path can be fetched via `kong.request.get_raw_path()`.
[#8823](https://github.com/Kong/kong/pull/8823)
- `pdk.response.set_header()`, `pdk.response.set_headers()`, `pdk.response.exit()` now ignore and emit warnings for manually set `Transfer-Encoding` headers.
[#8698](https://github.com/Kong/kong/pull/8698)
- The PDK is no longer versioned
[#8585](https://github.com/Kong/kong/pull/8585)
- The JavaScript PDK now returns `Uint8Array` for `kong.request.getRawBody`,
`kong.response.getRawBody` and `kong.service.response.getRawBody`. The Python PDK returns `bytes` for `kong.request.get_raw_body`,
`kong.response.get_raw_body`, `kong.service.response.get_raw_body`. All these funtions used to return strings in the past.
[#8623](https://github.com/Kong/kong/pull/8623)
#### Plugins
- DAOs in plugins must be listed in an array, so that their loading order is explicit. Loading them in a
hash-like table is no longer supported.
[#8988](https://github.com/Kong/kong/pull/8988)
- Plugins MUST now have a valid `PRIORITY` (integer) and `VERSION` ("x.y.z" format)
field in their `handler.lua` file, otherwise the plugin will fail to load.
[#8836](https://github.com/Kong/kong/pull/8836)
- The old `kong.plugins.log-serializers.basic` library was removed in favor of the PDK
function `kong.log.serialize`, please upgrade your plugins to use PDK.
[#8815](https://github.com/Kong/kong/pull/8815)
- The support for deprecated legacy plugin schemas was removed. If your custom plugins
still use the old (`0.x era`) schemas, you are now forced to upgrade them.
[#8815](https://github.com/Kong/kong/pull/8815)
- Some plugins received new priority values.
This is important for those who run custom plugins as it may affect the sequence your plugins are executed.
Note that this does not change the order of execution for plugins in a standard kong installation.
List of plugins and their old and new priority value:
- `acme` changed from 1007 to 1705
- `basic-auth` changed from 1001 to 1100
- `hmac-auth` changed from 1000 to 1030
- `jwt` changed from 1005 to 1450
- `key-auth` changed from 1003 to 1250
- `ldap-auth` changed from 1002 to 1200
- `oauth2` changed from 1004 to 1400
- `rate-limiting` changed from 901 to 910
- **HTTP-log**: `headers` field now only takes a single string per header name,
where it previously took an array of values
[#6992](https://github.com/Kong/kong/pull/6992)
- **AWS Lambda**: `aws_region` field must be set through either plugin config or environment variables,
allow both `host` and `aws_region` fields, and always apply SigV4 signature.
[#8082](https://github.com/Kong/kong/pull/8082)
- **Serverless Functions** Removed deprecated `config.functions`,
please use `config.access` instead.
[#8559](https://github.com/Kong/kong/pull/8559)
- **Serverless Functions**: The pre-functions plugin changed priority from `+inf` to `1000000`.
[#8836](https://github.com/Kong/kong/pull/8836)
- **JWT**: The authenticated JWT is no longer put into the nginx
context (ngx.ctx.authenticated_jwt_token). Custom plugins which depend on that
value being set under that name must be updated to use Kong's shared context
instead (kong.ctx.shared.authenticated_jwt_token) before upgrading to 3.0
- **Prometheus**: The prometheus metrics have been reworked extensively for 3.0.
- Latency has been split into 4 different metrics: kong_latency_ms, upstream_latency_ms and request_latency_ms (http) /tcp_session_duration_ms (stream). Buckets details below.
- Separate out Kong Latency Bucket values and Upstream Latency Bucket values.
- `consumer_status` removed.
- `request_count` and `consumer_status` have been merged into just `http_requests_total`. If the `per_consumer` config is set false, the consumer label will be empty.
If the `per_consumer` config is true, it will be filled.
- `http_requests_total` has a new label `source`, set to either `exit`, `error` or `service`.
- New Metric: `node_info`. Single gauge set to 1 that outputs the node's id and kong version.
- All Memory metrics have a new label `node_id`
- `nginx_http_current_connections` merged with `nginx_stream_current_connection` into `nginx_current_connections`
[#8712](https://github.com/Kong/kong/pull/8712)
- **Prometheus**: The plugin doesn't export status codes, latencies, bandwidth and upstream
healthcheck metrics by default. They can still be turned on manually by setting `status_code_metrics`,
`latency_metrics`, `bandwidth_metrics` and `upstream_health_metrics` respectively. Enabling those metrics will impact the performance if you have a large volume of Kong entities, we recommend using the [statsd](https://github.com/Kong/kong/tree/master/kong/plugins/statsd) plugin with the push model if that is the case. And now `prometheus` plugin new grafana [dashboard](https://grafana.com/grafana/dashboards/7424-kong-official/) updated
[#9028](https://github.com/Kong/kong/pull/9028)
- **ACME**: `allow_any_domain` field added. It is default to false and if set to true, the gateway will
ignore the `domains` field.
[#9047](https://github.com/Kong/kong/pull/9047)
- **Statsd**:
- The metric name that is related to the service has been renamed by adding a `service.` prefix. e.g. `kong.service.<service_identifier>.request.count` [#9046](https://github.com/Kong/kong/pull/9046)
- The metric `kong.<service_identifier>.request.status.<status>` and `kong.<service_identifier>.user.<consumer_identifier>.request.status.<status>` has been renamed to `kong.service.<service_identifier>.status.<status>` and `kong.service.<service_identifier>.user.<consumer_identifier>.status.<status>` [#9046](https://github.com/Kong/kong/pull/9046)
- The metric `*.status.<status>.total` from metrics `status_count` and `status_count_per_user` has been removed [#9046](https://github.com/Kong/kong/pull/9046)
- **Proxy-cache**: The plugin does not store the response data in
`ngx.ctx.proxy_cache_hit` anymore. Logging plugins that need the response data
must read it from `kong.ctx.shared.proxy_cache_hit` from Kong 3.0 on.
[#8607](https://github.com/Kong/kong/pull/8607)
- **Rate-limiting**: The default policy is now `local` for all deployment modes.
[#9344](https://github.com/Kong/kong/pull/9344)
- **Response-rate-limiting**: The default policy is now `local` for all deployment modes.
[#9344](https://github.com/Kong/kong/pull/9344)
### Deprecations
- The `go_pluginserver_exe` and `go_plugins_dir` directives are no longer supported.
[#8552](https://github.com/Kong/kong/pull/8552). If you are using
[Go plugin server](https://github.com/Kong/go-pluginserver), please migrate your plugins to use the
[Go PDK](https://github.com/Kong/go-pdk) before upgrading.
- The migration helper library (mostly used for Cassandra migrations) is no longer supplied with Kong
[#8781](https://github.com/Kong/kong/pull/8781)
- The path_handling algorithm `v1` is deprecated and only supported when `router_flavor` config option
is set to `traditional`.
[#9290](https://github.com/Kong/kong/pull/9290)
#### Configuration
- The Kong constant `CREDENTIAL_USERNAME` with value of `X-Credential-Username` was
removed. Kong plugins in general have moved (since [#5516](https://github.com/Kong/kong/pull/5516))
to use constant `CREDENTIAL_IDENTIFIER` with value of `X-Credential-Identifier` when
setting the upstream headers for a credential.
[#8815](https://github.com/Kong/kong/pull/8815)
- Change the default of `lua_ssl_trusted_certificate` to `system`
[#8602](https://github.com/Kong/kong/pull/8602) to automatically load trusted CA list from system CA store.
- Remove a warning of `AAAA` being experimental with `dns_order`.
- It is no longer possible to use a .lua format to import a declarative config from the `kong`
command-line tool, only json and yaml are supported. If your update procedure with kong involves
executing `kong config db_import config.lua`, please create a `config.json` or `config.yml` and
use that before upgrading.
[#8898](https://github.com/Kong/kong/pull/8898)
- We bumped the version number (`_format_version`) of declarative configuration to "3.0" because of changes on `route.path`.
Declarative configuration with older version shoudl be upgraded to "3.0" on the fly.
[#9078](https://github.com/Kong/kong/pull/9078)
#### Migrations
- Postgres migrations can now have an `up_f` part like Cassandra
migrations, designating a function to call. The `up_f` part is
invoked after the `up` part has been executed against the database
for both Postgres and Cassandra.
- A new CLI command, `kong migrations status`, generates the status on a JSON file.
### Dependencies
- Bumped OpenResty from 1.19.9.1 to [1.21.4.1](https://openresty.org/en/changelog-1021004.html)
[#8850](https://github.com/Kong/kong/pull/8850)
- Bumped pgmoon from 1.13.0 to 1.15.0
[#8908](https://github.com/Kong/kong/pull/8908)
[#8429](https://github.com/Kong/kong/pull/8429)
- Bumped OpenSSL from 1.1.1n to 1.1.1q
[#9074](https://github.com/Kong/kong/pull/9074)
[#8544](https://github.com/Kong/kong/pull/8544)
[#8752](https://github.com/Kong/kong/pull/8752)
[#8994](https://github.com/Kong/kong/pull/8994)
- Bumped resty.openssl from 0.8.8 to 0.8.10
[#8592](https://github.com/Kong/kong/pull/8592)
[#8753](https://github.com/Kong/kong/pull/8753)
[#9023](https://github.com/Kong/kong/pull/9023)
- Bumped inspect from 3.1.2 to 3.1.3
[#8589](https://github.com/Kong/kong/pull/8589)
- Bumped resty.acme from 0.7.2 to 0.8.1
[#8680](https://github.com/Kong/kong/pull/8680)
[#9165](https://github.com/Kong/kong/pull/9165)
- Bumped luarocks from 3.8.0 to 3.9.1
[#8700](https://github.com/Kong/kong/pull/8700)
[#9204](https://github.com/Kong/kong/pull/9204)
- Bumped luasec from 1.0.2 to 1.2.0
[#8754](https://github.com/Kong/kong/pull/8754)
[#8754](https://github.com/Kong/kong/pull/9205)
- Bumped resty.healthcheck from 1.5.0 to 1.6.1
[#8755](https://github.com/Kong/kong/pull/8755)
[#9018](https://github.com/Kong/kong/pull/9018)
[#9150](https://github.com/Kong/kong/pull/9150)
- Bumped resty.cassandra from 1.5.1 to 1.5.2
[#8845](https://github.com/Kong/kong/pull/8845)
- Bumped penlight from 1.12.0 to 1.13.1
[#9206](https://github.com/Kong/kong/pull/9206)
- Bumped lua-resty-mlcache from 2.5.0 to 2.6.0
[#9287](https://github.com/Kong/kong/pull/9287)
### Additions
#### Performance
- Do not register unnecessary event handlers on Hybrid mode Control Plane
nodes [#8452](https://github.com/Kong/kong/pull/8452).
- Use the new timer library to improve performance,
except for the plugin server.
[#8912](https://github.com/Kong/kong/pull/8912)
- Increased use of caching for DNS queries by activating `additional_section` by default
[#8895](https://github.com/Kong/kong/pull/8895)
- `pdk.request.get_header` changed to a faster implementation, not to fetch all headers every time it's called
[#8716](https://github.com/Kong/kong/pull/8716)
- Conditional rebuilding of router, plugins iterator and balancer on DP
[#8519](https://github.com/Kong/kong/pull/8519),
[#8671](https://github.com/Kong/kong/pull/8671)
- Made config loading code more cooperative by yielding
[#8888](https://github.com/Kong/kong/pull/8888)
- Use LuaJIT encoder instead of JSON to serialize values faster in LMDB
[#8942](https://github.com/Kong/kong/pull/8942)
- Move inflating and JSON decoding non-concurrent, which avoids blocking and makes DP reloads faster
[#8959](https://github.com/Kong/kong/pull/8959)
- Stop duplication of some events
[#9082](https://github.com/Kong/kong/pull/9082)
- Improve performance of config hash calculation by using string buffer and tablepool
[#9073](https://github.com/Kong/kong/pull/9073)
- Reduce cache usage in dbless by not using the kong cache for Routes and Services in LMDB
[#8972](https://github.com/Kong/kong/pull/8972)
#### Core
- Implemented delayed response in stream mode
[#6878](https://github.com/Kong/kong/pull/6878)
- Added `cache_key` on target entity for uniqueness detection.
[#8179](https://github.com/Kong/kong/pull/8179)
- Introduced the tracing API which compatible with OpenTelemetry API spec and
add build-in instrumentations.
The tracing API is intend to be used with a external exporter plugin.
Build-in instrumentation types and sampling rate are configuable through
`opentelemetry_tracing` and `opentelemetry_tracing_sampling_rate` options.
[#8724](https://github.com/Kong/kong/pull/8724)
- Added `path`, `uri_capture`, and `query_arg` options to upstream `hash_on`
for load balancing.
[#8701](https://github.com/Kong/kong/pull/8701)
- Introduced unix domain socket based `lua-resty-events` to
replace shared memory based `lua-resty-worker-events`.
[#8890](https://github.com/Kong/kong/pull/8890)
- Introduced a new router implementation `atc-router`,
which is written in Rust.
[#8938](https://github.com/Kong/kong/pull/8938)
- Introduce a new field for entities `table_name` that allows to specify a
table name. Before the name was deduced by the entity `name` attribute.
[#9182](https://github.com/Kong/kong/pull/9182)
- Added `headers` on active healthcheck for upstreams.
[#8255](https://github.com/Kong/kong/pull/8255)
- Target entities using hostnames were resolved when they were not needed. Now
when a target is removed or updated, the DNS record associated with it is
removed from the list of hostnames to be resolved.
[#8497](https://github.com/Kong/kong/pull/8497) [9265](https://github.com/Kong/kong/pull/9265)
- Improved error handling and debugging info in the DNS code
[#8902](https://github.com/Kong/kong/pull/8902)
- Kong will now attempt to recover from an unclean shutdown by detecting and
removing dangling unix sockets in the prefix directory
[#9254](https://github.com/Kong/kong/pull/9254)
#### Admin API
- Added a new API `/timers` to get the timer statistics.
[#8912](https://github.com/Kong/kong/pull/8912)
and worker info
[#8999](https://github.com/Kong/kong/pull/8999)
- `/` endpoint now includes plugin priority
[#8821](https://github.com/Kong/kong/pull/8821)
#### Hybrid Mode
- Add wRPC protocol support. Now configuration synchronization is over wRPC.
wRPC is an RPC protocol that encodes with ProtoBuf and transports
with WebSocket.
[#8357](https://github.com/Kong/kong/pull/8357)
- To keep compatibility with earlier versions,
add support for CP to fall back to the previous protocol to support old DP.
[#8834](https://github.com/Kong/kong/pull/8834)
- Add support to negotiate services supported with wRPC protocol.
We will support more services than config sync over wRPC in the future.
[#8926](https://github.com/Kong/kong/pull/8926)
- Declarative config exports happen inside a transaction in Postgres
[#8586](https://github.com/Kong/kong/pull/8586)
#### Plugins
- Sync all plugin versions to the Kong version
[#8772](https://github.com/Kong/kong/pull/8772)
- Introduced the new **OpenTelemetry** plugin that export tracing instrumentations
to any OTLP/HTTP compatible backend.
`opentelemetry_tracing` configuration should be enabled to collect
the core tracing spans of Kong.
[#8826](https://github.com/Kong/kong/pull/8826)
- **Zipkin**: add support for including HTTP path in span name
through configuration property `http_span_name`.
[#8150](https://github.com/Kong/kong/pull/8150)
- **Zipkin**: add support for socket connect and send/read timeouts
through configuration properties `connect_timeout`, `send_timeout`,
and `read_timeout`. This can help mitigate `ngx.timer` saturation
when upstream collectors are unavailable or slow.
[#8735](https://github.com/Kong/kong/pull/8735)
- **AWS-Lambda**: add support for cross account invocation through
configuration properties `aws_assume_role_arn` and
`aws_role_session_name`.[#8900](https://github.com/Kong/kong/pull/8900)
[#8900](https://github.com/Kong/kong/pull/8900)
- **AWS-Lambda**: accept string type `statusCode` as valid return when
working in proxy integration mode.
[#8765](https://github.com/Kong/kong/pull/8765)
- **AWS-Lambda**: separate aws credential cache by IAM role ARN
[#8907](https://github.com/Kong/kong/pull/8907)
- **Statsd**: :fireworks: **Newly open-sourced plugin capabilities**: All capabilities of [Statsd Advanced](https://docs.konghq.com/hub/kong-inc/statsd-advanced/) are now bundled in [Statsd](https://docs.konghq.com/hub/kong-inc/statsd).
[#9046](https://github.com/Kong/kong/pull/9046)
#### Configuration
- A new configuration item (`openresty_path`) has been added to allow
developers/operators to specify the OpenResty installation to use when
running Kong (instead of using the system-installed OpenResty)
[#8412](https://github.com/Kong/kong/pull/8412)
- Add `ipv6only` to listen options (e.g. `KONG_PROXY_LISTEN`)
[#9225](https://github.com/Kong/kong/pull/9225)
- Add `so_keepalive` to listen options (e.g. `KONG_PROXY_LISTEN`)
[#9225](https://github.com/Kong/kong/pull/9225)
- Add LMDB dbless config persistence and removed the JSON based
config cache for faster startup time
[#8670](https://github.com/Kong/kong/pull/8670)
- `nginx_events_worker_connections=auto` has a lower bound of 1024
[#9276](https://github.com/Kong/kong/pull/9276)
- `nginx_main_worker_rlimit_nofile=auto` has a lower bound of 1024
[#9276](https://github.com/Kong/kong/pull/9276)
#### PDK
- Added new PDK function: `kong.request.get_start_time()`
[#8688](https://github.com/Kong/kong/pull/8688)
- `kong.db.*.cache_key()` falls back to `.id` if nothing from `cache_key` is found
[#8553](https://github.com/Kong/kong/pull/8553)
### Fixes
#### Core
- The schema validator now correctly converts `null` from declarative
configurations to `nil`.
[#8483](https://github.com/Kong/kong/pull/8483)
- Only reschedule router and plugin iterator timers after finishing previous
execution, avoiding unnecessary concurrent executions.
[#8567](https://github.com/Kong/kong/pull/8567)
- External plugins now handle returned JSON with null member correctly.
[#8611](https://github.com/Kong/kong/pull/8611)
- Fixed an issue where the address of the environ variable could change but the code didn't
assumed it was fixed after init
[#8581](https://github.com/Kong/kong/pull/8581)
- Fix issue where the Go plugin server instance would not be updated after
a restart (e.g., upon a plugin server crash).
[#8547](https://github.com/Kong/kong/pull/8547)
- Fixed an issue on trying to reschedule the DNS resolving timer when Kong was
being reloaded.
[#8702](https://github.com/Kong/kong/pull/8702)
- The private stream API has been rewritten to allow for larger message payloads
[#8641](https://github.com/Kong/kong/pull/8641)
- Fixed an issue that the client certificate sent to upstream was not updated when calling PATCH Admin API
[#8934](https://github.com/Kong/kong/pull/8934)
- Fixed an issue where the CP and wRPC modules would cause Kong to crash when calling `export_deflated_reconfigure_payload` without a pcall
[#8668](https://github.com/Kong/kong/pull/8668)
- Moved all `.proto` files to `/usr/local/kong/include` and ordered by priority.
[#8914](https://github.com/Kong/kong/pull/8914)
- Fixed an issue that cause unexpected 404 error on creating/updating configs with invalid options
[#8831](https://github.com/Kong/kong/pull/8831)
- Fixed an issue that causes crashes when calling some PDK APIs
[#8604](https://github.com/Kong/kong/pull/8604)
- Fixed an issue that cause crashes when go PDK calls return arrays
[#8891](https://github.com/Kong/kong/pull/8891)
- Plugin servers now shutdowns gracefully when Kong exits
[#8923](https://github.com/Kong/kong/pull/8923)
- CLI now prompts with `[y/n]` instead of `[Y/n]`, as it does not take `y` as default
[#9114](https://github.com/Kong/kong/pull/9114)
- Improved the error message when Kong cannot connect to Cassandra on init
[#8847](https://github.com/Kong/kong/pull/8847)
- Fixed an issue where Vault Subschema wasn't loaded in `off` strategy
[#9174](https://github.com/Kong/kong/pull/9174)
- The Schema now runs select transformations before process_auto_fields
[#9049](https://github.com/Kong/kong/pull/9049)
- Fixed an issue where Kong would use too many timers to keep track of upstreams when `worker_consistency`=`eventual`
[#8694](https://github.com/Kong/kong/pull/8694),
[#8858](https://github.com/Kong/kong/pull/8858)
- Fixed an issue where it wasn't possible to set target status using only a hostname for targets set only by their hostname
[#8797](https://github.com/Kong/kong/pull/8797)
- Fixed pagination issue when getting to the second page while iterationg over a foreign key field using the DAO
[#9255](https://github.com/Kong/kong/pull/9255)
- Fixed an issue where cache entries of some entities were not being properly invalidated after a cascade delete
[#9261](https://github.com/Kong/kong/pull/9261)
- Running `kong start` when Kong is already running will no longer clobber
the existing `.kong_env` file [#9254](https://github.com/Kong/kong/pull/9254)
#### Admin API
- Support HTTP/2 when requesting `/status`
[#8690](https://github.com/Kong/kong/pull/8690)
#### Plugins
- Plugins with colliding priorities have now deterministic sorting based on their name
[#8957](https://github.com/Kong/kong/pull/8957)
- External Plugins: better handling of the logging when a plugin instance loses the instances_id in an event handler
[#8652](https://github.com/Kong/kong/pull/8652)
- **ACME**: `auth_method` default value is set to `token`
[#8565](https://github.com/Kong/kong/pull/8565)
- **ACME**: Added cache for `domains_matcher`