Documentation
¶
Index ¶
- Variables
- func DefaultValue(name string) (string, bool)
- func Name(field string) string
- func TryName(field string) string
- func ZeroValue(name string) interface{}
- type ConfigSchema
- type EnvVar
- func (e *EnvVar) Parse() (v interface{}, invalid string)
- func (e *EnvVar) ParseBool() (v bool, invalid string)
- func (e *EnvVar) ParseFileSize() (v utils.FileSize, invalid string)
- func (e *EnvVar) ParseFrom(get func(string) string) (v interface{}, invalid string, err error)
- func (e *EnvVar) ParseInt64() (v int64, invalid string)
- func (e *EnvVar) ParseLogLevel() (v zapcore.Level, invalid string)
- func (e *EnvVar) ParseString() (v string, invalid string)
Constants ¶
This section is empty.
Variables ¶
var ( // LogLevel reprents a parseable version of the `LOG_LEVEL`env var. LogLevel = New("LogLevel", parse.LogLevel) // RootDir reprents a parseable version of the `ROOT`env var. RootDir = New("RootDir", parse.HomeDir) // JSONConsole reprents a parseable version of the `JSON_CONSOLE`env var. JSONConsole = New("JSONConsole", parse.Bool) // LogFileMaxSize reprents a parseable version of the `LOG_FILE_MAX_SIZE`env var. LogFileMaxSize = New("LogFileMaxSize", parse.FileSize) // LogFileMaxAge reprents a parseable version of the `LOG_FILE_MAX_AGE`env var. LogFileMaxAge = New("LogFileMaxAge", parse.Int64) // LogFileMaxBackups reprents a parseable version of the `LOG_FILE_MAX_BACKUPS`env var. LogFileMaxBackups = New("LogFileMaxBackups", parse.Int64) // LogUnixTS reprents a parseable version of the `LOG_UNIX_TS`env var. LogUnixTS = New("LogUnixTS", parse.Bool) )
Functions ¶
func DefaultValue ¶
DefaultValue looks up the default value
Types ¶
type ConfigSchema ¶
type ConfigSchema struct {
// ESSENTIAL
DatabaseURL string `env:"DATABASE_URL"`
// General/misc
ChainType string `env:"CHAIN_TYPE"`
Dev bool `env:"CHAINLINK_DEV" default:"false"`
ExplorerAccessKey string `env:"EXPLORER_ACCESS_KEY"`
ExplorerSecret string `env:"EXPLORER_SECRET"`
ExplorerURL *url.URL `env:"EXPLORER_URL"`
FlagsContractAddress string `env:"FLAGS_CONTRACT_ADDRESS"` //nodoc
InsecureFastScrypt bool `env:"INSECURE_FAST_SCRYPT" default:"false"` //nodoc
ReaperExpiration models.Duration `env:"REAPER_EXPIRATION" default:"240h"` //nodoc
RootDir string `env:"ROOT" default:"~/.chainlink"`
TelemetryIngressUniConn bool `env:"TELEMETRY_INGRESS_UNICONN" default:"true"`
TelemetryIngressLogging bool `env:"TELEMETRY_INGRESS_LOGGING" default:"false"`
TelemetryIngressServerPubKey string `env:"TELEMETRY_INGRESS_SERVER_PUB_KEY"`
TelemetryIngressURL *url.URL `env:"TELEMETRY_INGRESS_URL"`
TelemetryIngressBufferSize uint `env:"TELEMETRY_INGRESS_BUFFER_SIZE" default:"100"`
TelemetryIngressMaxBatchSize uint `env:"TELEMETRY_INGRESS_MAX_BATCH_SIZE" default:"50"`
TelemetryIngressSendInterval time.Duration `env:"TELEMETRY_INGRESS_SEND_INTERVAL" default:"500ms"`
TelemetryIngressSendTimeout time.Duration `env:"TELEMETRY_INGRESS_SEND_TIMEOUT" default:"10s"`
TelemetryIngressUseBatchSend bool `env:"TELEMETRY_INGRESS_USE_BATCH_SEND" default:"true"`
ShutdownGracePeriod time.Duration `env:"SHUTDOWN_GRACE_PERIOD" default:"5s"`
// Database
DatabaseListenerMaxReconnectDuration time.Duration `env:"DATABASE_LISTENER_MAX_RECONNECT_DURATION" default:"10m"` //nodoc
DatabaseListenerMinReconnectInterval time.Duration `env:"DATABASE_LISTENER_MIN_RECONNECT_INTERVAL" default:"1m"` //nodoc
MigrateDatabase bool `env:"MIGRATE_DATABASE" default:"true"`
ORMMaxIdleConns int `env:"ORM_MAX_IDLE_CONNS" default:"10"`
ORMMaxOpenConns int `env:"ORM_MAX_OPEN_CONNS" default:"20"`
TriggerFallbackDBPollInterval time.Duration `env:"TRIGGER_FALLBACK_DB_POLL_INTERVAL" default:"30s"` //nodoc
// Database Global Lock
AdvisoryLockCheckInterval time.Duration `env:"ADVISORY_LOCK_CHECK_INTERVAL" default:"1s"`
AdvisoryLockID int64 `env:"ADVISORY_LOCK_ID" default:"1027321974924625846"`
DatabaseLockingMode string `env:"DATABASE_LOCKING_MODE" default:"dual"`
LeaseLockDuration time.Duration `env:"LEASE_LOCK_DURATION" default:"10s"`
LeaseLockRefreshInterval time.Duration `env:"LEASE_LOCK_REFRESH_INTERVAL" default:"1s"`
// Database Autobackups
DatabaseBackupDir string `env:"DATABASE_BACKUP_DIR"`
DatabaseBackupFrequency time.Duration `env:"DATABASE_BACKUP_FREQUENCY" default:"1h"`
DatabaseBackupMode string `env:"DATABASE_BACKUP_MODE" default:"none"`
DatabaseBackupOnVersionUpgrade bool `env:"DATABASE_BACKUP_ON_VERSION_UPGRADE" default:"true"`
DatabaseBackupURL *url.URL `env:"DATABASE_BACKUP_URL"`
// Logging
JSONConsole bool `env:"JSON_CONSOLE" default:"false"`
LogFileDir string `env:"LOG_FILE_DIR"`
LogLevel zapcore.Level `env:"LOG_LEVEL"`
LogSQL bool `env:"LOG_SQL" default:"false"`
LogFileMaxSize utils.FileSize `env:"LOG_FILE_MAX_SIZE" default:"5120mb"` // 5120mb was determined based on previously collected logs, in which a daily log would be ~2.5GB and compressed would be ~210MB
LogFileMaxAge int64 `env:"LOG_FILE_MAX_AGE" default:"0"`
LogFileMaxBackups int64 `env:"LOG_FILE_MAX_BACKUPS" default:"1"`
LogUnixTS bool `env:"LOG_UNIX_TS" default:"false"`
// Web Server
AllowOrigins string `env:"ALLOW_ORIGINS" default:"http://localhost:3000,http://localhost:6688"`
AuthenticatedRateLimit int64 `env:"AUTHENTICATED_RATE_LIMIT" default:"1000"`
AuthenticatedRateLimitPeriod time.Duration `env:"AUTHENTICATED_RATE_LIMIT_PERIOD" default:"1m"`
BridgeResponseURL url.URL `env:"BRIDGE_RESPONSE_URL"`
HTTPServerWriteTimeout time.Duration `env:"HTTP_SERVER_WRITE_TIMEOUT" default:"10s"`
Port uint16 `env:"CHAINLINK_PORT" default:"6688"`
SecureCookies bool `env:"SECURE_COOKIES" default:"true"`
SessionTimeout models.Duration `env:"SESSION_TIMEOUT" default:"15m"`
UnAuthenticatedRateLimit int64 `env:"UNAUTHENTICATED_RATE_LIMIT" default:"5"`
UnAuthenticatedRateLimitPeriod time.Duration `env:"UNAUTHENTICATED_RATE_LIMIT_PERIOD" default:"20s"`
// Web Server MFA
RPID string `env:"MFA_RPID"`
RPOrigin string `env:"MFA_RPORIGIN"`
// Web Server TLS
TLSCertPath string `env:"TLS_CERT_PATH" `
TLSHost string `env:"CHAINLINK_TLS_HOST" `
TLSKeyPath string `env:"TLS_KEY_PATH" `
TLSPort uint16 `env:"CHAINLINK_TLS_PORT" default:"6689"`
TLSRedirect bool `env:"CHAINLINK_TLS_REDIRECT" default:"false"`
// Feeds manager
FeatureFeedsManager bool `env:"FEATURE_FEEDS_MANAGER" default:"false"` //nodoc
FeatureUICSAKeys bool `env:"FEATURE_UI_CSA_KEYS" default:"false"` //nodoc
// General chains/RPC
EVMEnabled bool `env:"EVM_ENABLED" default:"true"`
EVMRPCEnabled bool `env:"EVM_RPC_ENABLED" default:"true"`
SolanaEnabled bool `env:"SOLANA_ENABLED" default:"false"`
TerraEnabled bool `env:"TERRA_ENABLED" default:"false"`
// EVM/Ethereum
// Legacy Eth ENV vars
EthereumHTTPURL string `env:"ETH_HTTP_URL"`
EthereumNodes string `env:"EVM_NODES"`
EthereumSecondaryURL string `env:"ETH_SECONDARY_URL"` //nodoc
EthereumSecondaryURLs string `env:"ETH_SECONDARY_URLS"`
EthereumURL string `env:"ETH_URL"`
// Global
DefaultChainID *big.Int `env:"ETH_CHAIN_ID"`
// Per-chain overrides
BalanceMonitorEnabled bool `env:"BALANCE_MONITOR_ENABLED"`
BlockBackfillDepth uint64 `env:"BLOCK_BACKFILL_DEPTH" default:"10"`
BlockBackfillSkip bool `env:"BLOCK_BACKFILL_SKIP" default:"false"`
BlockEmissionIdleWarningThreshold time.Duration `env:"BLOCK_EMISSION_IDLE_WARNING_THRESHOLD"` //nodoc
EthTxReaperInterval time.Duration `env:"ETH_TX_REAPER_INTERVAL"`
EthTxReaperThreshold time.Duration `env:"ETH_TX_REAPER_THRESHOLD"`
EthTxResendAfterThreshold time.Duration `env:"ETH_TX_RESEND_AFTER_THRESHOLD"`
EvmFinalityDepth uint32 `env:"ETH_FINALITY_DEPTH"`
EvmHeadTrackerHistoryDepth uint `env:"ETH_HEAD_TRACKER_HISTORY_DEPTH"`
EvmHeadTrackerMaxBufferSize uint `env:"ETH_HEAD_TRACKER_MAX_BUFFER_SIZE"`
EvmHeadTrackerSamplingInterval time.Duration `env:"ETH_HEAD_TRACKER_SAMPLING_INTERVAL"`
EvmLogBackfillBatchSize uint32 `env:"ETH_LOG_BACKFILL_BATCH_SIZE"`
EvmRPCDefaultBatchSize uint32 `env:"ETH_RPC_DEFAULT_BATCH_SIZE"`
LinkContractAddress string `env:"LINK_CONTRACT_ADDRESS"`
MinIncomingConfirmations uint32 `env:"MIN_INCOMING_CONFIRMATIONS"`
MinRequiredOutgoingConfirmations uint64 `env:"MIN_OUTGOING_CONFIRMATIONS"`
MinimumContractPayment assets.Link `env:"MINIMUM_CONTRACT_PAYMENT_LINK_JUELS"`
// Node liveness checking
NodeNoNewHeadsThreshold time.Duration `env:"NODE_NO_NEW_HEADS_THRESHOLD"`
NodePollFailureThreshold uint32 `env:"NODE_POLL_FAILURE_THRESHOLD"`
NodePollInterval time.Duration `env:"NODE_POLL_INTERVAL"`
// EVM Gas Controls
EvmEIP1559DynamicFees bool `env:"EVM_EIP1559_DYNAMIC_FEES"`
EvmGasBumpPercent uint16 `env:"ETH_GAS_BUMP_PERCENT"`
EvmGasBumpThreshold uint64 `env:"ETH_GAS_BUMP_THRESHOLD"`
EvmGasBumpWei *big.Int `env:"ETH_GAS_BUMP_WEI"`
EvmGasFeeCapDefault *big.Int `env:"EVM_GAS_FEE_CAP_DEFAULT"`
EvmGasLimitDefault uint64 `env:"ETH_GAS_LIMIT_DEFAULT"`
EvmGasLimitMultiplier float32 `env:"ETH_GAS_LIMIT_MULTIPLIER"`
EvmGasLimitTransfer uint64 `env:"ETH_GAS_LIMIT_TRANSFER"`
EvmGasPriceDefault *big.Int `env:"ETH_GAS_PRICE_DEFAULT"`
EvmGasTipCapDefault *big.Int `env:"EVM_GAS_TIP_CAP_DEFAULT"`
EvmGasTipCapMinimum *big.Int `env:"EVM_GAS_TIP_CAP_MINIMUM"`
EvmMaxGasPriceWei *big.Int `env:"ETH_MAX_GAS_PRICE_WEI"`
EvmMinGasPriceWei *big.Int `env:"ETH_MIN_GAS_PRICE_WEI"`
// Gas Estimation
GasEstimatorMode string `env:"GAS_ESTIMATOR_MODE"`
BlockHistoryEstimatorBatchSize uint32 `env:"BLOCK_HISTORY_ESTIMATOR_BATCH_SIZE"`
BlockHistoryEstimatorBlockDelay uint16 `env:"BLOCK_HISTORY_ESTIMATOR_BLOCK_DELAY"`
BlockHistoryEstimatorBlockHistorySize uint16 `env:"BLOCK_HISTORY_ESTIMATOR_BLOCK_HISTORY_SIZE"`
BlockHistoryEstimatorEIP1559FeeCapBufferBlocks uint16 `env:"BLOCK_HISTORY_ESTIMATOR_EIP1559_FEE_CAP_BUFFER_BLOCKS"`
BlockHistoryEstimatorTransactionPercentile uint16 `env:"BLOCK_HISTORY_ESTIMATOR_TRANSACTION_PERCENTILE"`
// Txm
EvmGasBumpTxDepth uint16 `env:"ETH_GAS_BUMP_TX_DEPTH"`
EvmMaxInFlightTransactions uint32 `env:"ETH_MAX_IN_FLIGHT_TRANSACTIONS"`
EvmMaxQueuedTransactions uint64 `env:"ETH_MAX_QUEUED_TRANSACTIONS"`
EvmNonceAutoSync bool `env:"ETH_NONCE_AUTO_SYNC"`
// Job Pipeline and tasks
DefaultHTTPAllowUnrestrictedNetworkAccess bool `env:"DEFAULT_HTTP_ALLOW_UNRESTRICTED_NETWORK_ACCESS" default:"false"`
DefaultHTTPLimit int64 `env:"DEFAULT_HTTP_LIMIT" default:"32768"`
DefaultHTTPTimeout models.Duration `env:"DEFAULT_HTTP_TIMEOUT" default:"15s"`
FeatureExternalInitiators bool `env:"FEATURE_EXTERNAL_INITIATORS" default:"false"`
JobPipelineMaxRunDuration time.Duration `env:"JOB_PIPELINE_MAX_RUN_DURATION" default:"10m"`
JobPipelineReaperInterval time.Duration `env:"JOB_PIPELINE_REAPER_INTERVAL" default:"1h"`
JobPipelineReaperThreshold time.Duration `env:"JOB_PIPELINE_REAPER_THRESHOLD" default:"24h"`
JobPipelineResultWriteQueueDepth uint64 `env:"JOB_PIPELINE_RESULT_WRITE_QUEUE_DEPTH" default:"100"`
// Flux Monitor
FMDefaultTransactionQueueDepth uint32 `env:"FM_DEFAULT_TRANSACTION_QUEUE_DEPTH" default:"1"` //nodoc
FMSimulateTransactions bool `env:"FM_SIMULATE_TRANSACTIONS" default:"false"`
// OCR V2
FeatureOffchainReporting2 bool `env:"FEATURE_OFFCHAIN_REPORTING2" default:"false"` //nodoc
// Global defaults
OCR2ContractConfirmations uint `env:"OCR2_CONTRACT_CONFIRMATIONS" default:"3"` //nodoc
OCR2BlockchainTimeout time.Duration `env:"OCR2_BLOCKCHAIN_TIMEOUT" default:"20s"` //nodoc
OCR2ContractPollInterval time.Duration `env:"OCR2_CONTRACT_POLL_INTERVAL" default:"1m"` //nodoc
OCR2ContractSubscribeInterval time.Duration `env:"OCR2_CONTRACT_SUBSCRIBE_INTERVAL" default:"2m"` //nodoc
OCR2ContractTransmitterTransmitTimeout time.Duration `env:"OCR2_CONTRACT_TRANSMITTER_TRANSMIT_TIMEOUT" default:"10s"` //nodoc
OCR2DatabaseTimeout time.Duration `env:"OCR2_DATABASE_TIMEOUT" default:"10s"` //nodoc
OCR2KeyBundleID string `env:"OCR2_KEY_BUNDLE_ID"` //nodoc
OCR2MonitoringEndpoint string `env:"OCR2_MONITORING_ENDPOINT"` //nodoc
// OCR V1
FeatureOffchainReporting bool `env:"FEATURE_OFFCHAIN_REPORTING" default:"false"`
// Per-chain defaults
OCRContractConfirmations uint `env:"OCR_CONTRACT_CONFIRMATIONS"` //nodoc
OCRContractTransmitterTransmitTimeout time.Duration `env:"OCR_CONTRACT_TRANSMITTER_TRANSMIT_TIMEOUT"` //nodoc
OCRDatabaseTimeout time.Duration `env:"OCR_DATABASE_TIMEOUT"` //nodoc
OCRObservationGracePeriod time.Duration `env:"OCR_OBSERVATION_GRACE_PERIOD"` //nodoc
// Global defaults
OCRObservationTimeout time.Duration `env:"OCR_OBSERVATION_TIMEOUT" default:"5s"` //nodoc
OCRBlockchainTimeout time.Duration `env:"OCR_BLOCKCHAIN_TIMEOUT" default:"20s"` //nodoc
OCRContractPollInterval time.Duration `env:"OCR_CONTRACT_POLL_INTERVAL" default:"1m"` //nodoc
OCRContractSubscribeInterval time.Duration `env:"OCR_CONTRACT_SUBSCRIBE_INTERVAL" default:"2m"` //nodoc
OCRDefaultTransactionQueueDepth uint32 `env:"OCR_DEFAULT_TRANSACTION_QUEUE_DEPTH" default:"1"` //nodoc
// Optional
OCRKeyBundleID string `env:"OCR_KEY_BUNDLE_ID"`
OCRMonitoringEndpoint string `env:"OCR_MONITORING_ENDPOINT"`
OCRSimulateTransactions bool `env:"OCR_SIMULATE_TRANSACTIONS" default:"false"`
OCRTraceLogging bool `env:"OCR_TRACE_LOGGING" default:"false"` //nodoc
OCRTransmitterAddress string `env:"OCR_TRANSMITTER_ADDRESS"`
// P2P Networking
// V1 and V2
P2PNetworkingStack ocrnetworking.NetworkingStack `env:"P2P_NETWORKING_STACK" default:"V1"`
P2PIncomingMessageBufferSize int `env:"P2P_INCOMING_MESSAGE_BUFFER_SIZE" default:"10"` //nodoc
P2POutgoingMessageBufferSize int `env:"P2P_OUTGOING_MESSAGE_BUFFER_SIZE" default:"10"` //nodoc
// V1 Only
P2PAnnounceIP net.IP `env:"P2P_ANNOUNCE_IP"`
P2PAnnouncePort uint16 `env:"P2P_ANNOUNCE_PORT"`
P2PBootstrapCheckInterval time.Duration `env:"P2P_BOOTSTRAP_CHECK_INTERVAL" default:"20s"` //nodoc
P2PBootstrapPeers []string `env:"P2P_BOOTSTRAP_PEERS"`
P2PDHTAnnouncementCounterUserPrefix uint32 `env:"P2P_DHT_ANNOUNCEMENT_COUNTER_USER_PREFIX" default:"0"` //nodoc
P2PDHTLookupInterval int `env:"P2P_DHT_LOOKUP_INTERVAL" default:"10"` //nodoc
P2PListenIP net.IP `env:"P2P_LISTEN_IP" default:"0.0.0.0"`
P2PListenPort uint16 `env:"P2P_LISTEN_PORT"`
P2PNewStreamTimeout time.Duration `env:"P2P_NEW_STREAM_TIMEOUT" default:"10s"`
P2PPeerID p2pkey.PeerID `env:"P2P_PEER_ID"`
P2PPeerstoreWriteInterval time.Duration `env:"P2P_PEERSTORE_WRITE_INTERVAL" default:"5m"` //nodoc
// V2 Only
P2PV2AnnounceAddresses []string `env:"P2PV2_ANNOUNCE_ADDRESSES"`
P2PV2Bootstrappers []string `env:"P2PV2_BOOTSTRAPPERS"`
P2PV2DeltaDial models.Duration `env:"P2PV2_DELTA_DIAL" default:"15s"` //nodoc
P2PV2DeltaReconcile models.Duration `env:"P2PV2_DELTA_RECONCILE" default:"1m"` //nodoc
P2PV2ListenAddresses []string `env:"P2PV2_LISTEN_ADDRESSES"`
// DEPRECATED
OCROutgoingMessageBufferSize int `env:"OCR_OUTGOING_MESSAGE_BUFFER_SIZE" default:"10"` //nodoc
OCRIncomingMessageBufferSize int `env:"OCR_INCOMING_MESSAGE_BUFFER_SIZE" default:"10"` //nodoc
OCRDHTLookupInterval int `env:"OCR_DHT_LOOKUP_INTERVAL" default:"10"` //nodoc
OCRBootstrapCheckInterval time.Duration `env:"OCR_BOOTSTRAP_CHECK_INTERVAL" default:"20s"` //nodoc
OCRNewStreamTimeout time.Duration `env:"OCR_NEW_STREAM_TIMEOUT" default:"10s"` //nodoc
// Keeper
KeeperCheckUpkeepGasPriceFeatureEnabled bool `env:"KEEPER_CHECK_UPKEEP_GAS_PRICE_FEATURE_ENABLED" default:"false"` //nodoc
KeeperDefaultTransactionQueueDepth uint32 `env:"KEEPER_DEFAULT_TRANSACTION_QUEUE_DEPTH" default:"1"` //nodoc
KeeperGasPriceBufferPercent uint32 `env:"KEEPER_GAS_PRICE_BUFFER_PERCENT" default:"20"`
KeeperGasTipCapBufferPercent uint32 `env:"KEEPER_GAS_TIP_CAP_BUFFER_PERCENT" default:"20"`
KeeperBaseFeeBufferPercent uint32 `env:"KEEPER_BASE_FEE_BUFFER_PERCENT" default:"20"`
KeeperMaximumGracePeriod int64 `env:"KEEPER_MAXIMUM_GRACE_PERIOD" default:"100"`
KeeperRegistryCheckGasOverhead uint64 `env:"KEEPER_REGISTRY_CHECK_GAS_OVERHEAD" default:"200000"`
KeeperRegistryPerformGasOverhead uint64 `env:"KEEPER_REGISTRY_PERFORM_GAS_OVERHEAD" default:"150000"`
KeeperRegistrySyncInterval time.Duration `env:"KEEPER_REGISTRY_SYNC_INTERVAL" default:"30m"`
KeeperRegistrySyncUpkeepQueueSize uint32 `env:"KEEPER_REGISTRY_SYNC_UPKEEP_QUEUE_SIZE" default:"10"`
// CLI client
AdminCredentialsFile string `env:"ADMIN_CREDENTIALS_FILE" default:"$ROOT/apicredentials"`
ClientNodeURL string `env:"CLIENT_NODE_URL" default:"http://localhost:6688"`
InsecureSkipVerify bool `env:"INSECURE_SKIP_VERIFY" default:"false"`
// Debugging
AutoPprofEnabled bool `env:"AUTO_PPROF_ENABLED" default:"false"` //nodoc
AutoPprofProfileRoot string `env:"AUTO_PPROF_PROFILE_ROOT"` //nodoc (defaults to $CHAINLINK_ROOT)
AutoPprofPollInterval models.Duration `env:"AUTO_PPROF_POLL_INTERVAL" default:"10s"` //nodoc
AutoPprofGatherDuration models.Duration `env:"AUTO_PPROF_GATHER_DURATION" default:"10s"` //nodoc
AutoPprofGatherTraceDuration models.Duration `env:"AUTO_PPROF_GATHER_TRACE_DURATION" default:"5s"` //nodoc
AutoPprofMaxProfileSize utils.FileSize `env:"AUTO_PPROF_MAX_PROFILE_SIZE" default:"100mb"` //nodoc
AutoPprofCPUProfileRate int `env:"AUTO_PPROF_CPU_PROFILE_RATE" default:"1"` //nodoc
AutoPprofMemProfileRate int `env:"AUTO_PPROF_MEM_PROFILE_RATE" default:"1"` //nodoc
AutoPprofBlockProfileRate int `env:"AUTO_PPROF_BLOCK_PROFILE_RATE" default:"1"` //nodoc
AutoPprofMutexProfileFraction int `env:"AUTO_PPROF_MUTEX_PROFILE_FRACTION" default:"1"` //nodoc
AutoPprofMemThreshold utils.FileSize `env:"AUTO_PPROF_MEM_THRESHOLD" default:"4gb"` //nodoc
AutoPprofGoroutineThreshold int `env:"AUTO_PPROF_GOROUTINE_THRESHOLD" default:"5000"` //nodoc
}
ConfigSchema records the schema of configuration at the type level
A note on Feature Flags ¶
Feature flags should be used during development of large features that might span more than one release cycle. Most changes that are not considered "complete" when a PR is merged and might affect node operation should be put behind a feature flag.
This also allows to disable large parts of the code that may not be needed for all deployments that could introduce attack surface area if it is not needed.
Good example usage is for alternative blockchain support, new services like Feeds Manager, external initiators and so on.
type EnvVar ¶
type EnvVar struct {
// contains filtered or unexported fields
}
EnvVar is an environment variable which
func New ¶
New creates a new EnvVar for the given name and parse func. name must match the ConfigSchema field.
func (*EnvVar) Parse ¶
Parse attempts to parse the value returned from the environment, falling back to the default value when empty or invalid.
func (*EnvVar) ParseFileSize ¶ added in v1.3.0
ParseFileSize parses value into `utils.FileSize`
func (*EnvVar) ParseFrom ¶
ParseFrom attempts to parse the value returned from calling get with the env var name, falling back to the default value when empty or invalid.
func (*EnvVar) ParseInt64 ¶ added in v1.3.0
ParseInt64 parses value into `int64`
func (*EnvVar) ParseLogLevel ¶
ParseLogLevel parses an env var's log level
func (*EnvVar) ParseString ¶
ParseString parses string