diff --git a/stack_orchestrator/data/compose/docker-compose-watcher-ajna.yml b/stack_orchestrator/data/compose/docker-compose-watcher-ajna.yml index b3fcaab5..42381498 100644 --- a/stack_orchestrator/data/compose/docker-compose-watcher-ajna.yml +++ b/stack_orchestrator/data/compose/docker-compose-watcher-ajna.yml @@ -29,7 +29,7 @@ services: image: cerc/watcher-ajna:local environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} - CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT} + CERC_ETH_RPC_ENDPOINTS: ${CERC_ETH_RPC_ENDPOINTS} command: ["bash", "./start-job-runner.sh"] volumes: - ../config/watcher-ajna/watcher-config-template.toml:/app/environments/watcher-config-template.toml @@ -37,7 +37,7 @@ services: ports: - "9000" healthcheck: - test: ["CMD", "nc", "-v", "localhost", "9000"] + test: ["CMD", "nc", "-vz", "127.0.0.1", "9000"] interval: 20s timeout: 5s retries: 15 @@ -55,7 +55,7 @@ services: image: cerc/watcher-ajna:local environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} - CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT} + CERC_ETH_RPC_ENDPOINTS: ${CERC_ETH_RPC_ENDPOINTS} command: ["bash", "./start-server.sh"] volumes: - ../config/watcher-ajna/watcher-config-template.toml:/app/environments/watcher-config-template.toml @@ -64,7 +64,7 @@ services: - "3008" - "9001" healthcheck: - test: ["CMD", "nc", "-v", "localhost", "3008"] + test: ["CMD", "nc", "-vz", "127.0.0.1", "3008"] interval: 20s timeout: 5s retries: 15 diff --git a/stack_orchestrator/data/compose/docker-compose-watcher-merkl-sushiswap-v3.yml b/stack_orchestrator/data/compose/docker-compose-watcher-merkl-sushiswap-v3.yml index aae7bb47..f7e505df 100644 --- a/stack_orchestrator/data/compose/docker-compose-watcher-merkl-sushiswap-v3.yml +++ b/stack_orchestrator/data/compose/docker-compose-watcher-merkl-sushiswap-v3.yml @@ -29,7 +29,7 @@ services: image: cerc/watcher-merkl-sushiswap-v3:local environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} - CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT} + CERC_ETH_RPC_ENDPOINTS: ${CERC_ETH_RPC_ENDPOINTS} command: ["bash", "./start-job-runner.sh"] volumes: - ../config/watcher-merkl-sushiswap-v3/watcher-config-template.toml:/app/environments/watcher-config-template.toml @@ -37,7 +37,7 @@ services: ports: - "9002:9000" healthcheck: - test: ["CMD", "nc", "-v", "localhost", "9000"] + test: ["CMD", "nc", "-vz", "127.0.0.1", "9000"] interval: 20s timeout: 5s retries: 15 @@ -55,7 +55,7 @@ services: image: cerc/watcher-merkl-sushiswap-v3:local environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} - CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT} + CERC_ETH_RPC_ENDPOINTS: ${CERC_ETH_RPC_ENDPOINTS} command: ["bash", "./start-server.sh"] volumes: - ../config/watcher-merkl-sushiswap-v3/watcher-config-template.toml:/app/environments/watcher-config-template.toml @@ -64,7 +64,7 @@ services: - "127.0.0.1:3007:3008" - "9003:9001" healthcheck: - test: ["CMD", "nc", "-v", "localhost", "3008"] + test: ["CMD", "nc", "-vz", "127.0.0.1", "3008"] interval: 20s timeout: 5s retries: 15 diff --git a/stack_orchestrator/data/compose/docker-compose-watcher-sushiswap-v3.yml b/stack_orchestrator/data/compose/docker-compose-watcher-sushiswap-v3.yml index 6c39320c..9aad9888 100644 --- a/stack_orchestrator/data/compose/docker-compose-watcher-sushiswap-v3.yml +++ b/stack_orchestrator/data/compose/docker-compose-watcher-sushiswap-v3.yml @@ -29,7 +29,7 @@ services: image: cerc/watcher-sushiswap-v3:local environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} - CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT} + CERC_ETH_RPC_ENDPOINTS: ${CERC_ETH_RPC_ENDPOINTS} command: ["bash", "./start-job-runner.sh"] volumes: - ../config/watcher-sushiswap-v3/watcher-config-template.toml:/app/environments/watcher-config-template.toml @@ -37,7 +37,7 @@ services: ports: - "9000:9000" healthcheck: - test: ["CMD", "nc", "-v", "localhost", "9000"] + test: ["CMD", "nc", "-vz", "127.0.0.1", "9000"] interval: 20s timeout: 5s retries: 15 @@ -55,7 +55,7 @@ services: image: cerc/watcher-sushiswap-v3:local environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} - CERC_ETH_RPC_ENDPOINT: ${CERC_ETH_RPC_ENDPOINT} + CERC_ETH_RPC_ENDPOINTS: ${CERC_ETH_RPC_ENDPOINTS} command: ["bash", "./start-server.sh"] volumes: - ../config/watcher-sushiswap-v3/watcher-config-template.toml:/app/environments/watcher-config-template.toml @@ -64,7 +64,7 @@ services: - "127.0.0.1:3008:3008" - "9001:9001" healthcheck: - test: ["CMD", "nc", "-v", "localhost", "3008"] + test: ["CMD", "nc", "-vz", "127.0.0.1", "3008"] interval: 20s timeout: 5s retries: 15 diff --git a/stack_orchestrator/data/config/watcher-ajna/start-job-runner.sh b/stack_orchestrator/data/config/watcher-ajna/start-job-runner.sh index 819b1096..7a7a83b5 100755 --- a/stack_orchestrator/data/config/watcher-ajna/start-job-runner.sh +++ b/stack_orchestrator/data/config/watcher-ajna/start-job-runner.sh @@ -6,12 +6,16 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then fi set -u -echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}" +echo "Using ETH RPC endpoints ${CERC_ETH_RPC_ENDPOINTS}" # Read in the config template TOML file and modify it WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml) + +# Convert the comma-separated list in CERC_ETH_RPC_ENDPOINTS to a JSON array +RPC_ENDPOINTS_ARRAY=$(echo "$CERC_ETH_RPC_ENDPOINTS" | tr ',' '\n' | awk '{print "\"" $0 "\""}' | paste -sd, - | sed 's/^/[/; s/$/]/') + WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \ - sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ") + sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINTS|${RPC_ENDPOINTS_ARRAY}| ") # Write the modified content to a new file echo "$WATCHER_CONFIG" > environments/local.toml diff --git a/stack_orchestrator/data/config/watcher-ajna/start-server.sh b/stack_orchestrator/data/config/watcher-ajna/start-server.sh index e2bbdaad..9aaa77ec 100755 --- a/stack_orchestrator/data/config/watcher-ajna/start-server.sh +++ b/stack_orchestrator/data/config/watcher-ajna/start-server.sh @@ -6,12 +6,16 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then fi set -u -echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}" +echo "Using ETH RPC endpoints ${CERC_ETH_RPC_ENDPOINTS}" # Read in the config template TOML file and modify it WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml) + +# Convert the comma-separated list in CERC_ETH_RPC_ENDPOINTS to a JSON array +RPC_ENDPOINTS_ARRAY=$(echo "$CERC_ETH_RPC_ENDPOINTS" | tr ',' '\n' | awk '{print "\"" $0 "\""}' | paste -sd, - | sed 's/^/[/; s/$/]/') + WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \ - sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ") + sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINTS|${RPC_ENDPOINTS_ARRAY}| ") # Write the modified content to a new file echo "$WATCHER_CONFIG" > environments/local.toml diff --git a/stack_orchestrator/data/config/watcher-ajna/watcher-config-template.toml b/stack_orchestrator/data/config/watcher-ajna/watcher-config-template.toml index 4f670a1e..61c21f43 100644 --- a/stack_orchestrator/data/config/watcher-ajna/watcher-config-template.toml +++ b/stack_orchestrator/data/config/watcher-ajna/watcher-config-template.toml @@ -58,7 +58,7 @@ [upstream] [upstream.ethServer] - rpcProviderEndpoint = "REPLACE_WITH_CERC_ETH_RPC_ENDPOINT" + rpcProviderEndpoints = REPLACE_WITH_CERC_ETH_RPC_ENDPOINTS # Boolean flag to specify if rpc-eth-client should be used for RPC endpoint instead of ipld-eth-client (ipld-eth-server GQL client) rpcClient = true @@ -96,3 +96,6 @@ # Max block range of historical processing after which it waits for completion of events processing # If set to -1 historical processing does not wait for events processing and completes till latest canonical block historicalMaxFetchAhead = 10000 + + # Max number of retries to fetch new block after which watcher will failover to other RPC endpoints + maxNewBlockRetries = 3 diff --git a/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/start-job-runner.sh b/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/start-job-runner.sh index 819b1096..7a7a83b5 100755 --- a/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/start-job-runner.sh +++ b/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/start-job-runner.sh @@ -6,12 +6,16 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then fi set -u -echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}" +echo "Using ETH RPC endpoints ${CERC_ETH_RPC_ENDPOINTS}" # Read in the config template TOML file and modify it WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml) + +# Convert the comma-separated list in CERC_ETH_RPC_ENDPOINTS to a JSON array +RPC_ENDPOINTS_ARRAY=$(echo "$CERC_ETH_RPC_ENDPOINTS" | tr ',' '\n' | awk '{print "\"" $0 "\""}' | paste -sd, - | sed 's/^/[/; s/$/]/') + WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \ - sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ") + sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINTS|${RPC_ENDPOINTS_ARRAY}| ") # Write the modified content to a new file echo "$WATCHER_CONFIG" > environments/local.toml diff --git a/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/start-server.sh b/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/start-server.sh index e2bbdaad..9aaa77ec 100755 --- a/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/start-server.sh +++ b/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/start-server.sh @@ -6,12 +6,16 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then fi set -u -echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}" +echo "Using ETH RPC endpoints ${CERC_ETH_RPC_ENDPOINTS}" # Read in the config template TOML file and modify it WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml) + +# Convert the comma-separated list in CERC_ETH_RPC_ENDPOINTS to a JSON array +RPC_ENDPOINTS_ARRAY=$(echo "$CERC_ETH_RPC_ENDPOINTS" | tr ',' '\n' | awk '{print "\"" $0 "\""}' | paste -sd, - | sed 's/^/[/; s/$/]/') + WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \ - sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ") + sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINTS|${RPC_ENDPOINTS_ARRAY}| ") # Write the modified content to a new file echo "$WATCHER_CONFIG" > environments/local.toml diff --git a/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/watcher-config-template.toml b/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/watcher-config-template.toml index cbee6d2f..48877ae8 100644 --- a/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/watcher-config-template.toml +++ b/stack_orchestrator/data/config/watcher-merkl-sushiswap-v3/watcher-config-template.toml @@ -58,7 +58,7 @@ [upstream] [upstream.ethServer] - rpcProviderEndpoint = "REPLACE_WITH_CERC_ETH_RPC_ENDPOINT" + rpcProviderEndpoints = REPLACE_WITH_CERC_ETH_RPC_ENDPOINTS # Boolean flag to specify if rpc-eth-client should be used for RPC endpoint instead of ipld-eth-client (ipld-eth-server GQL client) rpcClient = true @@ -96,3 +96,6 @@ # Max block range of historical processing after which it waits for completion of events processing # If set to -1 historical processing does not wait for events processing and completes till latest canonical block historicalMaxFetchAhead = 10000 + + # Max number of retries to fetch new block after which watcher will failover to other RPC endpoints + maxNewBlockRetries = 3 diff --git a/stack_orchestrator/data/config/watcher-sushiswap-v3/start-job-runner.sh b/stack_orchestrator/data/config/watcher-sushiswap-v3/start-job-runner.sh index 819b1096..7a7a83b5 100755 --- a/stack_orchestrator/data/config/watcher-sushiswap-v3/start-job-runner.sh +++ b/stack_orchestrator/data/config/watcher-sushiswap-v3/start-job-runner.sh @@ -6,12 +6,16 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then fi set -u -echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}" +echo "Using ETH RPC endpoints ${CERC_ETH_RPC_ENDPOINTS}" # Read in the config template TOML file and modify it WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml) + +# Convert the comma-separated list in CERC_ETH_RPC_ENDPOINTS to a JSON array +RPC_ENDPOINTS_ARRAY=$(echo "$CERC_ETH_RPC_ENDPOINTS" | tr ',' '\n' | awk '{print "\"" $0 "\""}' | paste -sd, - | sed 's/^/[/; s/$/]/') + WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \ - sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ") + sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINTS|${RPC_ENDPOINTS_ARRAY}| ") # Write the modified content to a new file echo "$WATCHER_CONFIG" > environments/local.toml diff --git a/stack_orchestrator/data/config/watcher-sushiswap-v3/start-server.sh b/stack_orchestrator/data/config/watcher-sushiswap-v3/start-server.sh index e2bbdaad..9aaa77ec 100755 --- a/stack_orchestrator/data/config/watcher-sushiswap-v3/start-server.sh +++ b/stack_orchestrator/data/config/watcher-sushiswap-v3/start-server.sh @@ -6,12 +6,16 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then fi set -u -echo "Using ETH RPC endpoint ${CERC_ETH_RPC_ENDPOINT}" +echo "Using ETH RPC endpoints ${CERC_ETH_RPC_ENDPOINTS}" # Read in the config template TOML file and modify it WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml) + +# Convert the comma-separated list in CERC_ETH_RPC_ENDPOINTS to a JSON array +RPC_ENDPOINTS_ARRAY=$(echo "$CERC_ETH_RPC_ENDPOINTS" | tr ',' '\n' | awk '{print "\"" $0 "\""}' | paste -sd, - | sed 's/^/[/; s/$/]/') + WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \ - sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINT|${CERC_ETH_RPC_ENDPOINT}| ") + sed -E "s|REPLACE_WITH_CERC_ETH_RPC_ENDPOINTS|${RPC_ENDPOINTS_ARRAY}| ") # Write the modified content to a new file echo "$WATCHER_CONFIG" > environments/local.toml diff --git a/stack_orchestrator/data/config/watcher-sushiswap-v3/watcher-config-template.toml b/stack_orchestrator/data/config/watcher-sushiswap-v3/watcher-config-template.toml index 5ec48fb4..43278e69 100644 --- a/stack_orchestrator/data/config/watcher-sushiswap-v3/watcher-config-template.toml +++ b/stack_orchestrator/data/config/watcher-sushiswap-v3/watcher-config-template.toml @@ -58,7 +58,7 @@ [upstream] [upstream.ethServer] - rpcProviderEndpoint = "REPLACE_WITH_CERC_ETH_RPC_ENDPOINT" + rpcProviderEndpoints = REPLACE_WITH_CERC_ETH_RPC_ENDPOINTS # Boolean flag to specify if rpc-eth-client should be used for RPC endpoint instead of ipld-eth-client (ipld-eth-server GQL client) rpcClient = true @@ -96,3 +96,6 @@ # Max block range of historical processing after which it waits for completion of events processing # If set to -1 historical processing does not wait for events processing and completes till latest canonical block historicalMaxFetchAhead = 10000 + + # Max number of retries to fetch new block after which watcher will failover to other RPC endpoints + maxNewBlockRetries = 3 diff --git a/stack_orchestrator/data/stacks/ajna/README.md b/stack_orchestrator/data/stacks/ajna/README.md index 6f88ec0a..137e9c89 100644 --- a/stack_orchestrator/data/stacks/ajna/README.md +++ b/stack_orchestrator/data/stacks/ajna/README.md @@ -53,7 +53,7 @@ Inside deployment directory, open the `config.env` file and set following env v ```bash # External Filecoin (ETH RPC) endpoint to point the watcher to -CERC_ETH_RPC_ENDPOINT=https://example-lotus-endpoint/rpc/v1 +CERC_ETH_RPC_ENDPOINTS=https://example-lotus-endpoint-1/rpc/v1,https://example-lotus-endpoint-2/rpc/v1 ``` ### Start the deployment diff --git a/stack_orchestrator/data/stacks/ajna/stack.yml b/stack_orchestrator/data/stacks/ajna/stack.yml index a5ff2c9d..979f2b25 100644 --- a/stack_orchestrator/data/stacks/ajna/stack.yml +++ b/stack_orchestrator/data/stacks/ajna/stack.yml @@ -2,7 +2,7 @@ version: "1.0" name: ajna description: "Ajna watcher stack" repos: - - git.vdb.to/cerc-io/ajna-watcher-ts@v0.1.3 + - git.vdb.to/cerc-io/ajna-watcher-ts@v0.1.4 containers: - cerc/watcher-ajna pods: diff --git a/stack_orchestrator/data/stacks/merkl-sushiswap-v3/README.md b/stack_orchestrator/data/stacks/merkl-sushiswap-v3/README.md index ddd8ecf6..124fc380 100644 --- a/stack_orchestrator/data/stacks/merkl-sushiswap-v3/README.md +++ b/stack_orchestrator/data/stacks/merkl-sushiswap-v3/README.md @@ -53,7 +53,7 @@ Inside deployment directory, open the `config.env` file and set following env v ```bash # External Filecoin (ETH RPC) endpoint to point the watcher to -CERC_ETH_RPC_ENDPOINT=https://example-lotus-endpoint/rpc/v1 +CERC_ETH_RPC_ENDPOINTS=https://example-lotus-endpoint-1/rpc/v1,https://example-lotus-endpoint-2/rpc/v1 ``` ### Start the deployment diff --git a/stack_orchestrator/data/stacks/merkl-sushiswap-v3/stack.yml b/stack_orchestrator/data/stacks/merkl-sushiswap-v3/stack.yml index 950606b2..adc78d88 100644 --- a/stack_orchestrator/data/stacks/merkl-sushiswap-v3/stack.yml +++ b/stack_orchestrator/data/stacks/merkl-sushiswap-v3/stack.yml @@ -2,7 +2,7 @@ version: "1.0" name: merkl-sushiswap-v3 description: "SushiSwap v3 watcher stack" repos: - - github.com/cerc-io/merkl-sushiswap-v3-watcher-ts@v0.1.9 + - github.com/cerc-io/merkl-sushiswap-v3-watcher-ts@v0.1.10 containers: - cerc/watcher-merkl-sushiswap-v3 pods: diff --git a/stack_orchestrator/data/stacks/sushiswap-v3/README.md b/stack_orchestrator/data/stacks/sushiswap-v3/README.md index 6bcbb54c..cec8a825 100644 --- a/stack_orchestrator/data/stacks/sushiswap-v3/README.md +++ b/stack_orchestrator/data/stacks/sushiswap-v3/README.md @@ -53,7 +53,7 @@ Inside deployment directory, open the `config.env` file and set following env v ```bash # External Filecoin (ETH RPC) endpoint to point the watcher to -CERC_ETH_RPC_ENDPOINT=https://example-lotus-endpoint/rpc/v1 +CERC_ETH_RPC_ENDPOINTS=https://example-lotus-endpoint-1/rpc/v1,https://example-lotus-endpoint-2/rpc/v1 ``` ### Start the deployment diff --git a/stack_orchestrator/data/stacks/sushiswap-v3/stack.yml b/stack_orchestrator/data/stacks/sushiswap-v3/stack.yml index 116e91e9..f258af24 100644 --- a/stack_orchestrator/data/stacks/sushiswap-v3/stack.yml +++ b/stack_orchestrator/data/stacks/sushiswap-v3/stack.yml @@ -2,7 +2,7 @@ version: "1.0" name: sushiswap-v3 description: "SushiSwap v3 watcher stack" repos: - - github.com/cerc-io/sushiswap-v3-watcher-ts@v0.1.9 + - github.com/cerc-io/sushiswap-v3-watcher-ts@v0.1.10 containers: - cerc/watcher-sushiswap-v3 pods: