Release Notes (4.5)



  • Disabled debug SevError trace event when applyMutations is cancelled
  • Fixed problem skipping publishable files
  • Publish debug symbols for files for all platforms





  • Creating transactions with the multi-version client was not thread safe. <rdar://problem/28546688>
  • The status latency probe is now performed separately from other status gathering code. <rdar://problem/28119480>
  • Watches could fire early needlessly and in rare cases may not fire when they should. <rdar://problem/27957628>
  • Change the type of the query_queue_max attribute in status from an object to an integer. <rdar://problem/26709846>
  • fdbserver arguments were not properly preserved in log output. <rdar://problem/28407513>
  • Increase priority of getting read versions over commits on the master proxy.
  • Java: Inserting a non-Long number into a Tuple and reading it back out threw a ClassCastException. <rdar://problem/28260594>







  • Fixed thread safety issues with backup and DR.
  • Fixed a load balancing problem when a machine was already failed when a client starts.
  • Golang: adding an explicit conflict key included the key immediately following in the conflict range.



  • When a process is added to a cluster, it will be given data at a much faster rate. <rdar://problem/24075759>
  • Improved the speed at which the cluster reacts to a failed process.


  • Calculating status in large databases could cause slow tasks. <rdar://problem/25805251>
  • Fdbrestore printed an error when passed the --help flag. <rdar://problem/26126793>
  • A multi-version API external client that was a duplicate could cause a crash at client shutdown. <rdar://problem/25838039>
  • A multi-version API external client that failed to load would cause a crash at client shutdown. <rdar://problem/26611919>
  • Status could report an incorrect database size in rare scenarios. <rdar://problem/25295683>
  • Data distribution would stop working (both exclude and new recruitment) if a call to commit on the storage server could hang indefinitely. <rdar://problem/26276166>
  • fdbcli would quit on some commands that were not errors or continue after some real errors when run with --exec. <rdar://problem/25755317>
  • Trace files generated by clients using the multi-version API could have name collisions. <rdar://problem/25884486>


  • Client issues are now aggregated by name and have an addresses list. Status details prints a truncated view of these. <rdar://problem/23469072>
  • Status json lists incompatible clients. <rdar://problem/24415680>
  • Status json includes processes that couldn’t be reached in the processes list. <rdar://problem/26703551>
  • Exclude does not run if it will drop free space below 10%. This check can be bypassed by adding the word FORCE as a parameter. <rdar://problem/22922266>
  • Added write mode, which must be turned on to set or clear keys. <rdar://problem/25779641>
  • Added the kill command for killing processes.



  • Blobstore URLs can now contain multiple IP addresses, separated by commas, over which to load balance requests. <rdar://problem/23095572>


  • Add error predicate testing to client bindings. This new functionality should help complex use cases write correct transaction retry loops where dispatching on error classes is needed. <rdar://problem/24492860>

Other Changes

  • Maximum shard size increased from 100MB to 500MB. <rdar://problem/21225031>
  • Support backslash as an escape character for semicolons and backslashes when setting network options using environment variables. <rdar://problem/23902390>
  • Add logGroup attribute to rolled trace events. <rdar://problem/25726509>
  • Calling get range with a begin key == \xff\xff/worker_interfaces will return a list of serialized worker interfaces. Calling set with the key \xff\xff/reboot_worker and a value which is a serialized worker interface will reboot that process. <rdar://problem/26101019>