Configuration
=============

Global configuration of the cache-chroniclemap libModule is done in the `gerrit.config` file in the
site's etc directory.

Information about gerrit caches mechanism can be found in the relevant
[documentation section](https://charm.cs.illinois.edu/gerrit/Documentation/config-gerrit.html#cache).

Chronicle-map supports most of the cache configuration parameters, such as:

* `maxAge`: Maximum age to keep an entry in the cache.
[Gerrit docs](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#cache.name.maxAge)

* `refreshAfterWrite`: Duration after which we asynchronously refresh the cached value.
[Gerrit docs](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#cache.name.refreshAfterWrite)

* `diskLimit`: Total size in bytes of the keys and values stored on disk.
Defaults are per-cache and can be found in the relevant documentation:
[Gerrit docs](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#cache.name.diskLimit)

  *NOTE*: a per gerrit documentation, a positive value is required to enable disk
  storage for the cache. However, the provided value cannot be used to limit the
  size of the file, since that is the result of chronicle-map pre-allocation and
  it is a function of the number of entries, average sizes and bloat factor,
  rather than the number of values stored in it.

Chronicle-map implementation however might require some additional configuration

## Configuration parameters

```cache.<name>.avgKeySize```
:   The average number of bytes to be allocated for the key of this cache.
If key is a boxed primitive type, a value interface or Byteable subclass, i. e.
if key size is known statically, it is automatically accounted by chronicle-map.
In this case, this value will be ignored.

[Official docs](
https://www.javadoc.io/doc/net.openhft/chronicle-map/3.8.0/net/openhft/chronicle/map/ChronicleMapBuilder.html#averageKeySize-double-
)

```cache.<name>.avgValueSize```
:   The average number of bytes to be allocated for a value of this cache.
If key is a boxed primitive type, a value interface or Byteable subclass, i. e.
if key size is known statically, it is automatically accounted by chronicle-map.
In this case, this value will be ignored.

[Official docs](
https://www.javadoc.io/doc/net.openhft/chronicle-map/3.8.0/net/openhft/chronicle/map/ChronicleMapBuilder.html#averageValueSize-double-
)

```cache.<name>.maxEntries```
: The number of entries that this cache is going to hold, _at most_.
The actual number of entries needs to be less or equal to this value.

[Official docs](
https://www.javadoc.io/doc/net.openhft/chronicle-map/3.8.0/net/openhft/chronicle/map/ChronicleMapBuilder.html#entries-long-
)

```cache.<name>.maxBloatFactor```
: the maximum number of times this cache is allowed to grow in size beyond the
configured target number of entries.

Set this value to the theoretical maximum of stored entries, divided by the
configured entries.

Chronicle Map will allocate memory until the actual number of entries inserted
divided by the number configured through `maxEntries` is not
higher than the configured `maxBloatFactor`.

Chronicle Map works progressively slower when the actual size grows far beyond
the configured size, so the maximum possible maxBloatFactor() is artificially
limited to 1000. Default: *1*

[Official docs](
https://www.javadoc.io/doc/net.openhft/chronicle-map/3.8.0/net/openhft/chronicle/hash/ChronicleHashBuilder.html#maxBloatFactor-double-
)

* `cache.<name>.percentageFreeSpaceEvictionThreshold`
: The percentage of free space in the last available expansion of chronicle-map
beyond which cold cache entries will start being evicted.

Since the eviction routine is scheduled as background task every 30 seconds,
this value should always be < 100. This is to allow for additional entries to be
inserted into the cache between the execution of two eviction runs.

How much that margin is, depends on how fast the cache can increase between two
eviction runs: caches that populate more quickly might need a lower value, and
vice-versa.

Default: *90*

### Defaults

Unless overridden by configuration, sensible default values are be provided for
[standard caches](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#cache_names).

Please note that even though defaults allow an out-of-the-box usage of the
chronicle-map cache, they are not necessarily suitable for a production
environment.

A deep understanding of your Gerrit data is crucial to tune each cache
accordingly. Please refer to the [configuration](#configuration-parameters) to
understand how to choose sensible values.

These defaults have been retrieved by observing _actual_ key and value sizes as
explained in the
[official documentation](https://github.com/OpenHFT/Chronicle-Map/blob/master/docs/CM_Tutorial_Behaviour.adoc#example---monitor-chronicle-map-statistics)

They are based on the assumption that your Gerrit instance will not have more
than 1000 accounts overall, logged-in at the same time and no more than 1000
medium sized changes.

Information on which values each cache is actually initialized with, can be found
in the `error_log` at startup, in particular two values are also logged to help
gather important statistics about the current file cache status:

* `remainingAutoResizes`
: the number of times in the future the cache can automatically expand its capacity.
The limit to the number of times the map can expand is set via the `maxBloatFactor`.
if `remainingAutoResizes` drops to zero,this cache is no longer able to expand
and it will not be able to take more entries, failing with a `IllegalStateException`
[official documentation](https://javadoc.io/static/net.openhft/chronicle-map/3.20.83/net/openhft/chronicle/map/ChronicleMap.html#remainingAutoResizes--)

* `percentageFreeSpace`
: the amount of free space in the cache as a percentage. When the free space gets
 low ( around 5% ) the cache will automatically expand (see `remainingAutoResizes`).
 If the cache expands you will see an increase in the available free space.
[official documentation](https://javadoc.io/static/net.openhft/chronicle-map/3.20.83/net/openhft/chronicle/map/ChronicleMap.html#percentageFreeSpace--)

* `percentageHotKeys`
: The percentage of _hot_ keys that can be kept in-memory.
When performing evictions, _hot_ keys will be preserved and only _cold_ keys
will be evicted from chronicle-map, in random order.

This value implies a trade-off between eviction speed and eviction accuracy.

The smaller the number of hotKeys allocated, the quicker the eviction phase
will be. However, this will increase the chance of evicting entries that were
recently accessed.

Conversely, the higher the number of hotKeys allocated, the higher will be the
accuracy in evicting only recently accessed keys, at the price of a longer
time spent doing evictions.

In order to ensure there is always a cold entry to be evicted, the number of
`percentageHotKeys` always needs to be less than `maxEntries`.

*Constraints*: [1-99]
*Default*: 50

These are the provided default values:

* `web_sessions`:
    * `avgKeySize`: 45 bytes
    * `avgValueSize`: 221 bytes
    * `maxEntries`: 1000
    * `maxBloatFactor`: 1

Allows up to 1000 users to be logged in.

* `change_notes`:
    * `avgKeySize`: 36 bytes
    * `avgValueSize`: 10240 bytes
    * `maxEntries`: 1000
    * `maxBloatFactor`: 2

Allow for a dozen review activities (votes, comments of medium length) to up to
1000 operations. maxBloatFactor allows to go twice over this threshold.

* `accounts`:
    * `avgKeySize`: 30 bytes
    * `avgValueSize`: 256 bytes
    * `maxEntries`: 1000
    * `maxBloatFactor`: 1

Allows to cache up to 1000 details of active users, including their display name,
preferences, mail, etc.

* `diff`:
    * `avgKeySize`: 98 bytes
    * `avgValueSize`: 10240 bytes
    * `maxEntries`: 1000
    * `maxBloatFactor`: 3

Allow for up to 1000 medium sized diffs between two commits to be cached.
maxBloatFactor allows to go three times over this threshold.

* `diff_intraline`:
    * `avgKeySize`: 512 bytes
    * `avgValueSize`: 2048 bytes
    * `maxEntries`: 1000
    * `maxBloatFactor`: 2

Allow for up to 1000 medium sized diffs between two files to be cached.
maxBloatFactor allows to go twice over this threshold.

* `external_ids_map`:
    * `avgKeySize`: 24 bytes
    * `avgValueSize`: 204800 bytes
    * `maxEntries`: 2
    * `maxBloatFactor`: 1

This cache holds a map of the parsed representation of all current external IDs.
It may temporarily contain 2 entries, but the second one is promptly expired.
This defaults allow to contain up to 1000 entries per map, roughly.

* `oauth_tokens`:
    * `avgKeySize`: 8 bytes
    * `avgValueSize`: 2048 bytes
    * `maxEntries`: 1000
    * `maxBloatFactor`: 1

caches information about the operation performed by a change relative to its
parent. Allow to cache up to 1000 entries.

* `mergeability`:
    * `avgKeySize`: 79 bytes
    * `avgValueSize`: 16 bytes
    * `maxEntries`: 65000
    * `maxBloatFactor`: 2

Caches information about the mergeability status of up to 1000 open changes.

* `pure_revert`:
    * `avgKeySize`: 55 bytes
    * `avgValueSize`: 16 bytes
    * `maxEntries`: 1000
    * `maxBloatFactor`: 1

Caches the result of checking if one change or commit is a pure/clean revert of
another, for up to 1000 entries.

* `persisted_projects`:
    * `avgKeySize`: 128 bytes
    * `avgValueSize`: 1024 bytes
    * `maxEntries`: 250
    * `maxBloatFactor`: 2

Caches the project description records from the refs/meta/config branch of each
project. Allow up to 250 projects to be cached.
maxBloatFactor allows to go twice over this threshold.

* `conflicts`:
    * `avgKeySize`: 70 bytes
    * `avgValueSize`: 16 bytes
    * `maxEntries`: 1000
    * `maxBloatFactor`: 1

Caches whether two commits are in conflict with each other.
Allows to hold up to 1000 conflicting changes.

* `GENERAL DEFAULTS`:

Caches that do not provide specific configuration in the `[cache "<name>"]`
stanza and are not listed above, will fallback to use generic defaults:

* `avgKeySize`: 128 bytes
* `avgValueSize`: 2048 bytes
* `maxEntries`: 1000
* `maxBloatFactor`: 1

### Gotchas

#### Configuration changes and persisted cache file

When reading the persisted cache file, chronicle-map assumes the configuration
that was used to create the file for the first time.
This means, that changing the configuration is not going to update entries,
average key size and average value size as your needs grow.

If you need more entries, or different key values, you'll need to generate a
brand new persistent cache (i.e. delete the old one).

More information on recovery can be found in the
[Official documentation](https://github.com/OpenHFT/Chronicle-Map/blob/master/docs/CM_Tutorial.adoc#recovery)

### Tuning

This module provides tooling to help understand how configuration should be
optimized for chronicle-map.
More information in the [tuning](tuning.md) documentation.
