emeraldpay / dshackle

Fault Tolerant Load Balancer for Ethereum and Bitcoin APIs
Apache License 2.0
308 stars 55 forks source link

Websocket failed after several days #291

Open fdmota opened 6 days ago

fdmota commented 6 days ago

Hi, I am running dshackle for a few chains, all with the same setup: one or two local nodes and Quicknode as backup. When I launch Dshackle, everything works perfectly for several days. Then something happens. I got the error bellow. The connection to Quick node never recover and the block lag just keeps increasing. Any idea what could be the problem?

2024-29-09 08:14:27.205 | WARN  |           Exceptions | throwIfFatal detected a jvm fatal exception, which is thrown and logged below:
java.lang.StackOverflowError: null
    at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2305) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1717) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2305) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1717) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2305) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1717) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2305) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1717) ~[reactor-core-3.5.6.jar:3.5.6]
  ...
    at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2305) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1717) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.request(Operators.java:2305) ~[reactor-core-3.5.6.jar:3.5.6]
    at reactor.core.publisher.Operators$DeferredSubscription.request(Operators.java:1717) ~[reactor-core-3.5.6.jar:3.5.6]
2024-29-09 08:14:27.206 | WARN  |     WsConnectionImpl | Response is not processed null
java.lang.StackOverflowError: null
version: v1
host: 0.0.0.0
port: 2449
tls:
  enabled: false

proxy:
  host: 0.0.0.0
  port: 8545
  websocket: true
  routes:
    - id: ethereum
      blockchain: ethereum

cluster:
  upstreams:

    # ethereum-mainnet
    - id: local-ethereum-mainnet-a
      blockchain: ethereum
      priority: 15
      role: primary
      disable-validation: false
      validate-peers: true
      validate-syncing: true
      methods:
        enabled:
          - name: debug_traceBlockByHash
          - name: debug_traceBlockByNumber
          - name: debug_traceCall
          - name: debug_traceTransaction
      connection:
        ethereum:
          rpc:
            url: "http://ethereum-mainnet-a.nodes.svc.cluster.local:8545"
          ws:
            url: "ws://ethereum-mainnet-a.nodes.svc.cluster.local:8546"
    - id: local-ethereum-mainnet-b
      blockchain: ethereum
      priority: 15
      role: primary
      disable-validation: false
      validate-peers: true
      validate-syncing: true
      methods:
        enabled:
          - name: debug_traceBlockByHash
          - name: debug_traceBlockByNumber
          - name: debug_traceCall
          - name: debug_traceTransaction
      connection:
        ethereum:
          rpc:
            url: "http://ethereum-mainnet-b.nodes.svc.cluster.local:8545"
          ws:
            url: "ws://ethereum-mainnet-b.nodes.svc.cluster.local:8546"
    - id: quicknode-ethereum-mainnet
      blockchain: ethereum
      priority: 5
      role: fallback
      disable-validation: true
      methods:
        enabled:
          - name: debug_traceBlockByHash
          - name: debug_traceBlockByNumber
          - name: debug_traceCall
          - name: debug_traceTransaction
      connection:
        ethereum:
          rpc:
            url: "https://silent-cold-sun.quiknode.pro/XXXXXXXXXXXXXXXXXXXXX/"
          ws:
            url: "wss://silent-cold-sun.quiknode.pro/XXXXXXXXXXXXXXXXXXXXXX/"