---
layout: default

# Sub-level navigation
sub-nav-group: user-guide
sub-nav-parent: configuration
sub-nav-id: write-proxy-configuration
sub-nav-pos: 2
sub-nav-title: Write Proxy Configuration
---

.. contents:: Write Proxy Configuration

Write Proxy Configuration
=========================

This section describes the configuration settings used by DistributedLog Write Proxy.

All the server related settings are managed in `ServerConfiguration`. Similar as `DistributedLogConfiguration`,
it is also a properties based configuration, which extends from Apache commons `CompositeConfiguration`. All
server related settings are in lower case and use `'_'` to concat words. For example, `server_region_id` means
the region id used by the write proxy server.

Server Configuration Settings
-----------------------------

- *server_dlsn_version*: The version of serialized format of DLSN. The default value is 1. It is not recommended to change it.
- *server_region_id*: The region id used by the server to instantiate a DL namespace. The default value is `LOCAL`.
- *server_port*: The listen port of the write proxy. The default value is 0.
- *server_shard*: The shard id used by the server to identify itself. It is optional but recommended to set. For example, if
  the write proxy is running in `Apache Aurora`, you could use the instance id as the shard id. The default value is -1 (unset).
- *server_threads*: The number of threads for the executor of this server. The default value is the available processors.
- *server_enable_perstream_stat*: The flag to enable per stream stat in write proxy. It is different from `enablePerStreamStat`
  in core library. The setting here is controlling exposing the per stream stat exposed by write proxy, while `enablePerStreamStat`
  is to control expose the per stream stat exposed by the core library. It is enabled by default.
- *server_graceful_shutdown_period_ms*: The graceful shutdown period in milliseconds. The default value is 0.
- *server_service_timeout_ms*: The timeout period for the execution of a stream operation in write proxy. If it is positive,
  write proxy will timeout requests if they are taking longer time than the threshold. Otherwise, the timeout feature is disabled.
  By default, it is 0 (disabled).
- *server_stream_probation_timeout_ms*: The time period that a stream should be kept in cache in probationary state after service
  timeout, in order to prevent ownership reacquiring. The unit is milliseconds. The default value is 5 minutes.
- *stream_partition_converter_class*: The stream-to-partition convert class. The converter is used to group streams together, which
  these streams can apply same `per-stream` configuration settings or same other constraints. By default, it is an
  `IdentityStreamPartitionConverter` which doesn't group any streams.

Rate Limit Settings
~~~~~~~~~~~~~~~~~~~

This section describes the rate limit settings per write proxy.

All the rate limit settings have both `soft` and `hard` thresholds. If the throughput goes above `soft` limit,
the requests won't be rejected but just logging in the stat. But if the throughput goes above `hard` limit,
the requests would be rejected immediately.

NOTE: `bps` stands for `bytes per second`, while `rps` stands for `requests per second`.

- *bpsSoftServiceLimit*: The soft limit for bps. Setting it to 0 or negative value will disable this feature.
  By default it is disabled.
- *bpsHardServiceLimit*: The hard limit for bps. Setting it to 0 or negative value will disable this feature.
  By default it is disabled.
- *rpsSoftServiceLimit*: The soft limit for rps. Setting it to 0 or negative value will disable this feature.
  By default it is disabled.
- *rpsHardServiceLimit*: The hard limit for rps. Setting it to 0 or negative value will disable this feature.
  By default it is disabled.

There are two additional rate limiting settings that related to stream acquisitions.

- *rpsStreamAcquireServiceLimit*: The rate limit for rps. When the rps goes above this threshold, the write proxy
  will stop accepting serving new streams.
- *bpsStreamAcquireServiceLimit*: The rate limit for bps. When the bps goes above this threshold, the write proxy
  will stop accepting serving new streams.

Stream Limit Settings
~~~~~~~~~~~~~~~~~~~~~

This section describes the stream limit settings per write proxy. They are the constraints that each write proxy
will apply when deciding whether to own given streams.

- *maxAcquiredPartitionsPerProxy*: The maximum number of partitions per stream that a write proxy is allowed to
  serve. Setting it to 0 or negative value will disable this feature. By default it is unlimited.
- *maxCachedPartitionsPerProxy*: The maximum number of partitions per stream that a write proxy is allowed to cache.
  Setting it to 0 or negative value will disable this feature. By default it is unlimited.
