Skip to main content

Default configuration

The following is the default configuration. It does not include all possible configuration options, since some can be conflicting. Take a look at the configuration reference below for a full list of options. Note that configuration defaults might change across server releases, if you want to make sure you use stable values, use an explicit configuration file and pass the path via --config-path=<PATH> as described above. Important changes in recent versions:
  • Restate now listens on both TCP and Unix sockets by default (listen-mode = "all"). Unix sockets are created under restate-data/*.sock.
  • Advertised addresses are automatically detected based on your network configuration. You no longer need to explicitly set advertised-address for most deployments.
  • The metadata-client.addresses field is now optional for single-node setups.
restate.toml
roles = [
    "http-ingress",
    "admin",
    "worker",
    "log-server",
    "metadata-server",
]
cluster-name = "localcluster"
auto-provision = true
default-num-partitions = 24
default-replication = 1
shutdown-timeout = "1m"
tracing-filter = "info"
log-filter = "warn,restate=info"
log-format = "pretty"
log-disable-ansi-codes = false
connect-timeout = "10s"
request-compression-threshold = "4.0 MiB"
disable-prometheus = false
rocksdb-total-memory-size = "2.0 GiB"
rocksdb-total-memtables-ratio = 0.85
rocksdb-high-priority-bg-threads = 2
rocksdb-perf-level = "enable-count"
metadata-update-interval = "10s"
metadata-fetch-from-peer-timeout = "3s"
initialization-timeout = "5m"
disable-telemetry = false
gossip-tick-interval = "100ms"
gossip-failure-threshold = 10
gossip-num-peers = 2
gossip-fd-stability-threshold = 3
gossip-suspect-interval = "5s"
gossip-loneliness-threshold = 30
gossip-extras-exchange-frequency = 10
gossip-time-skew-threshold = "1s"
hlc-max-drift = "5s"
experimental-kafka-batch-ingestion = false
experimental-shuffler-batch-ingestion = false
default-journal-retention = "1d"

[metadata-client]
type = "replicated"
addresses = []
connect-timeout = "3s"
keep-alive-interval = "5s"
keep-alive-timeout = "5s"

[metadata-client.backoff-policy]
type = "exponential"
initial-interval = "100ms"
factor = 1.4
max-attempts = 10
max-interval = "1s"

[http-keep-alive-options]
interval = "40s"
timeout = "20s"

[network-error-retry-policy]
type = "exponential"
initial-interval = "10ms"
factor = 2.0
max-attempts = 15
max-interval = "5s"

[default-retry-policy]
initial-interval = "500ms"
exponentiation-factor = 2.0
max-attempts = 70
on-max-attempts = "pause"
max-interval = "1m"

[worker]
internal-queue-length = 1000
cleanup-interval = "1h"
max-command-batch-size = 32
trim-delay-interval = "10m"

[worker.storage]
rocksdb-disable-wal = true
rocksdb-memory-ratio = 0.49

[worker.invoker]
inactivity-timeout = "1m"
abort-timeout = "10m"
message-size-warning = "10.0 MiB"
in-memory-queue-length-limit = 66049
concurrent-invocations-limit = 1000

[worker.snapshots]
enable-cleanup = true

[worker.snapshots.object-store-retry-policy]
type = "exponential"
initial-interval = "100ms"
factor = 2.0
max-attempts = 10
max-interval = "10s"

[worker.shuffle]
inflight-memory-budget = "10.0 MiB"
request-batch-size = "50.0 KiB"

[worker.shuffle.connection-retry-policy]
type = "exponential"
initial-interval = "10ms"
factor = 2.0
max-interval = "1s"

[admin]
heartbeat-interval = "1s 500ms"
disable-web-ui = false
disable-cluster-controller = false

[admin.query-engine]
memory-size = "1.0 GiB"

[ingress]
kafka-clusters = []

[ingress.ingestion]
inflight-memory-budget = "1.0 MiB"
request-batch-size = "50.0 KiB"

[ingress.ingestion.connection-retry-policy]
type = "exponential"
initial-interval = "10ms"
factor = 2.0
max-interval = "2s"

[bifrost]
default-provider = "replicated"
seal-retry-interval = "2s"
auto-recovery-interval = "15s"
append-retry-min-interval = "10ms"
append-retry-max-interval = "1s"
record-cache-memory-size = "250.0 MiB"
disable-auto-improvement = false

[bifrost.local]
rocksdb-disable-wal = false
rocksdb-memory-ratio = 0.5
rocksdb-disable-wal-fsync = false
writer-batch-commit-count = 5000
writer-batch-commit-duration = "0s"

[bifrost.replicated-loglet]
maximum-inflight-records = 1000
sequencer-inactivity-timeout = "15s"
log-server-rpc-timeout = "2s"
readahead-records = 20
read-batch-size = "32.0 KiB"
readahead-trigger-ratio = 0.5

[bifrost.replicated-loglet.sequencer-retry-policy]
type = "exponential"
initial-interval = "250ms"
factor = 2.0
max-interval = "5s"

[bifrost.replicated-loglet.log-server-retry-policy]
type = "exponential"
initial-interval = "250ms"
factor = 2.0
max-attempts = 3
max-interval = "2s"

[bifrost.read-retry-policy]
type = "exponential"
initial-interval = "50ms"
factor = 2.0
max-attempts = 50
max-interval = "1s"

[metadata-server]
request-queue-length = 32
rocksdb-memory-ratio = 0.01
rocksdb-disable-wal = false
raft-election-tick = 10
raft-heartbeat-tick = 2
raft-tick-interval = "100ms"
status-update-interval = "5s"
log-trim-threshold = 1000
auto-join = true

[networking]
connect-timeout = "3s"
handshake-timeout = "3s"
http2-keep-alive-interval = "1s"
http2-keep-alive-timeout = "3s"
http2-adaptive-window = true
disable-compression = false
data-stream-window-size = "2.0 MiB"

[networking.connect-retry-policy]
type = "exponential"
initial-interval = "250ms"
factor = 2.0
max-attempts = 10
max-interval = "3s"

[log-server]
rocksdb-disable-wal = false
rocksdb-memory-ratio = 0.5
rocksdb-disable-wal-fsync = false
rocksdb-max-sub-compactions = 0
writer-batch-commit-count = 5000
incoming-network-queue-length = 1000

Configuration Reference

admin
object
Admin server options:
advertised-address
string | null
env: RESTATE_ADVERTISED_ADDRESS
Address that other nodes will use to connect to this service.The full prefix that will be used to advertise this service publicly. For example, if this is set to https://my-host then others will use this as base URL to connect to this service.If unset, the advertised address will be inferred from public address of this node or it’ll use the value supplied in advertised-host if set.advertised address: An externally accessible URI address for tokio-console-server. This can be set to unix:restate-data/tokio.sock to advertise the automatically created unix-socket instead of using tcp if neededExamples: “http//127.0.0.1:6669/” or “https://my-host/” or “unix:/data/restate-data/tokio.sock”
advertised-host
string | null
env: RESTATE_ADVERTISED_HOST
Hostname to advertise for this service
auto-provision
boolean
default:"true"
env: RESTATE_AUTO_PROVISION
Auto cluster provisioning: If true, then this node is allowed to automatically provision as a new cluster. This node must have an admin role and a new nodes configuration will be created that includes this node.auto-provision is allowed by default in development mode and is disabled if restate-server runs with --production flag to prevent cluster nodes from forming their own clusters, rather than forming a single cluster.Use restatectl to provision the cluster/node if automatic provisioning is disabled.This can also be explicitly disabled by setting this value to false.Default: true
base-dir
string | null
default:"null"
env: RESTATE_BASE_DIR
The working directory which this Restate node should use for relative paths. The default is restate-data under the current working directory.
bifrost
object
Bifrost options:
bind-address
string | null
env: RESTATE_BIND_ADDRESS
The combination of bind-ip and bind-port that will be used to bindThis has precedence over bind-ip and bind-portBind address: The local network address to bind on for tokio-console-server. This service uses default port 6669 and will create a unix-socket file at the data directory under the name tokio.sockExamples: ”[::]:6669” or “0.0.0.0:6669” or “127.0.0.1:6669”
bind-ip
string | null
format: ip
env: RESTATE_BIND_IP
Local interface IP address to listen on
bind-port
integer | null
format: uint16
maximum: 65535
env: RESTATE_BIND_PORT
Network port to listen on
cluster-name
string
default:"localcluster"
env: RESTATE_CLUSTER_NAME
Cluster name: A unique identifier for the cluster. All nodes in the same cluster should have the same.
default-idempotency-retention
string
minLength: 1
env: RESTATE_DEFAULT_IDEMPOTENCY_RETENTION
Human-readable duration: Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D” or “0”
default-journal-retention
string
minLength: 1
env: RESTATE_DEFAULT_JOURNAL_RETENTION
Human-readable duration: Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D” or “0”
default-num-partitions
integer
default:"24"
format: uint16
maximum: 65535
env: RESTATE_DEFAULT_NUM_PARTITIONS
Partitions: Number of partitions that will be provisioned during initial cluster provisioning. partitions are the logical shards used to process messages.Cannot be higher than 65535 (You should almost never need as many partitions anyway)NOTE 1: This config entry only impacts the initial number of partitions, the value of this entry is ignored for provisioned nodes/clusters.NOTE 2: This will be renamed to default-num-partitions by default as of v1.3+Default: 24
default-replication
string
default:"1"
env: RESTATE_DEFAULT_REPLICATION
Default replication factor: Configures the global default replication factor to be used by the the system.Note that this value only impacts the cluster initial provisioning and will not be respected after the cluster has been provisioned.To update existing clusters use the restatectl utility.
default-retry-policy
object
Default retry policy: The default retry policy to use for invocations.The retry policy can be customized on a service/handler basis, using the respective SDK APIs. Check https://docs.restate.dev/services/configuration#retries for more details.
default-thread-pool-size
integer | null
default:"null"
format: uint32
env: RESTATE_DEFAULT_THREAD_POOL_SIZE
Default async runtime thread pool: Size of the default thread pool used to perform internal tasks. If not set, it defaults to the number of CPU cores.
default-workflow-completion-retention
string
minLength: 1
env: RESTATE_DEFAULT_WORKFLOW_COMPLETION_RETENTION
Human-readable duration: Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D” or “0”
disable-prometheus
boolean
default:"false"
env: RESTATE_DISABLE_PROMETHEUS
Disable prometheus metric recording and reporting. Default is false.
disable-telemetry
boolean
default:"false"
env: RESTATE_DISABLE_TELEMETRY
Disable telemetry: Restate uses Scarf to collect anonymous usage data to help us understand how the software is being used. You can set this flag to true to disable this collection. It can also be set with the environment variable DO_NOT_TRACK=1.
force-node-id
integer | null
default:"null"
format: uint32
env: RESTATE_FORCE_NODE_ID
If set, the node insists on acquiring this node ID.
gossip-extras-exchange-frequency
integer
default:"10"
format: uint32
minimum: 1
env: RESTATE_GOSSIP_EXTRAS_EXCHANGE_FREQUENCY
Gossip extras exchange frequency: In addition to basic health/liveness information, the gossip protocol is used to exchange extra information about the roles hosted by this node. For instance, which partitions are currently running, their configuration versions, and the durable LSN of the corresponding partition databases. This information is sent every Nth gossip message. This setting controls the frequency of this exchange. For instance, 10 means that every 10th gossip message will contain the extra information about.
gossip-failure-threshold
integer
default:"10"
format: uint32
minimum: 1
env: RESTATE_GOSSIP_FAILURE_THRESHOLD
Gossip failure threshold: Specifies how many gossip intervals of inactivity need to pass before considering a node as dead.
gossip-fd-stability-threshold
integer
default:"3"
format: uint32
minimum: 1
env: RESTATE_GOSSIP_FD_STABILITY_THRESHOLD
Gossips before failure detector is stable:
gossip-loneliness-threshold
integer
default:"30"
format: uint32
minimum: 1
env: RESTATE_GOSSIP_LONELINESS_THRESHOLD
Gossip loneliness threshold: How many intervals need to pass without receiving any gossip messages before considering this node as potentially isolated/dead. This threshold is used in the case where the node can still send gossip messages but did not receive any. This can rarely happen in asymmetric network partitions.In this case, the node will advertise itself as dead in the gossip messages it sends out.Note: this threshold does not apply to a cluster that’s configured with a single node.
gossip-num-peers
integer
default:"2"
format: uint32
minimum: 1
env: RESTATE_GOSSIP_NUM_PEERS
Number of peers to gossip: On every gossip interval, how many peers each node attempts to gossip with. The default is optimized for small clusters (less than 5 nodes). On larger clusters, if gossip overhead is noticeable, consider reducing this value to 1.
gossip-suspect-interval
string
default:"5s"
minLength: 1
env: RESTATE_GOSSIP_SUSPECT_INTERVAL
Human-readable duration: Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D” or “0”
gossip-tick-interval
string
default:"100ms"
minLength: 1
env: RESTATE_GOSSIP_TICK_INTERVAL
Non-zero human-readable duration: Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D”
gossip-time-skew-threshold
string
default:"1s"
minLength: 1
env: RESTATE_GOSSIP_TIME_SKEW_THRESHOLD
Non-zero human-readable duration: Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D”
hlc-max-drift
string
default:"0s"
minLength: 1
env: RESTATE_HLC_MAX_DRIFT
Human-readable duration: Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D” or “0”
ingress
object
Ingress options:
initialization-timeout
string
default:"5m"
minLength: 1
env: RESTATE_INITIALIZATION_TIMEOUT
Non-zero human-readable duration: Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D”
listen-mode
oneOf | null
env: RESTATE_LISTEN_MODE
Listen on unix-sockets, TCP sockets, or both.The default is to listen on both.
  • "unix" : Exclusively listen on unix domain sockets
If set, all services will listen exclusively on unix sockets, each service will create a socket file under the data directory.
  • "tcp" : Exclusively listen on TCP sockets
  • "all" : [default] Listen on both Unix and TCP sockets
location
string
env: RESTATE_LOCATION
Node Location: Setting the location allows Restate to form a tree-like cluster topology. The value is written in the format of “region[.zone]” to assign this node to a specific region, or to a zone within a region.The value of region and zone is arbitrary but whitespace and . are disallowed.NOTE: It’s strongly recommended to not change the node’s location string after its initial registration. Changing the location may result in data loss or data inconsistency if log-server is enabled on this node.When this value is not set, the node is considered to be in the default location. The default location means that the node is not assigned to any specific region or zone.Examples
  • us-west — the node is in the us-west region.
  • us-west.a1 — the node is in the us-west region and in the a1 zone.
  • “ — [default] the node is in the default location
log-disable-ansi-codes
boolean
default:"false"
env: RESTATE_LOG_DISABLE_ANSI_CODES
Disable ANSI in log output: Disable ANSI terminal codes for logs. This is useful when the log collector doesn’t support processing ANSI terminal codes.
log-filter
string
default:"warn,restate=info"
env: RESTATE_LOG_FILTER
Logging Filter: Log filter configuration. Can be overridden by the RUST_LOG environment variable. Check the RUST_LOG documentation for more details how to configure it.
log-format
default:"pretty"
env: RESTATE_LOG_FORMAT
Logging format: Format to use when logging.
  • Option 1: Pretty : Enables verbose logging. Not recommended in production.
  • Option 2: Compact : Enables compact logging.
  • Option 3: Json : Enables json logging. You can use a json log collector to ingest these logs and further process them.
log-server
object
Log server options: Configuration is only used on nodes running with log-server role.
max-idempotency-retention
string | null
env: RESTATE_MAX_IDEMPOTENCY_RETENTION
Maximum idempotency retention duration that can be configured. Applied when ingesting the invocation: values higher than this limit are clamped down to it.Unset means no limit.Since v1.7.0Human-readable duration: Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D” or “0”
max-journal-retention
string | null
env: RESTATE_MAX_JOURNAL_RETENTION
Maximum journal retention duration that can be configured. Applied when ingesting the invocation: values higher than this limit are clamped down to it.Unset means no limit.Human-readable duration: Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D” or “0”
max-retry-policy-max-attempts
integer | null
format: uint
minimum: 1
env: RESTATE_MAX_RETRY_POLICY_MAX_ATTEMPTS
Max configurable value for retry policy max attempts: Maximum max attempts configurable in an invocation retry policy. When discovering a service deployment with configured retry policies, or when modifying the invocation retry policy using the Admin API, the given value will be clamped.None means no limit, that is infinite retries is enabled.
max-workflow-completion-retention
string | null
env: RESTATE_MAX_WORKFLOW_COMPLETION_RETENTION
Maximum workflow completion retention duration that can be configured. Applied when ingesting the invocation: values higher than this limit are clamped down to it.Unset means no limit.Since v1.7.0Human-readable duration: Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D” or “0”
metadata-client
object
Metadata client options: The metadata client type to store metadata
metadata-fetch-from-peer-timeout
string
default:"3s"
minLength: 1
env: RESTATE_METADATA_FETCH_FROM_PEER_TIMEOUT
Non-zero human-readable duration: Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D”
metadata-server
object
Metadata store options:
metadata-update-interval
string
default:"10s"
minLength: 1
env: RESTATE_METADATA_UPDATE_INTERVAL
Non-zero human-readable duration: Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D”
network-error-retry-policy
Retry policy: Definition of a retry policy
networking
object
Networking options: Common network configuration options for communicating with Restate cluster nodes. Note that similar keys are present in other config sections, such as in Service Client options.
node-name
string | null
default:"null"
env: RESTATE_NODE_NAME
Node Name: Unique name for this node in the cluster. The node must not change unless it’s started with empty local store. It defaults to the node’s hostname.
rocksdb-block-size
string | null
env: RESTATE_ROCKSDB_BLOCK_SIZE
RocksDB block size: Uncompressed block sizeDefault: 64KiBNon-zero human-readable bytes
rocksdb-compaction-readahead-size
string | null
env: RESTATE_ROCKSDB_COMPACTION_READAHEAD_SIZE
RocksDB compaction readahead size in bytes: If non-zero, we perform bigger reads when doing compaction. If you’re running RocksDB on spinning disks, you should set this to at least 2MB. That way RocksDB’s compaction is doing sequential instead of random reads.Non-zero human-readable bytes
rocksdb-disable-direct-io-for-flush-and-compactions
boolean | null
env: RESTATE_ROCKSDB_DISABLE_DIRECT_IO_FOR_FLUSH_AND_COMPACTIONS
Disable Direct IO for flush and compactions: Use O_DIRECT for writes in background flush and compactions.
rocksdb-disable-direct-io-for-reads
boolean | null
env: RESTATE_ROCKSDB_DISABLE_DIRECT_IO_FOR_READS
Disable Direct IO for reads: Files will be opened in “direct I/O” mode which means that data r/w from the disk will not be cached or buffered. The hardware buffer of the devices may however still be used. Memory mapped files are not impacted by these parameters.
rocksdb-disable-l0-l1-compression
boolean | null
env: RESTATE_ROCKSDB_DISABLE_L0_L1_COMPRESSION
Disable L0/L1 SST compression: When false (the default), L0 and L1 SST files are compressed with Lz4. Higher levels (L2+) always use Zstd regardless of this setting. Set to true to disable compression for L0/L1, which can improve write throughput at the cost of higher disk usage since these files are short-lived and frequently compacted.Default: false (L0/L1 compression enabled)
rocksdb-disable-statistics
boolean | null
env: RESTATE_ROCKSDB_DISABLE_STATISTICS
Disable rocksdb statistics collectionDefault: False (statistics enabled)
rocksdb-disable-wal-compression
boolean | null
env: RESTATE_ROCKSDB_DISABLE_WAL_COMPRESSION
Disable WAL compression: When false (the default), the Write-Ahead Log is compressed with Zstd. Set to true to disable WAL compression. Only applies when WAL is enabled.Default: false (WAL compression enabled)
rocksdb-high-priority-threads
integer | null
format: uint32
minimum: 1
env: RESTATE_ROCKSDB_HIGH_PRIORITY_THREADS
Rocksdb High Priority Background Threads: The number of threads to reserve to high priority Rocksdb background tasks.Defaults to 1/4 of the number of CPU cores.Since v1.7.0 (renamed from rocksdb-high-priority-bg-threads)
rocksdb-log-keep-file-num
integer | null
default:"null"
format: uint
env: RESTATE_ROCKSDB_LOG_KEEP_FILE_NUM
RocksDB log keep file num: Number of info LOG files to keepDefault: 1
rocksdb-log-level
string | null
default:"null"
env: RESTATE_ROCKSDB_LOG_LEVEL
RocksDB log level: Verbosity of the LOG.Default: “error”Verbosity of the LOG.
rocksdb-log-max-file-size
string | null
default:"null"
env: RESTATE_ROCKSDB_LOG_MAX_FILE_SIZE
RocksDB log max file size: Max size of info LOG fileDefault: 64MBNon-zero human-readable bytes
rocksdb-low-priority-threads
integer | null
format: uint32
minimum: 1
env: RESTATE_ROCKSDB_LOW_PRIORITY_THREADS
Rocksdb Low Priority Background Threads: The number of threads to reserve to lower priority Rocksdb background tasks.Defaults to the remaining CPU cores not used by high-priority rocksdb threadsSince v1.7.0 (renamed from rocksdb-bg-threads)
rocksdb-max-write-rate-per-second
string
default:"7.0 GiB"
minLength: 1
env: RESTATE_ROCKSDB_MAX_WRITE_RATE_PER_SECOND
Non-zero human-readable bytes
rocksdb-perf-level
default:"enable-count"
env: RESTATE_ROCKSDB_PERF_LEVEL
Rocksdb performance statistics level: Defines the level of PerfContext used internally by rocksdb. Default is enable-count which should be sufficient for most users. Note that higher levels incur a CPU cost and might slow down the critical path.
  • "disable" : Disable perf stats
  • "enable-count" : Enables only count stats
  • "enable-time-except-for-mutex" : Count stats and enable time stats except for mutexes
  • "enable-time-and-c-p-u-time-except-for-mutex" : Other than time, also measure CPU time counters. Still don’t measure time (neither wall time nor CPU time) for mutexes
  • "enable-time" : Enables count and time stats
rocksdb-statistics-level
oneOf | null
env: RESTATE_ROCKSDB_STATISTICS_LEVEL
RocksDB statistics level: StatsLevel can be used to reduce statistics overhead by skipping certain types of stats in the stats collection process.Default: “except-detailed-timers”
  • "disable-all" : Disable all metrics
  • "except-histogram-or-timers" : Disable timer stats, and skip histogram stats
  • "except-timers" : Skip timer stats
  • "except-detailed-timers" : Collect all stats except time inside mutex lock AND time spent on compression.
  • "except-time-for-mutex" : Collect all stats except the counters requiring to get time inside the mutex lock.
  • "all" : Collect all stats, including measuring duration of mutex operations. If getting time is expensive on the platform to run, it can reduce scalability to more threads, especially for writes.
rocksdb-total-memory-size
string
default:"2.0 GiB"
minLength: 1
env: RESTATE_ROCKSDB_TOTAL_MEMORY_SIZE
Non-zero human-readable bytes
rocksdb-total-memtables-ratio
number
default:"0.8500000238418579"
format: float
env: RESTATE_ROCKSDB_TOTAL_MEMTABLES_RATIO
Rocksdb total memtable size ratio: The memory size used across all memtables (ratio between 0.1 to 1.0). This limits how much memory memtables can eat up from the value in rocksdb-total-memory-limit.The remaining memory will be dedicated to the block cache.This value will be sanitized to 1.0 if outside the valid bounds.
roles
array
Defines the roles which this Restate node should run, by default the node starts with all roles.
shutdown-timeout
string
default:"1m"
minLength: 1
env: RESTATE_SHUTDOWN_TIMEOUT
Non-zero human-readable duration: Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.Examples: “10 hours” or “5 days” or “5d” or “1h 4m” or “P40D”
storage-high-priority-bg-threads
integer | null
format: uint
minimum: 1
env: RESTATE_STORAGE_HIGH_PRIORITY_BG_THREADS
Storage high priority thread poolThis configures the restate-managed storage thread pool for performing high-priority or latency-sensitive storage tasks when the IO operation cannot be performed on in-memory caches.
storage-low-priority-bg-threads
integer | null
format: uint
minimum: 1
env: RESTATE_STORAGE_LOW_PRIORITY_BG_THREADS
Storage low priority thread poolThis configures the restate-managed storage thread pool for performing low-priority or latency-insensitive storage tasks.
tokio-console-bind-address
string
env: RESTATE_TOKIO_CONSOLE_BIND_ADDRESS
Address to bind for the tokio-console tracing subscriber. If unset and restate-server is built with tokio-console support, it’ll listen on [::]:6669.
tracing-endpoint
string | null
env: RESTATE_TRACING_ENDPOINT
Tracing Endpoint: This is a shortcut to set both [Self::tracing_runtime_endpoint], and [Self::tracing_services_endpoint].Specify the tracing endpoint to send runtime traces to. Traces will be exported using OTLP gRPC through opentelemetry_otlp.To configure the sampling, please refer to the opentelemetry autoconfigure docs.
tracing-filter
string
required
env: RESTATE_TRACING_FILTER
Tracing Filter: Distributed tracing exporter filter. Check the RUST_LOG documentation for more details how to configure it.
tracing-headers
object
Additional tracing headers: Specify additional headers you want the system to send to the tracing endpoint (e.g. authentication headers).
tracing-json-path
string | null
env: RESTATE_TRACING_JSON_PATH
Distributed Tracing JSON Export Path: If set, an exporter will be configured to write traces to files using the Jaeger JSON format. Each trace file will start with the trace prefix.If unset, no traces will be written to file.It can be used to export traces in a structured format without configuring a Jaeger agent.To inspect the traces, open the Jaeger UI and use the Upload JSON feature to load and inspect them.
tracing-runtime-endpoint
string | null
env: RESTATE_TRACING_RUNTIME_ENDPOINT
Runtime Tracing Endpoint: Overrides [Self::tracing_endpoint] for runtime tracesSpecify the tracing endpoint to send runtime traces to. Traces will be exported using OTLP gRPC through opentelemetry_otlp.To configure the sampling, please refer to the opentelemetry autoconfigure docs.
tracing-services-endpoint
string | null
env: RESTATE_TRACING_SERVICES_ENDPOINT
Services Tracing Endpoint: Overrides [Self::tracing_endpoint] for services tracesSpecify the tracing endpoint to send services traces to. Traces will be exported using OTLP gRPC through opentelemetry_otlp.To configure the sampling, please refer to the opentelemetry autoconfigure docs.
use-random-ports
boolean | null
env: RESTATE_USE_RANDOM_PORTS
Use random ports instead of the default port
worker
object
Worker options: