###################
Release Notes (4.5)
###################

4.5.6
=====

Fixes
-----

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

4.5.5
=====

Fixes
-----

* DR and backup restoration could stall when encountering transactions larger than 5 MB. <rdar://problem/28744048>
* The ``_valid`` field in layer status was missing when the client couldn't communicate with the cluster. <rdar://problem/27643333>
* Backup uploads to blobstore were not verifying their checksums. <rdar://problem/28417369>

4.5.4
=====

Fixes
-----

* 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>

4.5.3
=====

Fdbcli
------

* Fix: key and value output did not escape the backslash ('\\') character. <rdar://problem/27832343>
* Spaces in key and value output are no longer escaped. <rdar://problem/27832343>

Java-completable
----------------

* Fix: Range queries with a limit could sometimes return fewer items than requested. <rdar://problem/27879470>

Status
------

* Fix: backup and DR ``range_bytes_written`` and ``mutation_log_bytes_written`` are reset when backup or DR is restarted. <rdar://problem/27640774>
* Added ``_valid`` and ``_error`` fields to layer status. <rdar://problem/27643333>

4.5.2
=====

Fixes
-----

* 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.

4.5.1
=====

Features
--------

* 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.

Fixes
-----

* 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>

Fdbcli
------

* 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.

Fdbmonitor
----------

* The restart logic for dead child processes now uses a backoff. <rdar://problem/26100711>
* Added option to remove WD40 environment variables. <rdar://problem/26100669>
* ``fdbmonitor`` will create the lockfile directory if it doesn't exist. <rdar://problem/26502883>
* Added support for monitoring symbolic link changes in the configuration file path. <rdar://problem/26100843>
* Added an option to disable killing of child processes when the configuration changes. <rdar://problem/26100939>
* Added support for larger process IDs. <rdar://problem/26350469>

Backup
------

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

Bindings
--------

* 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>


Earlier release notes
---------------------
* :doc:`4.4 (API Version 440) <release-notes-440>`
* :doc:`4.3 (API Version 430) <release-notes-430>`
* :doc:`4.2 (API Version 420) <release-notes-420>`
* :doc:`4.1 (API Version 410) <release-notes-410>`
* :doc:`4.0 (API Version 400) <release-notes-400>`
* :doc:`3.0 (API Version 300) <release-notes-300>`
* :doc:`2.0 (API Version 200) <release-notes-200>`
* :doc:`1.0 (API Version 100) <release-notes-100>`
* :doc:`Beta 3 (API Version 23) <release-notes-023>`
* :doc:`Beta 2 (API Version 22) <release-notes-022>`
* :doc:`Beta 1 (API Version 21) <release-notes-021>`
* :doc:`Alpha 6 (API Version 16) <release-notes-016>`
* :doc:`Alpha 5 (API Version 14) <release-notes-014>`
