Server configuration

Riffle reads a TOML file from the path in WORKER_CONFIG_PATH. The exact key set changes between releases, so treat this page as documentation for the current master branch and use the changelog to trace version changes.

Minimal shape

store_type = "MEMORY_LOCALFILE"
grpc_port = 21100
coordinator_quorum = ["coordinator-1:21000", "coordinator-2:21000"]
heartbeat_interval_seconds = 2
tags = ["GRPC", "ss_v5"]

[memory_store]
capacity = "10G"

[localfile_store]
data_paths = ["/data1/riffle", "/data2/riffle"]
min_number_of_available_disks = 1

[runtime_config]
read_thread_num = 100
localfile_write_thread_num = 100
default_thread_num = 10

[metrics]
http_port = 19998

Start the process:

WORKER_IP=10.0.0.12 \
RUST_LOG=info \
WORKER_CONFIG_PATH=/etc/riffle/server.toml \
./riffle-server

Top-level settings

Key Purpose
store_type Selects the enabled storage combination, such as memory plus local file.
grpc_port Uniffle-compatible gRPC service port.
urpc_port Custom stream protocol port when that transport is enabled.
coordinator_quorum Coordinator endpoints used for registration and heartbeats.
heartbeat_interval_seconds Interval between coordinator heartbeats.
tags Scheduling and protocol capability tags reported by the server.

Runtime pools

The [runtime_config] table separates work across dedicated thread pools:

[runtime_config]
read_thread_num = 100
localfile_write_thread_num = 100
hdfs_write_thread_num = 20
http_thread_num = 2
default_thread_num = 10
dispatch_thread_num = 100

Start with values appropriate for the machine’s CPU count, storage latency, and expected concurrency, then tune from observed queueing and resource saturation.

Application limits

[app_config]
app_heartbeat_timeout_min = 5
partition_limit_enable = true
partition_limit_threshold = "20G"
partition_limit_memory_backpressure_ratio = 0.2

Partition controls keep unusually large partitions from consuming the full memory tier. Validate the selected threshold with the real partition-size distribution.

Logging and tracing

[log]
path = "/var/log/riffle/server.log"
rotation = "Daily"

[tracing]
jaeger_reporter_endpoint = "http://jaeger:14268"
jaeger_service_name = "riffle-server"

Review Monitoring for metrics and Profiling for on-demand flamegraphs.