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.yaml overlays, set the key-value map under rtfs.persistence.federationProperties in your chart values (for example, custom-values.yaml), then run helm upgrade.
  • When you deploy the standalone Artifactory Federation Service Helm chart, set the same keys under persistence.federationProperties, not under rtfs.. 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.

PropertyDefaultDescription
rtfs.full.sync.batch.size2000Artifacts per full sync batch.
rtfs.full.sync.job.run.members.batch.size50Members to process per full sync job run.
rtfs.full.sync.job.interval.sec120Interval between full sync job runs (seconds).
rtfs.full.sync.job.initial.delay.min1Initial delay before first full sync job (minutes).
rtfs.full.sync.grace.period.min60Minimum time between full syncs for the same member (minutes).
rtfs.full.sync.execution.time.threshold.min30Threshold for logging long-running full syncs (minutes).
rtfs.full.sync.batch.retry.quite.period.seconds5Quiet period between batch retries (seconds).
rtfs.full.sync.batch.retry.count5Maximum batch retry count.
rtfs.full.sync.heartbeat.stale.min30Time before a full sync heartbeat is considered stale (minutes).
rtfs.full.sync.cleanup.cron0 0/10 * * * ? *Cron expression for full sync cleanup job.
rtfs.dry.full.sync.batch.size2000Batch size for dry full sync.
federated.repo.full.sync.backoff.time.min0Backoff time between full syncs (minutes).

Auto-Healing

The following properties configure auto-healing for members in error states.

PropertyDefaultDescription
rtfs.auto.healing.enabledtrueEnable automatic recovery for members in error states.
rtfs.auto.healing.job.interval.sec20Auto-healing check interval (seconds).
rtfs.auto.healing.job.initial.delay.min1Initial delay before first auto-healing check (minutes).

Event Stream and Workers

The following properties configure event stream processing and worker batches.

PropertyDefaultDescription
rtfs.stream.allocation.size50Stream allocation size for event processing.
rtfs.worker.batch.size100Events per worker batch (STANDARD priority).
rtfs.worker.max.events.processed.in.batch200Maximum events processed in a single batch.
rtfs.worker.max.events.processed.in.batch.for.high.priority400Maximum events for HIGH or URGENT priority batches.
rtfs.worker.max.retry.count2Maximum retry count per worker.
rtfs.worker.min.return.backoff.sec2Minimum backoff between retries (seconds).
rtfs.worker.batch.processing.time.margin.sec5Time margin for batch processing (seconds).
rtfs.skip.delete.events.dedupfalseSkip deduplication of delete events.
rtfs.events.processor.request.timeout.sec30Timeout for event processing requests (seconds).
rtfs.events.cleanup.cron0 0 1 * * ?Cron for event cleanup job.
rtfs.events.cleanup.retention.time.Days3Event 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.

PropertyDefaultDescription
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.cron0 */2 * ? * *Cron for stream lag collection. Runs every 2 minutes to measure processing delay.
rtfs.stream.lag.stale.grace.period.sec120Grace 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.sec20Worker lag threshold (seconds). When lag exceeds this value, the member may transition to a DELAYED status in the dashboard.
rtfs.workers.lag.top.repos.limit3Number of top lagging repos to report in log entries, helping identify which repositories are most behind.
rtfs.worker.lag.log.period.minutes30Interval between lag summary log entries (minutes).
rtfs.worker.lag.log.threshold.minutes1Minimum lag before a repository appears in lag log entries (minutes).

HTTP Client

The following properties configure the RTFS HTTP client.

PropertyDefaultDescription
rtfs.reactive.http.client.connect.timeout.sec120Connection timeout (seconds).
rtfs.reactive.http.client.response.timeout.sec120Response timeout (seconds).
rtfs.reactive.http.client.read.timeout.sec120Read timeout (seconds).
rtfs.reactive.http.client.write.timeout.sec120Write timeout (seconds).
rtfs.reactive.http.client.max.in.memory.size5MBMaximum in-memory buffer size.
rtfs.reactive.http.client.max.connections50Maximum HTTP connections.
rtfs.reactive.http.client.max.idle.time.sec20Maximum idle time (seconds).
rtfs.reactive.http.client.max.life.time.sec30Maximum connection lifetime (seconds).
rtfs.reactive.http.client.evict.in.background.sec30Background eviction interval (seconds).
rtfs.reactive.http.client.retry.count5HTTP retry count.
rtfs.reactive.http.client.retry.backoff.ms100Retry backoff (milliseconds).
rtfs.reactive.http.client.retry.error.patternsConnection prematurely closed, Connection reset, Connection refused, Connection timed outError patterns that trigger retries.
rtfs.http.client.connection.timeout.ms5000HTTP client connection timeout (milliseconds).
rtfs.http.client.socket.timeout.sec300HTTP socket timeout (seconds).

Binary Tasks

The following properties configure binary task processing.

PropertyDefaultDescription
rtfs.binary.tasks.enabled.status.cache.expiry.seconds300Cache expiry for binary tasks enabled status.
rtfs.binary.tasks.legacy.cache.expiry.seconds300Cache expiry for legacy binary tasks.
rtfs.binary.tasks.inbound.insert.batch.size500Batch size for inbound binary task inserts.
rtfs.binary.tasks.handler.initial.delay.durationPT1MInitial delay for binary task handler.
rtfs.binary.tasks.handler.run.durationPT1SRun interval for binary task handler.
rtfs.binary.tasks.handler.tenants.thread.pool.size100Thread pool size for tenant binary tasks.
rtfs.binary.tasks.handler.fetch.limit.per.tenant500Max binary tasks fetched per tenant.
rtfs.binary.tasks.tenant.penalty.enabledtrueEnable tenant penalty for binary tasks.
rtfs.binary.tasks.tenant.penalty.durationPT1SPenalty duration.
rtfs.binary.tasks.tenant.penalty.recovery.durationPT1SPenalty recovery duration.
rtfs.binary.tasks.max.retry.per.task10Maximum retries per binary task.
rtfs.binaries.tasks.metrics.pending.lag.threshold.durationPT5MPending lag threshold for metrics.
rtfs.binaries.tasks.metrics.pending.lag.collection.durationPT1MPending lag collection interval.
rtfs.binaries.tasks.metrics.executing.lag.threshold.durationPT5MExecuting lag threshold for metrics.
rtfs.binaries.tasks.metrics.executing.lag.collection.durationPT1MExecuting lag collection interval.

File List Tasks

The following properties configure file list task processing.

PropertyDefaultDescription
rtfs.file.list.tasks.job.cron*/30 * * ? * * *Cron for file list tasks job.
rtfs.file.list.tasks.allowed30Maximum concurrent file list tasks.
rtfs.file.list.heartbeat.expired.minutes15Heartbeat expiry for file list tasks.
rtfs.file.list.polling.limit.time.hours24Maximum polling time for file lists.
rtfs.file.list.polling.wait.time.seconds30Wait time between file list polls.
rtfs.file.list.size.metrics.threshold1000000File list size threshold for metrics.
rtfs.file.list.process.rate.threshold.artifact.per.sec5Processing rate threshold.
rtfs.file.list.sort.rate.threshold.artifact.per.sec10Sort rate threshold.
rtfs.sync.in.memory.sort.enabledtrueEnable in-memory file list sorting. Required when performing Full Sync from a file.
rtfs.sync.amount.of.entries.in.file400000Entries per file list file.
file.list.tasks.thread.pool.size30Thread pool for file list tasks.
rtfs.file.list.published.ttl.min30Time-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.

PropertyDefaultDescription
rtfs.mirror.heartbeat.cron*/20 * * ? * * *Cron for mirror heartbeat job.
rtfs.mirror.heartbeat.stale.sec600Stale heartbeat threshold (seconds).
rtfs.mirror.heartbeat.inactive.threshold.hours24Inactive member threshold (hours).
rtfs.enable.disable.check.expiry.time.min15Enable or disable check expiry (minutes).

Priority

The following properties configure repository priority limits.

PropertyDefaultDescription
rtfs.max.high.priority.repos.per.member10Maximum HIGH priority repos per member.
rtfs.max.high.priority.repos.percentage0.2Maximum HIGH priority repos as percentage.

Thread Pools

The following properties configure RTFS thread pool sizes.

PropertyDefaultDescription
rtfs.jobs.thread.pool.size100General jobs thread pool.
rtfs.heartbeat.thread.pool.size100Heartbeat thread pool.
rtfs.tenant.thread.pool.size100Tenant operations thread pool.
rtfs.tenant.heartbeat.thread.pool.size200Tenant heartbeat thread pool.
rtfs.full.sync.thread.pool.size30Full sync thread pool.
rtfs.request.tunneling.thread.pool.size30Request tunneling thread pool.
rtfs.support.bundle.thread.pool.size5Support bundle thread pool.
rtfs.tenant.config.sync.job.thread.pool.size100Tenant config sync thread pool.
rtfs.repo.event.thread.pool.size100Repo event thread pool.

gRPC

The following property configures the gRPC payload size.

PropertyDefaultDescription
rtfs.grpc.server.max.payload.size4194304 (4MB)Maximum gRPC payload size.

Caching

The following properties configure RTFS caching behavior.

PropertyDefaultDescription
rtfs.jpd.discovery.cache.time.min15JPD discovery cache time (minutes).
rtfs.metric.cache.expiry.min2Metric cache expiry (minutes).
rtfs.traffic.extended.info.cache.time.min120Traffic extended info cache time.
rtfs.tenant.queue.exists.cache5Tenant queue existence cache time.
rtfs.repo.mgmt.cache.expiration.time.min40Repo management cache expiry (minutes).
rtfs.accessClient.remoteTokensCache.expirationSeconds600Remote tokens cache expiry (seconds).

Scheduled Jobs

The following properties configure RTFS scheduled jobs.

PropertyDefaultDescription
rtfs.call.home.collect.metrics.job.cron0 0 3 * * ?Call home metrics collection.
rtfs.collect.metrics.job.cron*/59 * * ? * * *General metrics collection.
rtfs.orphan.cleanup.cron0 0 2 * * ?Orphan cleanup job.
rtfs.partition.job.interval.cron0 0/30 * ? * *Partition management job.
rtfs.sub.partition.pk.monitoring.cron0 0 0 ? * * *Sub-partition PK monitoring.
rtfs.repo.config.sync.job.interval.cron0 0 * * * ?Repo config sync job.
rtfs.repo.config.integrity.job.interval.cron0 30 * * * ?Repo config integrity check.
rtfs.readiness.job.cron*/15 * * ? * * *Readiness probe job.
rtfs.export.metrics.job.interval.sec60Metrics export interval (seconds).
rtfs.export.metrics.job.initial.delay.min1Metrics export initial delay (minutes).

Miscellaneous

The following properties configure other RTFS behavior.

PropertyDefaultDescription
rtfs.validate.configuration.presence.enabledtrueValidate configuration presence on startup.
rtfs.repo.config.v2.jobs.enabledtrueEnable v2 repo config jobs.
rtfs.replication.log.interval.ms1000Replication logging interval.
rtfs.chunk.of.sub.partition.size7000000Sub-partition chunk size.
rtfs.threshold.percentage.partition.creation.size50Partition creation threshold percentage.
rtfs.db.lock.native.pool.size3Database lock pool size.
rtfs.local.jpd.cache.fetch.url.max.attempts3Max URL fetch attempts.
rtfs.local.jpd.cache.fetch.url.backoff.interval.ms300URL fetch backoff interval.
rtfs.request.tunneling.allowlist""Request tunneling allowlist.
bi.directional.connectivity.enablefalseBidirectional connectivity check.
rtfs.traffic.rollover.thread.enabledtrueEnable traffic rollover thread.
rtfs.tenant.move.export.lag.offset.grace.period.min10Tenant move export lag grace period.
rtfs.exchange.token.limit.scope.enabledtrueLimit token exchange scope.
rtfs.batch.mirror.forward.client.ip.header.enabledfalseForward client IP header in batch mirrors.
rtfs.bridge.url.enabledfalseEnable bridge URL.
rtfs.access.enable.platform.config.cachetrueEnable platform config cache.
rtfs.access.bridge.retry.backoff.initial.interval.ms20Access bridge retry initial interval.
rtfs.access.bridge.retry.backoff.max.interval.ms1000Access bridge retry max interval.
rtfs.access.bridge.retry.backoff.multiplier2.0Access bridge retry multiplier.
rtfs.artifactory.bridge.unavailable.retry.max.attempts4Artifactory bridge retry max attempts.
rtfs.artifactory.bridge.unavailable.retry.backoff.sec60Artifactory bridge retry backoff.

Related Topics


Did this page help you?