Skip to content

Commit

Permalink
restructure config
Browse files Browse the repository at this point in the history
Signed-off-by: Chengxuan Xing <[email protected]>
  • Loading branch information
Chengxuan committed Dec 5, 2024
1 parent b561f24 commit ee05f58
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 30 deletions.
14 changes: 11 additions & 3 deletions config.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,14 @@
|password|Password|`string`|`<nil>`
|username|Username|`string`|`<nil>`

## connector.blockListenerRetry

|Key|Description|Type|Default Value|
|---|-----------|----|-------------|
|factor|Factor to increase the delay by, between each block indexing http requests retry to the RPC endpoint|`int`|`2`
|initialDelay|Initial delay for retrying block indexing http requests to the RPC endpoint|[`time.Duration`](https://pkg.go.dev/time#Duration)|`100ms`
|maxDelay|Maximum delay for between each block indexing http requests retry to the RPC endpoint|[`time.Duration`](https://pkg.go.dev/time#Duration)|`30s`

## connector.events

|Key|Description|Type|Default Value|
Expand All @@ -115,10 +123,10 @@
|count|The maximum number of times to retry|`int`|`5`
|enabled|Enables retries|`boolean`|`false`
|errorStatusCodeRegex|The regex that the error response status code must match to trigger retry|`string`|`<nil>`
|factor|The retry backoff factor|`float32`|`2`
|factor|<Deprecated> use 'connector.blockListenerRetry.factor' instead|`int`|`<nil>`
|initWaitTime|The initial retry delay|[`time.Duration`](https://pkg.go.dev/time#Duration)|`250ms`
|initialDelay|The initial retry delay|[`time.Duration`](https://pkg.go.dev/time#Duration)|`100ms`
|maxDelay|The maximum retry delay|[`time.Duration`](https://pkg.go.dev/time#Duration)|`30s`
|initialDelay|<Deprecated> use 'connector.blockListenerRetry.initialDelay' instead|[`time.Duration`](https://pkg.go.dev/time#Duration)|`<nil>`
|maxDelay|<Deprecated> use 'connector.blockListenerRetry.maxDelay' instead|[`time.Duration`](https://pkg.go.dev/time#Duration)|`<nil>`
|maxWaitTime|The maximum retry delay|[`time.Duration`](https://pkg.go.dev/time#Duration)|`30s`

## connector.throttle
Expand Down
24 changes: 16 additions & 8 deletions internal/ethereum/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,19 @@ const (
EventsCheckpointBlockGap = "events.checkpointBlockGap"
EventsBlockTimestamps = "events.blockTimestamps"
EventsFilterPollingInterval = "events.filterPollingInterval"
RetryInitDelay = "retry.initialDelay"
RetryMaxDelay = "retry.maxDelay"
RetryFactor = "retry.factor"
MaxConcurrentRequests = "maxConcurrentRequests"
TxCacheSize = "txCacheSize"
HederaCompatibilityMode = "hederaCompatibilityMode"
TraceTXForRevertReason = "traceTXForRevertReason"
WebSocketsEnabled = "ws.enabled"
RetryInitDelay = "blockListenerRetry.initialDelay"
RetryMaxDelay = "blockListenerRetry.maxDelay"
RetryFactor = "blockListenerRetry.factor"

DeprecatedRetryInitDelay = "retry.initialDelay"
DeprecatedRetryMaxDelay = "retry.maxDelay"
DeprecatedRetryFactor = "retry.factor"

MaxConcurrentRequests = "maxConcurrentRequests"
TxCacheSize = "txCacheSize"
HederaCompatibilityMode = "hederaCompatibilityMode"
TraceTXForRevertReason = "traceTXForRevertReason"
WebSocketsEnabled = "ws.enabled"
)

const (
Expand Down Expand Up @@ -72,6 +77,9 @@ func InitConfig(conf config.Section) {
conf.AddKnownKey(RetryFactor, DefaultRetryDelayFactor)
conf.AddKnownKey(RetryInitDelay, DefaultRetryInitDelay)
conf.AddKnownKey(RetryMaxDelay, DefaultRetryMaxDelay)
conf.AddKnownKey(DeprecatedRetryFactor)
conf.AddKnownKey(DeprecatedRetryInitDelay)
conf.AddKnownKey(DeprecatedRetryMaxDelay)
conf.AddKnownKey(MaxConcurrentRequests, 50)
conf.AddKnownKey(TxCacheSize, 250)
conf.AddKnownKey(HederaCompatibilityMode, false)
Expand Down
6 changes: 3 additions & 3 deletions internal/ethereum/event_enricher.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ func (ee *eventEnricher) filterEnrichEthLog(ctx context.Context, f *eventFilter,
Signature: signature,
BlockHash: ethLog.BlockHash.String(),
TransactionHash: ethLog.TransactionHash.String(),
BlockNumber: fftypes.FFuint64(blockNumber),
TransactionIndex: fftypes.FFuint64(transactionIndex),
LogIndex: fftypes.FFuint64(logIndex),
BlockNumber: fftypes.FFuint64(ethLog.BlockNumber.BigInt().Uint64()),
TransactionIndex: fftypes.FFuint64(ethLog.TransactionIndex.BigInt().Uint64()),
LogIndex: fftypes.FFuint64(ethLog.LogIndex.BigInt().Uint64()),
Timestamp: timestamp,
},
Info: &info,
Expand Down
38 changes: 22 additions & 16 deletions internal/msgs/en_config_descriptions.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,20 +27,26 @@ var ffc = func(key, translation string, fieldType string) i18n.ConfigMessageKey

//revive:disable
var (
ConfigEthereumURL = ffc("config.connector.url", "URL of JSON/RPC endpoint for the Ethereum node/gateway", "string")
ConfigEthereumWSEnabled = ffc("config.connector.ws.enabled", "When true a WebSocket is established for block listening, in addition to the HTTP RPC connections used for other functions", i18n.BooleanType)
ConfigEthereumDataFormat = ffc("config.connector.dataFormat", "Configure the JSON data format for query output and events", "map,flat_array,self_describing")
ConfigEthereumGasEstimationFactor = ffc("config.connector.gasEstimationFactor", "The factor to apply to the gas estimation to determine the gas limit", "float")
ConfigBlockCacheSize = ffc("config.connector.blockCacheSize", "Maximum of blocks to hold in the block info cache", i18n.IntType)
ConfigBlockPollingInterval = ffc("config.connector.blockPollingInterval", "Interval for polling to check for new blocks", i18n.TimeDurationType)
ConfigEventsBlockTimestamps = ffc("config.connector.events.blockTimestamps", "Whether to include the block timestamps in the event information", i18n.BooleanType)
ConfigEventsCatchupPageSize = ffc("config.connector.events.catchupPageSize", "Number of blocks to query per poll when catching up to the head of the blockchain", i18n.IntType)
ConfigEventsCatchupThreshold = ffc("config.connector.events.catchupThreshold", "How many blocks behind the chain head an event stream or listener must be on startup, to enter catchup mode", i18n.IntType)
ConfigEventsCatchupDownscaleRegex = ffc("config.connector.events.catchupDownscaleRegex", "An error pattern to check for from JSON/RPC providers if they limit response sizes to eth_getLogs(). If an error is returned from eth_getLogs() and that error matches the configured pattern, the number of logs requested (catchupPageSize) will be reduced automatically.", "string")
ConfigEventsCheckpointBlockGap = ffc("config.connector.events.checkpointBlockGap", "The number of blocks at the head of the chain that should be considered unstable (could be dropped from the canonical chain after a re-org). Unless events with a full set of confirmations are detected, the restart checkpoint will this many blocks behind the chain head.", i18n.IntType)
ConfigEventsFilterPollingInterval = ffc("config.connector.events.filterPollingInterval", "The interval between polling calls to a filter, when checking for newly arrived events", i18n.TimeDurationType)
ConfigTxCacheSize = ffc("config.connector.txCacheSize", "Maximum of transactions to hold in the transaction info cache", i18n.IntType)
ConfigMaxConcurrentRequests = ffc("config.connector.maxConcurrentRequests", "Maximum of concurrent requests to be submitted to the blockchain", i18n.IntType)
ConfigHederaCompatibilityMode = ffc("config.connector.hederaCompatibilityMode", "Compatibility mode for Hedera, allowing non-standard block header hashes to be processed", i18n.BooleanType)
ConfigTraceTXForRevertReason = ffc("config.connector.traceTXForRevertReason", "Enable the use of transaction trace functions (e.g. debug_traceTransaction) to obtain transaction revert reasons. This can place a high load on the EVM client.", i18n.BooleanType)
ConfigEthereumURL = ffc("config.connector.url", "URL of JSON/RPC endpoint for the Ethereum node/gateway", "string")
ConfigEthereumWSEnabled = ffc("config.connector.ws.enabled", "When true a WebSocket is established for block listening, in addition to the HTTP RPC connections used for other functions", i18n.BooleanType)
ConfigEthereumDataFormat = ffc("config.connector.dataFormat", "Configure the JSON data format for query output and events", "map,flat_array,self_describing")
ConfigEthereumGasEstimationFactor = ffc("config.connector.gasEstimationFactor", "The factor to apply to the gas estimation to determine the gas limit", "float")
ConfigBlockCacheSize = ffc("config.connector.blockCacheSize", "Maximum of blocks to hold in the block info cache", i18n.IntType)
ConfigBlockPollingInterval = ffc("config.connector.blockPollingInterval", "Interval for polling to check for new blocks", i18n.TimeDurationType)
ConfigBlockIndexRetryInitialDelay = ffc("config.connector.blockListenerRetry.initialDelay", "Initial delay for retrying block indexing http requests to the RPC endpoint", i18n.TimeDurationType)
ConfigBlockIndexRetryFactor = ffc("config.connector.blockListenerRetry.factor", "Factor to increase the delay by, between each block indexing http requests retry to the RPC endpoint", i18n.IntType)
ConfigBlockIndexRetryMaxDelay = ffc("config.connector.blockListenerRetry.maxDelay", "Maximum delay for between each block indexing http requests retry to the RPC endpoint", i18n.TimeDurationType)
DeprecatedConfigBlockIndexRetryInitialDelay = ffc("config.connector.retry.initialDelay", "<Deprecated> use 'connector.blockListenerRetry.initialDelay' instead", i18n.TimeDurationType)
DeprecatedConfigBlockIndexRetryFactor = ffc("config.connector.retry.factor", "<Deprecated> use 'connector.blockListenerRetry.factor' instead", i18n.IntType)
DeprecatedConfigBlockIndexRetryMaxDelay = ffc("config.connector.retry.maxDelay", "<Deprecated> use 'connector.blockListenerRetry.maxDelay' instead", i18n.TimeDurationType)
ConfigEventsBlockTimestamps = ffc("config.connector.events.blockTimestamps", "Whether to include the block timestamps in the event information", i18n.BooleanType)
ConfigEventsCatchupPageSize = ffc("config.connector.events.catchupPageSize", "Number of blocks to query per poll when catching up to the head of the blockchain", i18n.IntType)
ConfigEventsCatchupThreshold = ffc("config.connector.events.catchupThreshold", "How many blocks behind the chain head an event stream or listener must be on startup, to enter catchup mode", i18n.IntType)
ConfigEventsCatchupDownscaleRegex = ffc("config.connector.events.catchupDownscaleRegex", "An error pattern to check for from JSON/RPC providers if they limit response sizes to eth_getLogs(). If an error is returned from eth_getLogs() and that error matches the configured pattern, the number of logs requested (catchupPageSize) will be reduced automatically.", "string")
ConfigEventsCheckpointBlockGap = ffc("config.connector.events.checkpointBlockGap", "The number of blocks at the head of the chain that should be considered unstable (could be dropped from the canonical chain after a re-org). Unless events with a full set of confirmations are detected, the restart checkpoint will this many blocks behind the chain head.", i18n.IntType)
ConfigEventsFilterPollingInterval = ffc("config.connector.events.filterPollingInterval", "The interval between polling calls to a filter, when checking for newly arrived events", i18n.TimeDurationType)
ConfigTxCacheSize = ffc("config.connector.txCacheSize", "Maximum of transactions to hold in the transaction info cache", i18n.IntType)
ConfigMaxConcurrentRequests = ffc("config.connector.maxConcurrentRequests", "Maximum of concurrent requests to be submitted to the blockchain", i18n.IntType)
ConfigHederaCompatibilityMode = ffc("config.connector.hederaCompatibilityMode", "Compatibility mode for Hedera, allowing non-standard block header hashes to be processed", i18n.BooleanType)
ConfigTraceTXForRevertReason = ffc("config.connector.traceTXForRevertReason", "Enable the use of transaction trace functions (e.g. debug_traceTransaction) to obtain transaction revert reasons. This can place a high load on the EVM client.", i18n.BooleanType)
)

0 comments on commit ee05f58

Please sign in to comment.