# Release Notes

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

- API version updated to 450. There are no behavior changes in this API version. See the API version upgrade guide for upgrade details.
- 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

- 4.4 (API Version 440)
- 4.3 (API Version 430)
- 4.2 (API Version 420)
- 4.1 (API Version 410)
- 4.0 (API Version 400)
- 3.0 (API Version 300)
- 2.0 (API Version 200)
- 1.0 (API Version 100)
- Beta 3 (API Version 23)
- Beta 2 (API Version 22)
- Beta 1 (API Version 21)
- Alpha 6 (API Version 16)
- Alpha 5 (API Version 14)