Skip to content

Commit 0c6f253

Browse files
authored
Merge pull request #3700 from openziti/batch-revocations
Coalesce OIDC JWT revocations to reduce controller write pressure. Fixes #3681
2 parents 24dc11c + 62e2916 commit 0c6f253

File tree

20 files changed

+2242
-2679
lines changed

20 files changed

+2242
-2679
lines changed

CHANGELOG.md

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
## What's New
44

5-
This is the next major version release of OpenZiti, following the 1.0 release in April 2024.
6-
Of particular note is that HA controllers are now considered ready for general use.
5+
This is the next major version release of OpenZiti, following the 1.0 release in April 2024.
6+
Of particular note is that HA controllers are now considered ready for general use.
77
This release also introduces a new permissions model, OIDC/JWT token-based enrollment,
88
clustering performance improvements, and a number of other features and fixes. Because
99
some of these changes are not backwards compatible with older routers, we're marking this
@@ -98,6 +98,7 @@ when running HA. Legacy API and service session are now deprecated and will be r
9898
* Router-to-controller control channels now support multiple underlays with priority-based message routing
9999
* The dialing identity's ID and name are now forwarded to the hosting SDK
100100
* Controllers can now dial routers to establish control channels, enabling connectivity when routers are behind firewalls (Beta)
101+
* Refresh-token revocations are now batched and best-effort, removing the database/raft bottleneck on token refreshes
101102

102103
## Basic Permission System (BETA)
103104

@@ -814,7 +815,8 @@ updated to surface the circuit id when a dial failure happens.
814815
Router-to-controller control channels now support multiple underlays with priority-based message routing.
815816
This allows time-sensitive control messages (heartbeats, routing, circuit requests) to be separated from
816817
operational data (metrics, inspections) across dedicated TCP connections, preventing bulk operations from
817-
delaying user-affecting control plane traffic.
818+
delaying user-affecting control plane traffic. This feature does not yet allow specifying multiple
819+
network interfaces to use, to load balance data across.
818820

819821
## Dialing Identity Forwarded to Hosting SDK
820822

@@ -944,6 +946,24 @@ including service listeners, connections, and terminator state.
944946
* Alert Events
945947
* Controller-Initiated Control Channel Dials
946948
949+
## Revocation System Improvements
950+
951+
When a session is refreshed, the old refresh token's revocation is no longer created
952+
synchronously through raft. Instead, revocations are queued in memory and flushed in
953+
batches on a configurable interval. This removes the database and raft as a bottleneck
954+
on token refreshes. If the old token is close to expiring, the revocation is skipped
955+
entirely.
956+
957+
New configuration tunables under `edge.oidc`:
958+
959+
| Key | Default | Description |
960+
|-----|---------|-------------|
961+
| `revocationMinTokenLifetime` | unset | Skip revocation if the old token expires within this duration (must be < 50% of `refreshTokenDuration`) |
962+
| `revocationBucketInterval` | `1m` | Bucket window for batching revocations before flushing through raft |
963+
| `revocationBucketMaxSize` | `200` | Max revocations per raft entry |
964+
| `revocationMaxQueued` | `25000` | Max revocations queued in memory before dropping |
965+
| `revocationEnforcerFrequency` | `1m` | How often expired revocations are purged (leader only) |
966+
947967
## Component Updates and Bug Fixes
948968
949969
* github.com/openziti/agent: [v1.0.31 -> v1.0.33](https://github.com/openziti/agent/compare/v1.0.31...v1.0.33)
@@ -961,16 +981,16 @@ including service listeners, connections, and terminator state.
961981
* [Issue #167](https://github.com/openziti/edge-api/issues/167) - Add ctrlChanListeners to router types
962982
* [Issue #164](https://github.com/openziti/edge-api/issues/164) - Add permissions list to identity
963983
964-
* github.com/openziti/foundation/v2: [v2.0.72 -> v2.0.89](https://github.com/openziti/foundation/compare/v2.0.72...v2.0.89)
984+
* github.com/openziti/foundation/v2: [v2.0.72 -> v2.0.90](https://github.com/openziti/foundation/compare/v2.0.72...v2.0.90)
965985
* [Issue #472](https://github.com/openziti/foundation/issues/472) - Add support for multi-bit set/get to AtomicBitSet
966986
* [Issue #464](https://github.com/openziti/foundation/issues/464) - Add support for -pre in versions
967987
* [Issue #455](https://github.com/openziti/foundation/issues/455) - Correctly close goroutine pool when external close is signaled
968988
* [Issue #452](https://github.com/openziti/foundation/issues/452) - Goroutine pool with a min worker count of 1 can drop to 0 workers due to race condition
969989
970-
* github.com/openziti/identity: [v1.0.111 -> v1.0.127](https://github.com/openziti/identity/compare/v1.0.111...v1.0.127)
990+
* github.com/openziti/identity: [v1.0.111 -> v1.0.128](https://github.com/openziti/identity/compare/v1.0.111...v1.0.128)
971991
* [Issue #68](https://github.com/openziti/identity/issues/68) - Shutdown file watcher when stopping identity watcher
972992
973-
* github.com/openziti/metrics: [v1.4.2 -> v1.4.4](https://github.com/openziti/metrics/compare/v1.4.2...v1.4.4)
993+
* github.com/openziti/metrics: [v1.4.2 -> v1.4.5](https://github.com/openziti/metrics/compare/v1.4.2...v1.4.5)
974994
* [Issue #58](https://github.com/openziti/metrics/issues/58) - Add GaugeFloat64 support
975995
* [Issue #56](https://github.com/openziti/metrics/issues/56) - underlying resources of reference counted meters are not cleaned up when reference count hits zero
976996
@@ -1000,13 +1020,13 @@ including service listeners, connections, and terminator state.
10001020
* [Issue #807](https://github.com/openziti/sdk-golang/issues/807) - Don't send close from rxer to avoid blocking
10011021
* [Issue #800](https://github.com/openziti/sdk-golang/issues/800) - Tidy create service session logging
10021022
1003-
* github.com/openziti/secretstream: [v0.1.39 -> v0.1.48](https://github.com/openziti/secretstream/compare/v0.1.39...v0.1.48)
1023+
* github.com/openziti/secretstream: [v0.1.39 -> v0.1.49](https://github.com/openziti/secretstream/compare/v0.1.39...v0.1.49)
10041024
* github.com/openziti/storage: [v0.4.26 -> v0.4.39](https://github.com/openziti/storage/compare/v0.4.26...v0.4.39)
10051025
* [Issue #122](https://github.com/openziti/storage/issues/122) - StringFuncNode has incorrect nil check, allowing panic
10061026
* [Issue #120](https://github.com/openziti/storage/issues/120) - Change post tx commit constraint handling order
10071027
* [Issue #119](https://github.com/openziti/storage/issues/119) - Add ContextDecorator API
10081028
1009-
* github.com/openziti/transport/v2: [v2.0.188 -> v2.0.214](https://github.com/openziti/transport/compare/v2.0.188...v2.0.214)
1029+
* github.com/openziti/transport/v2: [v2.0.188 -> v2.0.215](https://github.com/openziti/transport/compare/v2.0.188...v2.0.215)
10101030
* [Issue #31](https://github.com/openziti/transport/issues/31) - ipv6 Transport Address Parsing
10111031
* [Issue #149](https://github.com/openziti/transport/issues/149) - Archive transwarp code
10121032
@@ -1015,6 +1035,9 @@ including service listeners, connections, and terminator state.
10151035
10161036
* github.com/openziti/go-term-markdown: v1.0.1 (new)
10171037
* github.com/openziti/ziti/v2: [v1.6.8 -> v2.0.0](https://github.com/openziti/ziti/compare/v1.6.8...v2.0.0)
1038+
* [Issue #3681](https://github.com/openziti/ziti/issues/3681) - coalesce OIDC JWT revocations to reduce controller write pressure
1039+
* [Issue #3683](https://github.com/openziti/ziti/issues/3683) - add fablab test for testing flow control changes over a longer term
1040+
* [Issue #3673](https://github.com/openziti/ziti/issues/3673) - revocation build-up in db and rdm
10181041
* [Issue #3674](https://github.com/openziti/ziti/issues/3674) - Update to Go 1.26
10191042
* [Issue #3496](https://github.com/openziti/ziti/issues/3496) - MFA TOTP Enrollment During OIDC Authentication Does Not Work
10201043
* [Issue #3609](https://github.com/openziti/ziti/issues/3609) - Stabilize terminator creation test for 2.0

0 commit comments

Comments
 (0)