
# Release Notes of v1.11.4

The following are the highlights in this release:

## Support Capacity Unit Calculation

To meet the demand for cost and pricing of Pegasus, we introduce "Capacity Unit" in this release. This concept is equivalent to AWS DynamoDB's "Request Unit", and HBase's "Capacity Unit".

Related PR: [#318](https://github.com/XiaoMi/pegasus/pull/318), [XiaoMi/rdsn#239](https://github.com/XiaoMi/rdsn/pull/239), [XiaoMi/rdsn#253](https://github.com/XiaoMi/rdsn/pull/253)
Related Docs: TBD
Related Issues:

## Bug Fixes

- bugfix: too much error logs by write-throttling reject ([XiaoMi/rdsn#243](https://github.com/XiaoMi/rdsn/pull/243))

- bugfix: add debug logs for failure detection ([XiaoMi/rdsn#256](https://github.com/XiaoMi/rdsn/pull/256))

- bugfix: fix simple_logger gc log file problem ([XiaoMi/rdsn#258](https://github.com/XiaoMi/rdsn/pull/258))

- bugfix: http_message_parser ([XiaoMi/rdsn#259](https://github.com/XiaoMi/rdsn/pull/259))

- bugfix: pegasus_server: fix set usage scenario problem when open db ([#334](https://github.com/XiaoMi/pegasus/pull/334))

## Perf-Counters

The new perf counters introduced are:

## Upgrades from the previous version

```ini
[pegasus.server]
...
perf_counter_read_capacity_unit_size = 4096
perf_counter_write_capacity_unit_size = 4096

[pegasus.collector]
...
cu_stat_app = stat
cu_fetch_interval_seconds = 8

[task.RPC_RRDB_RRDB_PUT]
...
profiler::size.request.server = true

[task.RPC_RRDB_RRDB_MULTI_PUT]
...
profiler::size.request.server = true

[task.RPC_RRDB_RRDB_GET_ACK]
...
profiler::size.response.server = true

[task.RPC_RRDB_RRDB_MULTI_GET_ACK]
...
profiler::size.response.server = true
```
