# Running user and group
User=fts3
Group=fts3

# Database type (mysql only)
DbType=mysql

# Database username
DbUserName=replacethis

# Database password
DbPassword=replacethis

# For MySQL, it has to follow the format 'host/db' (i.e. "mysql-server.example.com/fts3db")
DbConnectString=replacethis

# Number of database connections in the pool (use even number, e.g. 2,4,6,8,etc OR 1 for a single connection)
DbThreadsNum=26

# The alias used for the FTS endpoint
# Note: will be published in the FTS Transfers Dashboard
Alias=replacethis

# Infosys: <fqdn:port> of a BDII instance or false to disable BDII access
Infosys=lcg-bdii.cern.ch:2170

# Query the info systems according to the given order (e.g.: glue1;glue2)
InfoProviders=glue1

# Site name running the FTS3 service (will be published to GLUE2)
SiteName=replacethis

# Enable or disable monitoring messages (see fts-msg-monitoring.conf)
MonitoringMessaging=true

# Directory where the internal FTS3 messages are written
MessagingDirectory=/var/lib/fts3

# Set the UrlCopyProcess ping and transfer update interval.
# For throughput monitoring (Profiling is enabled), a lower value is better.
# Lowest recommended value should exceed the Gfal2 performance markers (as often as every 5 seconds)
UrlCopyProcessPingInterval=60

# Log directories
TransferLogDirectory=/var/log/fts3/transfers
ServerLogDirectory=/var/log/fts3

# Log level. Enables logging for messages of level >= than configured
# Possible values are
#   TRACE (every detail), DEBUG (internal behaviour), INFO (normal behaviour),
#   NOTICE (final states), WARNING (things worth checking), ERR (internal FTS3 errors, as database connectivity),
#   CRIT (fatal errors, as segmentation fault)
# It is recommended to use INFO or DEBUG
LogLevel=INFO

# Enable Profiling log messages
Profiling=false

# Log HTTP content of token requests
# Note: this will write access tokens to the log file
LogTokenRequests=false

## Scheduler and MessagingProcessing Service settings
# Wait time between scheduler runs (measured in seconds)
#SchedulingInterval = 2
# How often to check for new inter-process messages (measured in seconds)
# Note: should be less than CheckStalledTimeout / 2
#MessagingConsumeInterval = 1

# Minimum required free RAM (in MB) for FTS3 to work normally
# If the amount of free RAM goes below the limit, FTS3 will enter auto-drain mode
# This is intended to protect against system resource exhaustion
# MinRequiredFreeRAM = 50

# Maximum number of url copy processes that the node can run
# The RAM limitation may not take into account other node limitations (i.e. IO)
# or, depending on the swapping policy, may not even prevent overloads if the kernel
# starts swapping before the free RAM decreases until it reaches the value of MinRequiredFreeRAM
# The default is 400 / Use 0 to disable the check
# MaxUrlCopyProcesses = 400

## Parameters for QoS daemon - BringOnline operation
# Maximum bulk size
# If the size is too large, it will take more resources (memory and CPU) to generate the requests
# and parse the responses. Some servers may reject the requests if they are too big.
# If it is too small, performance will be reduced.
# Keep it to a sensible size (between 100 and 1k)
# StagingBulkSize=200

# Maximum number of concurrent requests
# The maximum number of files sent to the Tape system = StagingBulkSize * StagingConcurrentRequests
# The larger the number, the more requests the QoS daemon will need to keep track of.
# StagingConcurrentRequests=1000

# Seconds to wait before submitting a bulk request
# Allows the QoS daemon to accumulate more files per bulk request.
# Note that the resolution is the StagingSchedulingInterval.
# StagingWaitingFactor=300

# How often to run the scheduler for BringOnline operations (measured in seconds)
# StagingSchedulingInterval=60
# Number of times to retry if a staging poll fails with ECOMM
# StagingPollRetries=3

# Default value for bring-online timeout if none if provided by the user
# DefaultBringOnlineTimeout = 604800
# Default value for copy-pin-lifetime if none if provided by the user
# DefaultCopyPinLifetime = 604800

# Interval between heartbeats (measured in seconds)
# HeartBeatInterval=60
# After this interval a host is considered down (measured in seconds)
# HeartBeatGraceInterval=120

## Optimizer Service settings
# Optimizer run time interval for active links (measured in seconds)
# OptimizerInterval = 60
# Force an Optimizer run after this time without updates (measured in seconds)
# OptimizerSteadyInterval = 300
# Maximum number of streams per file
# OptimizerMaxStreams = 16

# EMA Alpha factor to reduce the influence of fluctuations
# OptimizerEMAAlpha = 0.1
# Increase step size when the optimizer considers the performance is good
# OptimizerIncreaseStep = 1
# Increase step size when the optimizer considers the performance is good, and set to aggressive or normal
# OptimizerAggressiveIncreaseStep = 2
# Decrease step size when the optimizer considers the performance is bad
# OptimizerDecreaseStep = 1

## Cleaner Service settings
# Set the cleaning bulk size when purging old records (number of jobs)
#CleanBulkSize=5000
# Entries older than this will be purged (measured in days)
#CleanInterval=7

## SanityChecks Service settings
## Sanity checks are usually demanding as they scan through the database.
## The higher the values for the following parameters,
## the higher the latency for some operations (such as cancellations).
## At the same time, higher values reduce system and/or database load

# In seconds, how often to purge the messaging directory
#PurgeMessagingDirectoryInterval = 600
# In seconds, how often to run sanity checks
#CheckSanityStateInterval = 3600
# In seconds, how often to run multihop sanity checks
#MultihopSanityStateInterval = 600
# In seconds, how often to check for canceled transfers
#CancelCheckInterval = 10
# In seconds, how often to check for expired queued transfers
#QueueTimeoutCheckInterval = 300
# In seconds, how often to check for stalled transfers
#ActiveTimeoutCheckInterval = 300
# In seconds, how often to check for force start transfers
#ForceStartTransfersCheckInterval = 30
# Check for "fts_url_copy" processes that do not report back their activity
#CheckStalledTransfers = true
# In seconds, timeout for stalled "fts_url_copy" processes
#CheckStalledTimeout = 900

# Enable or disable job priorities (1 = fixed, 0 = follow job priorities)
# By default (value = 0), it honors the user-specified priorities
#UseFixedJobPriority = 0

# Behavior for failed multihop jobs
# Cancel all NOT_USED files in a failed multihop job (default false)
#CancelUnusedMultihopFiles = False

# Flag for the Transfer Agent to retrieve Storage Element issued tokens (e.g.: macaroons) (default false)
#RetrieveSEToken = false

# Tell the FTS system to not manage access tokens that don't meet certain criteria (default false)
NonManagedTokens = True

# Flag to enable backwards compatible names when searching for proxy credentials on the local filesystem (default true)
# New naming convention: /tmp/x509up_h<hash>_<delegation_id>
# Backwards compatible naming: /tmp/x509up_h<hash><encodedDN>
#BackwardsCompatibleProxyNames = False

# In seconds, how often to check for access tokens which don't have an associated refresh token
TokenExchangeCheckInterval = 30
