RTFS Configuration
Configure RTFS application.properties for Full Sync, auto-healing, and event processing.
This reference lists all configuration properties for the Repository Federation Service (RTFS). These are set in application.properties or via Helm chart values under persistence.federationProperties.
Overriding Properties via system.yaml or the Platform Helm Chart
You can override RTFS application.properties settings without editing files inside the RTFS container. On native installations, Docker, and other deployments that use the Artifactory system.yaml, add properties under rtfs.persistence.federationProperties as key-value pairs:
rtfs:
enabled: true
persistence:
federationProperties:
rtfs.auto.healing.enabled: "true"
rtfs.full.sync.batch.size: "2000"
rtfs.file.list.published.ttl.min: "30"Helm installations:
- When RTFS is enabled through the Artifactory or platform Helm chart and
system.yamloverlays, set the key-value map underrtfs.persistence.federationPropertiesin your chart values (for example,custom-values.yaml), then runhelm upgrade. - When you deploy the standalone Artifactory Federation Service Helm chart, set the same keys under
persistence.federationProperties, not underrtfs.. For more information, see Helm Deployment Configuration.
For RTFS enablement and database settings, see RTFS Database Requirements.
Apply changes: Restart Artifactory after updating system.yaml or Helm values. The RTFS service restarts with the platform.
Scope: Any valid RTFS application.properties key can be set through federationProperties. Common examples include auto-healing (rtfs.auto.healing.enabled), full sync batch size (rtfs.full.sync.batch.size), full sync file list TTL (rtfs.file.list.published.ttl.min), and worker lag thresholds (rtfs.workers.lag.threshold.sec). For advanced tuning beyond these examples, contact JFrog Support.
Full Sync
The following properties configure Full Sync behavior.
| Property | Default | Description |
|---|---|---|
rtfs.full.sync.batch.size | 2000 | Artifacts per full sync batch. |
rtfs.full.sync.job.run.members.batch.size | 50 | Members to process per full sync job run. |
rtfs.full.sync.job.interval.sec | 120 | Interval between full sync job runs (seconds). |
rtfs.full.sync.job.initial.delay.min | 1 | Initial delay before first full sync job (minutes). |
rtfs.full.sync.grace.period.min | 60 | Minimum time between full syncs for the same member (minutes). |
rtfs.full.sync.execution.time.threshold.min | 30 | Threshold for logging long-running full syncs (minutes). |
rtfs.full.sync.batch.retry.quite.period.seconds | 5 | Quiet period between batch retries (seconds). |
rtfs.full.sync.batch.retry.count | 5 | Maximum batch retry count. |
rtfs.full.sync.heartbeat.stale.min | 30 | Time before a full sync heartbeat is considered stale (minutes). |
rtfs.full.sync.cleanup.cron | 0 0/10 * * * ? * | Cron expression for full sync cleanup job. |
rtfs.dry.full.sync.batch.size | 2000 | Batch size for dry full sync. |
federated.repo.full.sync.backoff.time.min | 0 | Backoff time between full syncs (minutes). |
Auto-Healing
The following properties configure auto-healing for members in error states.
| Property | Default | Description |
|---|---|---|
rtfs.auto.healing.enabled | true | Enable automatic recovery for members in error states. |
rtfs.auto.healing.job.interval.sec | 20 | Auto-healing check interval (seconds). |
rtfs.auto.healing.job.initial.delay.min | 1 | Initial delay before first auto-healing check (minutes). |
Event Stream and Workers
The following properties configure event stream processing and worker batches.
| Property | Default | Description |
|---|---|---|
rtfs.stream.allocation.size | 50 | Stream allocation size for event processing. |
rtfs.worker.batch.size | 100 | Events per worker batch (STANDARD priority). |
rtfs.worker.max.events.processed.in.batch | 200 | Maximum events processed in a single batch. |
rtfs.worker.max.events.processed.in.batch.for.high.priority | 400 | Maximum events for HIGH or URGENT priority batches. |
rtfs.worker.max.retry.count | 2 | Maximum retry count per worker. |
rtfs.worker.min.return.backoff.sec | 2 | Minimum backoff between retries (seconds). |
rtfs.worker.batch.processing.time.margin.sec | 5 | Time margin for batch processing (seconds). |
rtfs.skip.delete.events.dedup | false | Skip deduplication of delete events. |
rtfs.events.processor.request.timeout.sec | 30 | Timeout for event processing requests (seconds). |
rtfs.events.cleanup.cron | 0 0 1 * * ? | Cron for event cleanup job. |
rtfs.events.cleanup.retention.time.Days | 3 | Event retention time (days). |
Stream Recovery and Lag
Stream recovery automatically detects and restarts stalled event processing streams. Stream lag monitoring tracks the delay between event generation and processing, identifying repositories that are falling behind.
When a worker stream stops processing events (for example, due to a transient database issue), the stream recovery job detects the stall and restarts the stream. The lag collector measures the time difference between the oldest unprocessed event and the current time, reporting this as the jfrtfs_worker_lag metric.
| Property | Default | Description |
|---|---|---|
rtfs.stream.recovery.job.cron | */10 * * ? * * * | Cron for stream recovery job. Runs every 10 seconds to detect and restart stalled streams. |
rtfs.stream.lag.collector.job.cron | 0 */2 * ? * * | Cron for stream lag collection. Runs every 2 minutes to measure processing delay. |
rtfs.stream.lag.stale.grace.period.sec | 120 | Grace period before a stream's lag data is considered stale (seconds). After this period without updates, the lag data may be discarded. |
rtfs.workers.lag.threshold.sec | 20 | Worker lag threshold (seconds). When lag exceeds this value, the member may transition to a DELAYED status in the dashboard. |
rtfs.workers.lag.top.repos.limit | 3 | Number of top lagging repos to report in log entries, helping identify which repositories are most behind. |
rtfs.worker.lag.log.period.minutes | 30 | Interval between lag summary log entries (minutes). |
rtfs.worker.lag.log.threshold.minutes | 1 | Minimum lag before a repository appears in lag log entries (minutes). |
HTTP Client
The following properties configure the RTFS HTTP client.
| Property | Default | Description |
|---|---|---|
rtfs.reactive.http.client.connect.timeout.sec | 120 | Connection timeout (seconds). |
rtfs.reactive.http.client.response.timeout.sec | 120 | Response timeout (seconds). |
rtfs.reactive.http.client.read.timeout.sec | 120 | Read timeout (seconds). |
rtfs.reactive.http.client.write.timeout.sec | 120 | Write timeout (seconds). |
rtfs.reactive.http.client.max.in.memory.size | 5MB | Maximum in-memory buffer size. |
rtfs.reactive.http.client.max.connections | 50 | Maximum HTTP connections. |
rtfs.reactive.http.client.max.idle.time.sec | 20 | Maximum idle time (seconds). |
rtfs.reactive.http.client.max.life.time.sec | 30 | Maximum connection lifetime (seconds). |
rtfs.reactive.http.client.evict.in.background.sec | 30 | Background eviction interval (seconds). |
rtfs.reactive.http.client.retry.count | 5 | HTTP retry count. |
rtfs.reactive.http.client.retry.backoff.ms | 100 | Retry backoff (milliseconds). |
rtfs.reactive.http.client.retry.error.patterns | Connection prematurely closed, Connection reset, Connection refused, Connection timed out | Error patterns that trigger retries. |
rtfs.http.client.connection.timeout.ms | 5000 | HTTP client connection timeout (milliseconds). |
rtfs.http.client.socket.timeout.sec | 300 | HTTP socket timeout (seconds). |
Binary Tasks
The following properties configure binary task processing.
| Property | Default | Description |
|---|---|---|
rtfs.binary.tasks.enabled.status.cache.expiry.seconds | 300 | Cache expiry for binary tasks enabled status. |
rtfs.binary.tasks.legacy.cache.expiry.seconds | 300 | Cache expiry for legacy binary tasks. |
rtfs.binary.tasks.inbound.insert.batch.size | 500 | Batch size for inbound binary task inserts. |
rtfs.binary.tasks.handler.initial.delay.duration | PT1M | Initial delay for binary task handler. |
rtfs.binary.tasks.handler.run.duration | PT1S | Run interval for binary task handler. |
rtfs.binary.tasks.handler.tenants.thread.pool.size | 100 | Thread pool size for tenant binary tasks. |
rtfs.binary.tasks.handler.fetch.limit.per.tenant | 500 | Max binary tasks fetched per tenant. |
rtfs.binary.tasks.tenant.penalty.enabled | true | Enable tenant penalty for binary tasks. |
rtfs.binary.tasks.tenant.penalty.duration | PT1S | Penalty duration. |
rtfs.binary.tasks.tenant.penalty.recovery.duration | PT1S | Penalty recovery duration. |
rtfs.binary.tasks.max.retry.per.task | 10 | Maximum retries per binary task. |
rtfs.binaries.tasks.metrics.pending.lag.threshold.duration | PT5M | Pending lag threshold for metrics. |
rtfs.binaries.tasks.metrics.pending.lag.collection.duration | PT1M | Pending lag collection interval. |
rtfs.binaries.tasks.metrics.executing.lag.threshold.duration | PT5M | Executing lag threshold for metrics. |
rtfs.binaries.tasks.metrics.executing.lag.collection.duration | PT1M | Executing lag collection interval. |
File List Tasks
The following properties configure file list task processing.
| Property | Default | Description |
|---|---|---|
rtfs.file.list.tasks.job.cron | */30 * * ? * * * | Cron for file list tasks job. |
rtfs.file.list.tasks.allowed | 30 | Maximum concurrent file list tasks. |
rtfs.file.list.heartbeat.expired.minutes | 15 | Heartbeat expiry for file list tasks. |
rtfs.file.list.polling.limit.time.hours | 24 | Maximum polling time for file lists. |
rtfs.file.list.polling.wait.time.seconds | 30 | Wait time between file list polls. |
rtfs.file.list.size.metrics.threshold | 1000000 | File list size threshold for metrics. |
rtfs.file.list.process.rate.threshold.artifact.per.sec | 5 | Processing rate threshold. |
rtfs.file.list.sort.rate.threshold.artifact.per.sec | 10 | Sort rate threshold. |
rtfs.sync.in.memory.sort.enabled | true | Enable in-memory file list sorting. Required when performing Full Sync from a file. |
rtfs.sync.amount.of.entries.in.file | 400000 | Entries per file list file. |
file.list.tasks.thread.pool.size | 30 | Thread pool for file list tasks. |
rtfs.file.list.published.ttl.min | 30 | Time-to-live for a published Full Sync file list, in minutes. When a new Full Sync from a file is requested for a member within this window, RTFS reuses the existing published file list instead of regenerating it. Set to 0 to disable reuse and always regenerate the file list. See Trigger a Full Sync. |
Heartbeat and Mirror
The following properties configure heartbeat and mirror behavior.
| Property | Default | Description |
|---|---|---|
rtfs.mirror.heartbeat.cron | */20 * * ? * * * | Cron for mirror heartbeat job. |
rtfs.mirror.heartbeat.stale.sec | 600 | Stale heartbeat threshold (seconds). |
rtfs.mirror.heartbeat.inactive.threshold.hours | 24 | Inactive member threshold (hours). |
rtfs.enable.disable.check.expiry.time.min | 15 | Enable or disable check expiry (minutes). |
Priority
The following properties configure repository priority limits.
| Property | Default | Description |
|---|---|---|
rtfs.max.high.priority.repos.per.member | 10 | Maximum HIGH priority repos per member. |
rtfs.max.high.priority.repos.percentage | 0.2 | Maximum HIGH priority repos as percentage. |
Thread Pools
The following properties configure RTFS thread pool sizes.
| Property | Default | Description |
|---|---|---|
rtfs.jobs.thread.pool.size | 100 | General jobs thread pool. |
rtfs.heartbeat.thread.pool.size | 100 | Heartbeat thread pool. |
rtfs.tenant.thread.pool.size | 100 | Tenant operations thread pool. |
rtfs.tenant.heartbeat.thread.pool.size | 200 | Tenant heartbeat thread pool. |
rtfs.full.sync.thread.pool.size | 30 | Full sync thread pool. |
rtfs.request.tunneling.thread.pool.size | 30 | Request tunneling thread pool. |
rtfs.support.bundle.thread.pool.size | 5 | Support bundle thread pool. |
rtfs.tenant.config.sync.job.thread.pool.size | 100 | Tenant config sync thread pool. |
rtfs.repo.event.thread.pool.size | 100 | Repo event thread pool. |
gRPC
The following property configures the gRPC payload size.
| Property | Default | Description |
|---|---|---|
rtfs.grpc.server.max.payload.size | 4194304 (4MB) | Maximum gRPC payload size. |
Caching
The following properties configure RTFS caching behavior.
| Property | Default | Description |
|---|---|---|
rtfs.jpd.discovery.cache.time.min | 15 | JPD discovery cache time (minutes). |
rtfs.metric.cache.expiry.min | 2 | Metric cache expiry (minutes). |
rtfs.traffic.extended.info.cache.time.min | 120 | Traffic extended info cache time. |
rtfs.tenant.queue.exists.cache | 5 | Tenant queue existence cache time. |
rtfs.repo.mgmt.cache.expiration.time.min | 40 | Repo management cache expiry (minutes). |
rtfs.accessClient.remoteTokensCache.expirationSeconds | 600 | Remote tokens cache expiry (seconds). |
Scheduled Jobs
The following properties configure RTFS scheduled jobs.
| Property | Default | Description |
|---|---|---|
rtfs.call.home.collect.metrics.job.cron | 0 0 3 * * ? | Call home metrics collection. |
rtfs.collect.metrics.job.cron | */59 * * ? * * * | General metrics collection. |
rtfs.orphan.cleanup.cron | 0 0 2 * * ? | Orphan cleanup job. |
rtfs.partition.job.interval.cron | 0 0/30 * ? * * | Partition management job. |
rtfs.sub.partition.pk.monitoring.cron | 0 0 0 ? * * * | Sub-partition PK monitoring. |
rtfs.repo.config.sync.job.interval.cron | 0 0 * * * ? | Repo config sync job. |
rtfs.repo.config.integrity.job.interval.cron | 0 30 * * * ? | Repo config integrity check. |
rtfs.readiness.job.cron | */15 * * ? * * * | Readiness probe job. |
rtfs.export.metrics.job.interval.sec | 60 | Metrics export interval (seconds). |
rtfs.export.metrics.job.initial.delay.min | 1 | Metrics export initial delay (minutes). |
Miscellaneous
The following properties configure other RTFS behavior.
| Property | Default | Description |
|---|---|---|
rtfs.validate.configuration.presence.enabled | true | Validate configuration presence on startup. |
rtfs.repo.config.v2.jobs.enabled | true | Enable v2 repo config jobs. |
rtfs.replication.log.interval.ms | 1000 | Replication logging interval. |
rtfs.chunk.of.sub.partition.size | 7000000 | Sub-partition chunk size. |
rtfs.threshold.percentage.partition.creation.size | 50 | Partition creation threshold percentage. |
rtfs.db.lock.native.pool.size | 3 | Database lock pool size. |
rtfs.local.jpd.cache.fetch.url.max.attempts | 3 | Max URL fetch attempts. |
rtfs.local.jpd.cache.fetch.url.backoff.interval.ms | 300 | URL fetch backoff interval. |
rtfs.request.tunneling.allowlist | "" | Request tunneling allowlist. |
bi.directional.connectivity.enable | false | Bidirectional connectivity check. |
rtfs.traffic.rollover.thread.enabled | true | Enable traffic rollover thread. |
rtfs.tenant.move.export.lag.offset.grace.period.min | 10 | Tenant move export lag grace period. |
rtfs.exchange.token.limit.scope.enabled | true | Limit token exchange scope. |
rtfs.batch.mirror.forward.client.ip.header.enabled | false | Forward client IP header in batch mirrors. |
rtfs.bridge.url.enabled | false | Enable bridge URL. |
rtfs.access.enable.platform.config.cache | true | Enable platform config cache. |
rtfs.access.bridge.retry.backoff.initial.interval.ms | 20 | Access bridge retry initial interval. |
rtfs.access.bridge.retry.backoff.max.interval.ms | 1000 | Access bridge retry max interval. |
rtfs.access.bridge.retry.backoff.multiplier | 2.0 | Access bridge retry multiplier. |
rtfs.artifactory.bridge.unavailable.retry.max.attempts | 4 | Artifactory bridge retry max attempts. |
rtfs.artifactory.bridge.unavailable.retry.backoff.sec | 60 | Artifactory bridge retry backoff. |
Related Topics
Updated about 7 hours ago
