# Can be one of "pubsub-indexer", "pubsub", "indexer", or "indexer-benchmark" operation-mode = "pubsub-indexer" operation-mode = ${?OPERATION_MODE} ledger { # Available ids: Undeployed, DevNet, TestNet, MainNet network-id = ${?LEDGER_NETWORK_ID} } database { # Currently supported are "sqlite" and "postgresql" vendor = "sqlite" vendor = ${?DB_VENDOR} # Location of the database # For sqlite this is a file, for example "/opt/database/pubsub-indexer.sqlite", or ":memory:" to store the db in memory # For external RDBMS it is a connection URL, for example "localhost:5432/pubsub-indexer" url = "pubsub-indexer.sqlite" url = ${?DB_URL} # Credentials for the database connection user = "" user = ${?DB_USER} pass = "" pass = ${?DB_PASS} # Number of threads allocated to the database connection pool thread-pool-size = 8 # Max number of attempts to connect at startup # Retries start with 1s delay and backoff multiplier of 2 max-connect-retries = 8 } blocks-stream { # How frequently are progress updates emitted to a block subscription progress-updates-delay = 10s } wallets-indexer { # Size of the batch of transactions that are queried to build an update batch-size = 50 # Maximum number of concurrent threads to check if a transaction is relevant for a wallet max-concurrency = 8 # How long the wallet will be treated as Active. max-inactive-time = 30d # How frequently inactive wallets are stopped stop-inactive-wallets-frequency = 30s # Delay between attempts to continue indexing when an error is handled retry-delay = 10s } benchmark { # How many blocks will be taken into account during syncing benchmark. sync-size = 50000 sync-size = ${?SYNC_SIZE} } wallets-stream { # How frequently are progress updates emitted to a wallet subscription progress-updates-delay = 10s # How frequently keep-alive messages emitted. keep-alive-frequency = 5s # Maximum size of each batch of updates batch-size = 50 # Delay between attempts to continue streaming when an error is handled retry-delay = 10s } server { # Host to expose the server host = "0.0.0.0" host = ${?HOST} # Port to expose the server port = "8088" port = ${?PORT} # Whether to log the headers of all requests/responses log-headers = false log-headers = ${?LOG_HEADERS} # Whether to log the bodies of all requests/responses log-body = true log-body = ${?LOG_BODY} # Time to wait for a graceful shutdown shutdown-timeout = 30s shutdown-timeout = ${?SHUTDOWN_TIMEOUT} } events-source { node-ws-url = ${?SUBSTRATE_NODE_WS_URL} node-receive-timeout = 30s request-max-retries = -1 request-max-retries = ${?REQUEST_MAX_RETRIES} request-retry-delay = 5s request-retry-delay = ${?REQUEST_RETRY_DELAY} block-sync-max-concurrency = 4 } # GraphQL query parameters api { max-cost = 300 max-depth = 15 max-fields = 250 timeout = 5s } indexer { grouping-block-count = 100 grouping-time-window = 2s retry-delay = 10s } pub-sub { # Either "in-memory" or a redis URL to connect location = "in-memory" location = ${?REDIS_URL} user = "default" user = ${?REDIS_USER} pass = "" pass = ${?REDIS_PASS} # Delay between attempts to subscribe when there's a problem subscription-retry-delay = 10s subscription-retry-delay = ${?SUBSCRIPTION_RETRY_DELAY} } # Level of log verbosity # Valid values in order of verbosity are: ALL, TRACE, DEBUG, INFO, WARN, ERROR, OFF log.level = ${?LOG_LEVEL}