Added
- Added
openfga_iter_query_duration_mshistogram metric to track storage iterator query latency across all storage backends, labeled bysuccess. The metric is recorded in each backend'sfetchBufferafter error classification: infrastructure failures are labeledsuccess=false; expected storage outcomes (ErrNotFound,ErrCollision,ErrInvalidWriteInput) are labeledsuccess=true. #3030
Changed
- Changed the ListObjects pipeline intersection algorithm to improve intersection performance. #3031
- [BREAKING] The Playground now only supports the
noneauthentication method. Running the Playground withpresharedkey authentication is no longer supported. The server will error and not start if it detects this combination.
Deprecated
- The built-in OpenFGA Playground is intended for development purposes only and is deprecated. It will be removed entirely in a future release.
- The
--playground-portflag andOPENFGA_PLAYGROUND_PORTenvironment variable are deprecated. Use--playground-addr(OPENFGA_PLAYGROUND_ADDR) instead to specify the fullhost:portaddress for the Playground server. When--playground-addris not set, the Playground binds to127.0.0.1using the port from--playground-port.
Fixed
- Fixed Write operations failing with
invalid input syntax for type integer(SQLSTATE 22P02) when PostgreSQL is behind PgBouncer or a connection pooler using the simple query protocol. #3014 - Fixed PostgreSQL
HandleSQLErrorandGetStorereturning a wrapped error instead ofstorage.ErrNotFoundwhen no rows are found. When using pgxpool directly,QueryRow().Scan()returnspgx.ErrNoRows, notsql.ErrNoRows; both are now handled. #3014 - Fixed the possibility of deadlocks within the ListObjects pipeline algorithm. Also added short-circuit enhancements that will reduce latency and message processing in certain scenarios. Cyclical edges now use as much memory as necessary to process deep and wide data hierarchies without the risk of a deadlock. #3028
Full Changelog: v1.13.1...v1.14.0