Release Notes


  • Same as 7.1.26 release with AVX enabled.


  • Released with AVX disabled.

  • Fixed status json to not report fdbserver processes as clients. (PR #9252)

  • Added detection of disconnection to satellite TLog in gray failure detection. (PR #9107)

  • Fixed (non)empty peeks stats in TLogMetrics. (PR #9074)

  • Fixed a data distribution bug where exclusions can become stuck because DD cannot build new teams. (PR #9035)

  • Added FoundationDB version to ProcessMetrics. (PR #9037)

  • Removed RocksDB read iterator destruction from the commit path. (PR #8971)

  • Added determinstic degraded server selection in gray failure detection. (PR #9001)

  • Fixed an interger overflow bug that causes fetching backup files to fail. (PR #8996)

  • Fixed a log router race condition that blocks remote tlogs forever. (PR #8966)

  • Fixed a backup worker assertion failure. (PR #8887)

  • Upgraded RocksDB to 7.7.3 version. (PR #8880)

  • Added byte limit for index prefetch. (PR #8802)

  • Added storage server read range bytes metrics. (PR #8724)

  • Added counters for single key clear requests. (PR #8792)

  • Added more RocksDB knobs. (PR #8713), (PR #8862), and (PR #9165)

  • Added a new network option “retain_client_library_copies” to keep the client library copies. (PR #8740)

  • Fixed a transaction_too_old error on storage servers when version vector is enabled. (PR #8710)


  • Same as 7.1.24 release with AVX enabled.


  • Released with AVX disabled.

  • Fixed a transaction log data corruption bug. (PR #8525), (PR #8562), and (PR #8647)

  • Fixed a rare data race in transaction logs when PEEK_BATCHING_EMPTY_MSG is enabled. (PR #8660)

  • Fixed a heap-use-after-free bug in cluster controller. (PR #8683)

  • Changed consistency check to report all corruptions. (PR #8571)

  • Fixed a rare storage server crashing bug after recovery. (PR #8468)

  • Added client knob UNLINKONLOAD_FDBCLIB to control deletion of external client libraries. (PR #8434)

  • Updated the default peer latency degradation percentile to 0.5. (PR #8370)

  • Made exclusion less pessimistic when warning about low space usage. (PR #8347)

  • Added storage server readrange and update latency metrics. (PR #8353)

  • Increased the default PEER_DEGRADATION_CONNECTION_FAILURE_COUNT value to 5s. (PR #8336)

  • Increased RocksDB block cache size. (PR #8274)


  • Same as 7.1.22 release with AVX enabled.


  • Released with AVX disabled.

  • Added new latency samples for GetValue, GetRange, QueueWait, and VersionWait in storage servers. (PR #8215)

  • Fixed a rare partial data write for TLogs. (PR #8210)

  • Added HTTP proxy support for backup agents. (PR #8193)

  • Fixed a memory bug of secondary queries in index prefetch. (PR #8195), (PR #8190)

  • Introduced STORAGE_SERVER_REBOOT_ON_IO_TIMEOUT knob to recreate SS at io_timeout errors. (PR #8123)

  • Fixed two TLog stopped bugs and a CC leader replacement bug. (PR #8081)

  • Added back RecoveryAvailable trace event for status’s seconds_since_last_recovered field. (PR #8068)


  • Same as 7.1.20 release with AVX enabled.


  • Released with AVX disabled.

  • Fixed missing localities for fdbserver that can cause cross DC calls among storage servers. (PR #7995)

  • Removed extremely spammy trace event in FetchKeys and fixed (PR #7934)

  • Fixed bugs when GRV proxy returns an error. (PR #7860)


  • Same as 7.1.18 release with AVX enabled.


  • Released with AVX disabled.

  • Added knobs for the minimum and the maximum of the Ratekeeper’s default priority. (PR #7820)

  • Fixed bugs in getRange of the special key space. (PR #7778), (PR #7720)

  • Added debug ID for secondary queries in index prefetching. (PR #7755)

  • Changed hostname resolving to prefer IPv6 addresses. (PR #7750)

  • Added more transaction debug events for prefetch queries. (PR #7732)


  • Same as 7.1.16 release with AVX enabled.


  • Released with AVX disabled.

  • Fixed a crash bug when cluster controller shuts down. (PR #7706)

  • Fixed a storage server failure when getReadVersion returns an error. (PR #7688)

  • Fixed unbounded status json generation. (PR #7680)

  • Fixed ScopeEventFieldTypeMismatch error for TLogMetrics. (PR #7640)

  • Added getMappedRange latency metrics. (PR #7632)

  • Fixed a version vector performance bug due to not updating client side tag cache. (PR #7616)

  • Fixed DiskReadSeconds and DiskWriteSeconds calculation in ProcessMetrics. (PR #7609)

  • Added Rocksdb compression and data size stats. (PR #7596)


  • Same as 7.1.14 release with AVX enabled.


  • Released with AVX disabled.

  • Fixed a high commit latency bug when there are data movement. (PR #7548)

  • Fixed the primary locality on the sequencer by obtaining it from cluster controller. (PR #7535)

  • Added StorageEngine type to StorageMetrics trace events. (PR #7546)

  • Improved hasIncompleteVersionstamp performance in Java binding to use iteration rather than stream processing. (PR #7559)


  • Same as 7.1.12 release with AVX enabled.


  • Released with AVX disabled.

  • Optimized out the version vector specific code on the client when version vector is disabled. (PR #7528)

  • Added pipelining for secondary queries in index prefetch. (PR #7507)

  • Fixed a connection failure bug when using DNS names. (PR #7478)

  • Fixed delays in version advancement that can be larger than knob MAX_COMMIT_BATCH_INTERVAL. (PR #7518)

  • Removed explicit degraded peer recovery in gray failure detection since this may be false positive. (PR #7466)

  • Fixed undefined behavior from accessing field of uninitialized object. (PR #7430)


  • Same as 7.1.10 release with AVX enabled.


  • Released with AVX disabled.

  • Fixed a sequencer crash when DC ID is a string. (PR #7393)

  • Fixed a client performance regression by removing unnecessary transaction initialization. (PR #7365)

  • Safely removed fdb_transaction_get_range_and_flat_map C API. (PR #7379)

  • Fixed an unknown error bug when hostname resolving fails. (PR #7380)


  • Same as 7.1.8 release with AVX enabled.


  • Released with AVX disabled.

  • Fixed a performance regression in network run loop. (PR #7342)

  • Added RSS bytes for processes in status json output and corrected available_bytes calculation. (PR #7348)

  • Added versionstamp support in tuples. (PR #7313)

  • Fixed some spammy trace events. (PR #7300)

  • Avoided a memory corruption bug by disabling streaming peeks. (PR #7288)

  • Fixed a hang bug in fdbcli exclude command. (PR #7268)

  • Fixed an issue that a remote TLog blocks peeks. (PR #7255)

  • Fixed a connection issue using hostnames. (PR #7264)

  • Added support of the reboot command in go bindings. (PR #7270)

  • Fixed several issues in profiling special keys using GlobalConfig. (PR #7120)

  • Fixed a stuck transaction system bug due to inconsistent recovery transaction version. (PR #7261)

  • Fixed an unknown_error crash due to not resolving hostnames. (PR #7254)

  • Fixed a heap-use-after-free bug. (PR #7250)

  • Fixed a performance issue that remote TLogs are sending too many pops to log routers. (PR #7235)

  • Fixed an issue that SharedTLogs are not displaced and leaking disk space. (PR #7246)

  • Fixed an issue that coordinatorsKey does not store DNS names. (PR #7203)

  • Fixed a sequential execution issue for fdbcli kill, suspend, and expensive_data_check commands. (PR #7211)


  • Same as 7.1.6 release with AVX enabled.


  • Released with AVX disabled.

  • Fixed a fdbserver crash when given invalid knob name. (PR #7189)

  • Fixed a storage server bug that read data after its failure. (PR #7217)


  • Fixed a fdbcli kill bug that was not killing in parallel. (PR #7150)

  • Fixed a bug that prevents a peer from sending messages on a previously incompatible connection. (PR #7124)

  • Added rocksdb throttling counters to trace event. (PR #7096)

  • Added a backtrace before throwing serialization_failed. (PR #7155)


  • Fixed a bug that prevents client from connecting to a cluster. (PR #7060)

  • Fixed a performance bug that overloads Resolver CPU. (PR #7068)

  • Optimized storage server performance for “get range and flat map” feature. (PR #7078)

  • Optimized both Proxy performance and Resolver (when version vector is enabled) performance. (PR #7076)

  • Fixed a key size limit bug when using tenants. (PR #6986)

  • Fixed operation_failed thrown incorrectly from transactions. (PR #6993)

  • Fixed a version vector bug when GRV cache is used. (PR #7057)

  • Fixed orphaned storage server due to force recovery. (PR #7028)

  • Fixed a bug that a storage server reads stale cluster ID. (PR #7026)

  • Fixed a storage server exclusion status bug that affects wiggling. (PR #6984)

  • Fixed a bug that relocate shard tasks move data to a removed team. (PR #7023)

  • Fixed recruitment thrashing when there are temporarily multiple cluster controllers. (PR #7001)

  • Fixed change feed deletion due to multiple sources race. (PR #6987)

  • Fixed TLog crash if more TLogs are absent than the replication factor. (PR #6991)

  • Added hostname DNS resolution logic for cluster connection string. (PR #6998)

  • Fixed a limit bug in indexPrefetch. (PR #7005)


  • Added logging measuring commit compute duration. (PR #6906)

  • RocksDb used aggregated property metrics for pending compaction bytes. (PR #6867)

  • Fixed a perpetual wiggle bug that would not react to a pause. (PR #6933)

  • Fixed a crash of data distributor. (PR #6938)

  • Added new c libs to client package. (PR #6921)

  • Fixed a bug that prevents a cluster from fully recovered state after taking a snapshot. (PR #6892)


  • Fixed failing upgrades due to non-persisted initial cluster version. (PR #6864)

  • Fixed a client load balancing bug because ClientDBInfo may be unintentionally not set. (PR #6878)

  • Fixed stuck LogRouter due to races of multiple PeekStream requests. (PR #6870)

  • Fixed a client-side infinite loop due to provisional GRV Proxy ID not set in GetReadVersionReply. (PR #6849)




  • Added USE_GRV_CACHE transaction option to allow read versions to be locally cached on the client side for latency optimizations. (PR #5725) (PR #6664)

  • Added “get range and flat map” feature with new APIs (see Bindings section). Storage servers are able to generate the keys in the queries based on another query. With this, upper layer can push some computations down to FDB, to improve latency and bandwidth when read. (PR #5609), (PR #6181), etc..





  • Added cluster.storage_wiggler field report storage wiggle stats (PR #6219)


  • C: Added fdb_transaction_get_range_and_flat_map function to support running queries based on another query in one request. (PR #5609)

  • Java: Added Transaction.getRangeAndFlatMap function to support running queries based on another query in one request. (PR #5609)

Other Changes

  • OpenTracing support is now deprecated in favor of OpenTelemetry tracing, which will be enabled in a future release. (PR #6478)

  • Changed memory option to limit resident memory instead of virtual memory. Added a new memory_vsize option if limiting virtual memory is desired. (PR #6719)

  • Change perpetual storage wiggle to wiggle the storage servers based on their created time. (PR #6219)

Earlier release notes