Releases: openfga/openfga
Releases · openfga/openfga
v1.9.2
Changed
- Update ReverseExpand to use a LinkedList to track its relation stack for performance. #2542
- Update ReverseExpand to use a intersection and exclusion handler to fast path check calls. #2543
- Deduplicate queries more effectively in ReverseExpand. #2567
- Update go version to 1.24.5 #2577
Fixed
- Shared iterator race condition and deadlock. #2544
- Fixed bug in how experimental ReverseExpand is handling Intersection nodes. #2556
- Migration command now respects logging configuration options. #2541
- Fixed message in log and slight refactor in list objects intersection/exclusion. #2566
- Shadow list objects' check resolver should use its own cache. #2574
- Improve performance for list objects intersection/exclusion with
enable-list-objects-optimizations
flag. #2569
Full Changelog
- 04404e7 Fix migrate command logging options (#2565)
- db65b2a Fix: experimental reverse_expand must traverse all DirectEdges from Intersection (#2556)
- 5de6f1d Log main and shadow ListObjects query latencies (#2539)
- 37d5ee1 Update changelog to prep for 1.9.1 release (#2580)
- 3ab5a75 Update changelog to prep for 1.9.2 release (#2582)
- dbbb217 Update stack funcs to use values, not pointers (#2555)
- 5621500 chore(deps): bump the dependencies group with 2 updates (#2546)
- d4a72c4 chore(deps): bump the dependencies group with 2 updates (#2576)
- 8b3f0ed chore: add datastore_query_count to shadow list objects logger (#2562)
- 2c4e7ab chore: shared iterator benchmark cleanup (#2552)
- 11ac7e4 chore: update go version to 1.24.5 (#2577)
- 8e38786 feat: add list objects intersection exclusion (#2543)
- 336306e feat: list objects weighted graph vs non-weighted graph count (#2524)
- b8c9b63 feat: shadow list objects resolver should use its own cache (#2574)
- 6a81236 fix data race around wait group in shared iterator (#2561)
- 741ebe9 fix: Don't run shadow ListObjects query for request weight=∞ (#2572)
- 5478807 fix: Reduce number of DB queries needed in ReverseExpand (#2567)
- 0b36242 fix: add shared iterator count decrement when the timer evicts the iterator (#2550)
- 1301ec1 fix: list objects intersection exclusion improvements (#2566)
- 12596fc fix: race condition in throttler test (#2545)
- 29d6dbc fix: shared iterator race and deadlock (#2544)
- db462b6 fix: update shadow list objects env var config (#2547)
- 1db4bae fix: use pool per intersection/exclusion so as not to block (#2569)
- 516be81 perf: create per datastore operation caches for shared iterators (#2549)
- 791b0f8 perf: improve cloning performance of shared iterator (#2551)
- 48be31a perf: shared iterator performance refactor (#2553)
- 8522c0d reduce the time that an await mutex lock is held in the shared iterator (#2557)
- e6038fd refactor: use a linked list in ReverseExpand instead of copying slices (#2542)
- e383258 short circuit iteratorsToUserset (#2568)
- ca1182c validate that shadow mode is executed when main context cancelled (#2548)
v1.9.0
Added
- Add separate reverse_expand resolution path utilizing the weighted graph. Gated behind
enable-list-objects-optimizations
experimental flag. #2529
Changed
- SQLite based iterators will load tuples only when needed (lazy loading). #2511
- Shared iterator improvement to reduce lock contention when creating and cloning. #2530
- Enable experimental list object optimizations in shadow mode using flag
enable-list-objects-optimizations
. #2509 - Invalidated iterators will be removed from cache if an invalid entity entry is found allowing for less time to refresh. #2536
Fixed
- Cache Controller was always completely invalidating. #2522
Full Changelog
- cefb4ce CICD: skip revive var-naming rule (#2533)
- 974bb2a Feat/list objects shadow mode (#2509)
- a6cfee2 Fix quoting for GitHub Actions outputs (#2512)
- 4131a12 Move SQLite to lazy (#2511)
- f8ebe21 Revert "fix: restore conditional checks for connection pool timeout settings" (#2505)
- 3533e1e Update README.md (#2521)
- d45a6e1 Update changelog to prep for 1.9.0 release (#2540)
- ebdc157 chore(deps): bump github.com/go-viper/mapstructure/v2 from 2.2.1 to 2.3.0 (#2531)
- 242e3ad chore(deps): bump sigstore/cosign-installer from 3.9.0 to 3.9.1 in the dependencies group (#2523)
- 27398f9 chore(deps): bump the dependencies group across 1 directory with 4 updates (#2513)
- 6587dd9 chore(deps): bump the dependencies group with 2 updates (#2534)
- 72a17a2 chore: add local check resolver to reverse expand (#2516)
- 73e5c5d chore: bump grpc-gateway and go-retryablehttp pkgs (#2526)
- ed0848f chore: bump mysql driver + grpc packages (#2517)
- b581691 clean: Remove fanin code (#2514)
- 6300686 docs(v1.8.16): add v1.8.16 release notes to CHANGELOG (#2510)
- 804a268 feat: ReverseExpand with weighted graph, non-infinite weights (#2529)
- 0aff359 feat: add GetEdgesForListObjects to typesystem (#2468)
- 90fdaeb feat: typesystem edges for intersection and exclusion (#2518)
- 2c3e3af feat: typesystem to return userset for listobject (#2525)
- 7d9d284 fix-iterator-cache-invalidation (#2536)
- d5ec30f fix: cache controller invalidation logic (#2522)
- dbfe47c fix: prevent db connections from prematurely closing (#2508)
- 4a2dfda fix: restore conditional checks for connection pool timeout settings (#2501)
- e5ccafb fix: shadow resolver causing infinite loop for list objects (#2532)
- b8d1263 fix: shared iterator metrics (#2527)
- e8cd761 perf: further reduce lock contention in shared iterators (#2530)
- cd8a850 performance: refactored the shared iterator and shared iterator datastore (#2478)
- dd1d716 skip shadow ListObjects query when main query is slow (#2537)
v1.8.16
v1.8.15
v1.8.14
Changelog
1.8.14 - 2025-06-10
Fixed
- Performance improve for SQL based datastore by reducing connection usage during IsReady check. #2483
- SQL drivers now respect zero value for MaxOpenConns, ConnMaxIdleTime, ConnMaxLifetime. #2484
- When
enable-check-optimizations
experiment flag is enabled, incorrect check for model with recursion and user is assigned to more than 100 groups due to iteratorToUserset not handling multiple messages incorrectly. #2491 - Correlate storage context with caller's context. #2292
v1.8.13
Changelog
1.8.13 - 2025-05-22
Added
- New
DatastoreThrottle
configuration for Check, ListObjects, ListUsers. #2452 - Added pkg
migrate
to expose.RunMigrations()
for programmatic use. #2442 - Performance optimization by allowing datastore query iterator to be shared by multiple consumers. This can be enabled via
OPENFGA_SHARED_ITERATOR_ENABLED
. #2433, #2410 and #2423 - Upgraded all references of Postgres to v17. #2407
Fixed
- Ensure
fanin.Stop
andfanin.Drain
are called for all clients which may create blocking goroutines. #2441 - Prevent throttled Go routines from "leaking" when a request context has been canceled or deadline exceeded. #2450
- Filter context tuples based on type restrictions for ReadUsersetTuples. CVE-2025-48371
v1.8.12
Changelog
1.8.12 - 2025-05-12
Changed
DefaultResolveNodeBreadthLimit
changed from 100 to 10 in order to reduce connection contention. #2425- PostgreSQL and MySQL based iterators will load tuples only when needed (lazy loading). #2425
Fixed
- Replace hardcoded Prometheus datasource UID (
PBFA97CFB590B2093
) with${DS_PROMETHEUS}
intelemetry/grafana/dashboards/openfga.json
. This allows the Grafana dashboard to correctly reference the dynamic Prometheus datasource, resolving issues with improper binding. #2287 - Handle case where iterator is stopped more than once for
current_iterator_cache_count
. #2409 - Fix deadlock when number of SQL datastore connections is less than Resolve Max Breadth. #2425
- Improved
panic()
handling fromgo
routines: #2379, #2385, #2405, #2428
v1.8.11
Changed
- Update go version to 1.24.2 #2404
Fixed
- Do not save to check query cache when result indicates cycle. CVE-2025-46331
v1.8.10
Added
- Added "dispatch_count" attribute to batch-check request logs. #2369
- Added "dispatch_count" histogram metric to batch-check requests. #2369
- Added "request.throttled" boolean for check and batch-check request logs. #2369
- Added "throttled_requests_count" metric to batch-check requests. #2369
- Surface partial metrics on check resolutions #2371
- Added "current_iterator_cache_count" gauge metric to current number of iterator cache. #2397
- Adds cached iterators to ListObjects #2388
Changed
- The serverconfig was moved from internal to pkg to make it available to external users of this package. #2382
Fixed
- Add limit to goroutine concurrency when processing iterator #2386
- Fixes case where cached_datastore.ReadStartingWithUser generated bad cache invalidation keys. #2381
Changelog
- 9b59744 Reduce fast path batch threshold from 1000 to 100 (#2394)
- 6183266 Surface partial metrics on check resolutions (#2371)
- 73dceae adds total dispatch count to context tags for batch check (#2369)
- 2e1d06e chore(deps): bump the dependencies group across 1 directory with 5 updates (#2367)
- f1c51ff chore(deps): bump the dependencies group with 2 updates (#2366)
- b95fe5f chore(deps): bump the dependencies group with 2 updates (#2374)
- de5f9aa chore(deps): bump the dependencies group with 2 updates (#2390)
- e976cfa chore(deps): bump the dependencies group with 2 updates (#2401)
- 3380a71 chore: move cache key logic to separate file (#2393)
- 0f1cd09 chore: update changelog in prep for v1.8.10 (#2399)
- 08d576b feat: Add Iterator Cache to ListObjects (#2388)
- aeafa92 feat: Add processDispatches panic error handling (#2376)
- b71cf4d feat: Add processUsersets panic error handling (#2378)
- 580d860 feat: add counters on current number of iterator cache (#2397)
- c32c2db feat: add exclusion panic error handling (#2384)
- 5e194ab feat: move serverconfig out of internal (#2382)
- eb8c657 fix: add goroutine concurrency limit for iterator processing (#2386)
- 94085ab fix: auth0 fga rebranding (#2402)
- d3bfad8 fix: cached_datastore.ReadStartingWithUser cache keys (#2381)
- 07ccbd0 fix: increase discard count on
.Next()
(#2391) - 4e2fd93 refactor: rename files/methods related to iterator cache (#2368)
- d5ff674 refactor: rename sharedCheckResources -> sharedDatastoreResources (#2387)
v1.8.9
Added
- Updated grpc logs for the healthcheck service to log at the Debug level instead of at the Info level. #2340
- Separate out experimental list objects optimization flag (
enable-list-objects-optimizations
) from experimental check optimization flag (enable-check-optimizations
) to allow individual optimization. #2341.
Changelog
- a24f0fe chore(deps): bump the dependencies group with 3 updates (#2347)
- 09fb1b7 chore(deps): bump the dependencies group with 5 updates (#2329)
- ee82979 chore(deps): bump the dependencies group with 5 updates (#2346)
- 3d34d74 docs(v1.8.9): add v1.8.9 release notes to CHANGELOG (#2348)
- 3e7e9e5 feat: Downgrade grpc logs for healthcheck service to Debug level (#2340)
- 3315358 feat: add list object experimental flag (#2341)