# Refiner configuration properties

Here are the definitions of [Refiner’s](transformer-refiner-overview.md) configuration properties.

## Modifying properties

To modify a property, add its new value to the file: `<Framework-root>/global_config/overrides/RefinerService/Transformer/etc/refiner.properties` (&lt;Framework-root> is the topmost directory of the [Deployment Framework](../deployment-framework/index.md).)

The format of a property is a dot-separated property name with an associated value, like this:

```
property.name1[.name2][.name3]...=value
```

For example:

```
batch.time=100
log.file.count=3
```

## Property reference

The Refiner configuration properties are:

| Property name | default value | description |
| --- | --- | --- |
| `<a name="batch-time"></a>batch.time` | `0` milliseconds | The duration in milliseconds for which Caplin Refiner waits before publishing any changes it has received since the last time it published. The default value causes Caplin Refiner to immediately publish any new updates as soon as it has finished publishing the previous batch. If `batch.time` is negative or not a number, the default value is used. Run Caplin Refiner initially with the default setting for `batch.time` (no batching of updates). If, in your system, the rate at which Caplin Refiner has to publish updates causes performance problems with Caplin Refiner itself or for clients, increase `batch.time` as required to give acceptable performance. Also see, [`max.update.size`](#max-update-size). |
| `<a name="filtering-algorithm-filter-name"></a>filtering.algorithm. <filter-name>` | No default  | Defines a custom filter comparator. `<filter-name>` is the name of the custom filter comparator. You can define multiple custom filter comparators; each `filtering.algorithm.<filter-name>` must have a unique `<filter-name>`. The property value is the fully qualified class name of the custom filter comparator class. For example: `filtering.algorithm.BondRating=com.example.BondRatingComparator` |
| `<a name="log-file-count"></a>log.file.count` | `1` | The number of Caplin Refiner log files to keep when [log.file.limit ](#log-file-limit)is not `0`. Log files are cycled according to this count; when the number of log files matches the count, and the `log.file.limit` is reached, the current log file is closed and the oldest log file is reopened and overwritten with new log messages. Then the next oldest log file is reused, and so on. A value of `0` means there’s no limit on the number of successive log files produced. The default value of `1`, causes Caplin Refiner to overwrite the current log file as soon as the `log.file.limit` is reached. If you set `log.file.limit` to a (positive) value other than `0`, set `log.file.count` to at least `2`, otherwise the contents of the current log file will be overwritten as soon as the `log.file.count` is reached. |
| `<a name="log-file-level"></a>log.file.level` | `CONFIG` | Defines the log level for messages written to the Caplin Refiner log file. The log levels are the standard Java ones: * `SEVERE` (highest level) * `WARNING` * `INFO` * `CONFIG` * `FINE` * `FINER` * `FINEST` (lowest level) |
| `<a name="log-file-limit"></a>log.file.limit` | `0` | The maximum size of a Caplin Refiner log file in bytes. When the current log file reaches this limit, it’s closed and a new log file is started (see [log.file.count](#log-file-count)). The default value of `0` means the same log file is always used. If you set `log.file.limit` to a (positive) value other than `0`, set `log.file.count` to at least 2, otherwise the contents of the current log file will be overwritten as soon as the `log.file.count` is reached. |
| `<a name="max-update-size"></a>max.update.size` | `1000` updates | As Transformer receives updates to the records in a container, it creates (via Caplin Refiner) individual container record removal and record insertion messages according to how the updates match the filter and sort criteria. If the resulting number of record insertions is high, this can load the Liberator excessively. The `max.update.size` property helps to reduce such loading on the Liberator. It defines the maximum number of container record inserts that Caplin Refiner sends in a single batch period (as defined by [batch.time](#batch-time)). If the number of updates exceeds `max.update.size`, Transformer sends the changes as a single container image instead. If `max.update.size` is negative, 0 or not a number, this feature is turned off and all updates are sent as inserts. |
| `<a name="nodata-records-rerequest-timer"></a>nodata.records. rerequest.timer` | `60,000` milliseconds | The period in milliseconds between re-requests made by Caplin Refiner for any records that were not previously successfully subscribed to on a supplying DataSource. If `nodata.records.rerequest.timer` is negative, 0, or not a number, this feature is turned off. |
| `<a name="placeholder-timeout"></a>placeholder.timeout` | `1,000` milliseconds | How long in milliseconds Caplin Refiner waits for results before removing the placeholder record. The placeholder record has a special name that allows the client to display an indicator showing that it’s waiting for data. When the placeholder is removed, the client should remove the indicator. If `placeholder.timeout` is negative or not a number, the default value is used. For more about container placeholders, see [The container placeholder](transformer-refiner-filtering-and-sorting-rules.md#the-container-placeholder) in How can I... [Filter and Sort in Refiner](transformer-refiner-filtering-and-sorting-rules.md). |
| `<a name="sorting-algorithm-sort-name"></a>sorting.algorithm. <sort-name>`  | No default  | Defines a custom sort list or custom sort comparator. `<sort-name>` is the name of the custom sort. You can define multiple custom sort lists and sort comparators; each `sorting.algorithm.<sort-name>` must have a unique `<sort-name>`. For custom sort lists, the property value is a list of sort attributes of the form `list: <item1>,<item2>,...` in ascending sort order. For example: `sorting.algorithm.TenorSort=list:SPOT,ON,TN,SN,1W,2W,1M,2M,6M,1Y` For custom sort comparators, the property value is of the form `class:<comparator-class>` where `<comparator-class>` is the fully qualified class name of the custom comparator class. For example: `sorting.algorithm.BondRating=class:com.example.BondRatingComparator` |

---

**See also:**

* [Refiner overview](transformer-refiner-overview.md)
* How can I... [Deploy the refiner service module](transformer-deploy-the-refiner-service-module.md)
* How can I... [Filter and sort in Refiner](transformer-refiner-filtering-and-sorting-rules.md)
