Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@TODO Error: eth_newFilter is not an allowed method, code: -32601 leads to exceeding relayer quota #497

Open
patriksulak opened this issue Jul 24, 2024 · 8 comments
Assignees
Labels
bug Something isn't working good first issue Good for newcomers

Comments

@patriksulak
Copy link

patriksulak commented Jul 24, 2024

Task: Migration of ethersV5 -> ethersV6

Library versions:

  • "@openzeppelin/defender-sdk": "1.14.2",
  • "ethers": "6.13.1",

Token contract event https://sepolia.etherscan.io/address/0x2A85Be1391EA0AADA22582995Fa79D753657839e#events

Code:

import { Defender, DefenderOptions } from '@openzeppelin/defender-sdk'
import { Token__factory } from 'contracts-v5.0.1'
import { env } from 'env/server'

function getContractEvent() {
  const credentials: DefenderOptions = {
    relayerApiKey: env.DEFENDER_API_KEY,
    relayerApiSecret: env.DEFENDER_API_SECRET,
  }

  const client = new Defender(credentials)
  const provider = client.relaySigner.getProvider({ ethersVersion: 'v6' })

  const tokenContract = Token__factory.connect('0x2A85Be1391EA0AADA22582995Fa79D753657839e', provider)

  void tokenContract.once(tokenContract.getEvent('FeeSettingsChanged'), () => {
    console.log('FeeSettingsChanged event')
  })
}

Error:

@TODO DefenderApiResponseError: Request failed with status code 403
    at rejectWithDefenderApiError (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-base-client/lib/api/api.js:10:27)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Axios.request (/Users/xxx/Projects/project/node_modules/axios/dist/node/axios.cjs:4219:14)
    at async /Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/lib/api/index.js:70:21
    at async RelaySignerClient.withRetry (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-base-client/lib/api/client.js:86:20)
    at async RelaySignerClient.withRetry (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-base-client/lib/api/client.js:111:17)
    at async RelaySignerClient.withRetry (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-base-client/lib/api/client.js:111:17)
    at async RelaySignerClient.withRetry (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-base-client/lib/api/client.js:111:17)
    at async DefenderRelayProvider.send (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/lib/ethers/provider.js:51:28)
    at async FilterIdEventSubscriber._subscribe (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:154:26)
    at Axios.request (/Users/xxx/Projects/project/node_modules/axios/dist/node/axios.cjs:4224:41)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async /Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/lib/api/index.js:70:21
    at async RelaySignerClient.withRetry (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-base-client/lib/api/client.js:86:20)
    at async RelaySignerClient.withRetry (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-base-client/lib/api/client.js:111:17)
    at async RelaySignerClient.withRetry (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-base-client/lib/api/client.js:111:17)
    at async RelaySignerClient.withRetry (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-base-client/lib/api/client.js:111:17)
    at async DefenderRelayProvider.send (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/lib/ethers/provider.js:51:28)
    at async FilterIdEventSubscriber._subscribe (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:154:26)
    at async #poll (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:66:28) {
  request: { path: '/v2/relayers/self/jsonrpc', method: 'POST' },
  response: {
    status: 403,
    statusText: 'Forbidden',
    data: {
      message: "'eyJra...' not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer eyJra...'."
    }
  }
}

When using "@openzeppelin/defender-sdk-relay-signer-client": "1.14.1"

function getContractEvent() {
  const credentials: RelayerParams = {
    apiKey: env.DEFENDER_API_KEY,
    apiSecret: env.DEFENDER_API_SECRET,
    authConfig: { type: 'relay', useCredentialsCaching: false },
  }

  const provider = new DefenderRelayProvider(credentials)

  const tokenContract = Token__factory.connect('0x2A85Be1391EA0AADA22582995Fa79D753657839e', provider)

  void tokenContract.once(tokenContract.getEvent('FeeSettingsChanged'), () => {
    console.log('FeeSettingsChanged event')
  })
}

I'm getting a different version of the error:

@TODO Error: eth_newFilter is not an allowed method
    at DefenderRelayProvider.send (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/lib/ethers/provider.js:54:31)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async FilterIdEventSubscriber._subscribe (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:154:26)
    at async #poll (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:66:28) {
  code: -32601,
  data: undefined
}

The main problem is that the provider is trying to retry the call every few seconds (also querying eth_blockNumber multiple times), which leads to exceeding the Relayer query quota of 10 000 requests.

The reading of the event works if using the JsonRpcProvider. (It also worked when using ethersV5 and DefenderRelayProviderV5)

function getContractEvent() {
  const provider = new ethers.JsonRpcProvider('https://rpc.sepolia.org', undefined, { staticNetwork: true })

  const tokenContract = Token__factory.connect('0x2A85Be1391EA0AADA22582995Fa79D753657839e', provider)

  void tokenContract.once(tokenContract.getEvent('FeeSettingsChanged'), () => {
    console.log('FeeSettingsChanged event')
  })
}
@MCarlomagno MCarlomagno self-assigned this Jul 24, 2024
@tirumerla tirumerla added bug Something isn't working good first issue Good for newcomers labels Jul 24, 2024
@tirumerla
Copy link
Collaborator

Hi @patriksulak - Apologies that you were seeing the issue. Thank you for reporting it. We had a bug in 1.14.2 version on calling specific endpoints, we deprecated it and pushed a fix with 1.14.3.

Regarding eth_newFilter is not an allowed method We blacklisted several filter methods couple years back mainly due to our third party json rpc providers not supporting it. We tested to see if all the providers support it now and removed the methods from blacklist and patched our backend.

Please use 1.14.3 and see if it resolves the issue for you. We will look into retry logic on quota consumption.

@patriksulak
Copy link
Author

Thanks for the reply.

Using @openzeppelin/defender-sdk-relay-signer-client": "1.14.3", but I'm getting stuck on the other issue:

Following error:

@TODO Error: eth_getFilterChanges is not an allowed method
    at DefenderRelayProvider.send (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/lib/ethers/provider.js:54:31)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async #poll (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:90:28) {
  code: -32601,
  data: undefined
}

Provider debug log:

{
  action: 'response',
  request: {
    method: 'eth_getFilterChanges',
    params: [ '0x4200000000000000f00ad60e4627c44e4a0c' ]
  },
  response: {
    id: 35,
    jsonrpc: '2.0',
    result: null,
    error: {
      code: -32601,
      message: 'eth_getFilterChanges is not an allowed method'
    }
  },
  provider: DefenderRelayProvider {
    credentials: {
      apiKey: 'zzz',
      apiSecret: 'xxx',
      authConfig: { type: 'relay', useCredentialsCaching: true }
    },
    pendingNetwork: null,
    relayer: Relayer {
      credentials: {
        apiKey: 'zzz',
        apiSecret: 'xxx',
        authConfig: { type: 'relay', useCredentialsCaching: true }
      },
      relayer: RelaySignerClient {
        apiKey: 'zzz',
        apiSecret: 'xxx',
        httpsAgent: undefined,
        retryConfig: { retries: 3, retryDelay: [Function: exponentialDelay] },
        authConfig: { type: 'relay', useCredentialsCaching: true },
        jsonRpcRequestNextId: 36,
        sessionV2: {
          apiKey: 'zzz',
          refreshToken: 'eyJjdxxx',
          accessToken: 'eyJraWxxx'
        },
        api: [Function: wrap] {
          constructor: [Function: wrap],
          request: [Function: wrap],
          _request: [Function: wrap],
          getUri: [Function: wrap],
          delete: [Function: wrap],
          get: [Function: wrap],
          head: [Function: wrap],
          options: [Function: wrap],
          post: [Function: wrap],
          postForm: [Function: wrap],
          put: [Function: wrap],
          putForm: [Function: wrap],
          patch: [Function: wrap],
          patchForm: [Function: wrap],
          defaults: {
            transitional: {
              silentJSONParsing: true,
              forcedJSONParsing: true,
              clarifyTimeoutError: false
            },
            adapter: [ 'xhr', 'http' ],
            transformRequest: [ [Function: transformRequest] ],
            transformResponse: [ [Function: transformResponse] ],
            timeout: 0,
            xsrfCookieName: 'XSRF-TOKEN',
            xsrfHeaderName: 'X-XSRF-TOKEN',
            maxContentLength: -1,
            maxBodyLength: -1,
            env: {
              FormData: [Function: FormData] {
                LINE_BREAK: '\r\n',
                DEFAULT_CONTENT_TYPE: 'application/octet-stream'
              },
              Blob: [class Blob]
            },
            validateStatus: [Function: validateStatus],
            headers: {
              common: {
                Accept: 'application/json, text/plain, */*',
                'Content-Type': undefined
              },
              delete: {},
              get: {},
              head: {},
              post: {},
              put: {},
              patch: {},
              'Content-Type': 'application/json',
              'X-Api-Key': 'zzz',
              Authorization: 'Bearer xxx'
            },
            baseURL: 'https://api.defender.openzeppelin.com/'
          },
          interceptors: {
            request: InterceptorManager { handlers: [] },
            response: InterceptorManager {
              handlers: [
                {
                  fulfilled: [Function (anonymous)],
                  rejected: [Function: rejectWithDefenderApiError],
                  synchronous: false,
                  runWhen: null
                }
              ]
            }
          },
          create: [Function: create]
        }
      }
    }
  }
}

@tirumerla
Copy link
Collaborator

Hi @patriksulak - We still have couple of blacklisted methods "eth_getFilterChanges" & "eth_uninstallFilter". Wondering if you will be using these frequently. We were planning on removing those based on the usage of these methods. If you will be using these we will look into whitelisting these as well and given these are supported by providers now it's fair to whitelist them as well.

@tirumerla
Copy link
Collaborator

Thanks for the reply.

Using @openzeppelin/defender-sdk-relay-signer-client": "1.14.3", but I'm getting stuck on the other issue:

Following error:

@TODO Error: eth_getFilterChanges is not an allowed method
    at DefenderRelayProvider.send (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/lib/ethers/provider.js:54:31)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async #poll (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:90:28) {
  code: -32601,
  data: undefined
}

Hi @patriksulak - Could you please try one more time and see if it resolves the issue for you. Pushed a patch to remove all blacklisted methods in the backend.

@patriksulak
Copy link
Author

Hi @patriksulak - Could you please try one more time and see if it resolves the issue for you. Pushed a patch to remove all blacklisted methods in the backend.

@tirumerla tried again, but got another error:

@TODO Error: network is not available yet (code=NETWORK_ERROR, version=6.13.1)
    at makeError (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/utils/errors.js:129:21)
    at assert (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/utils/errors.js:149:15)
    at get _network [as _network] (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/provider-jsonrpc.js:361:31)
    at FilterIdEventSubscriber._emitResults (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:159:75)
    at #poll (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:91:24)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'NETWORK_ERROR',
  shortMessage: 'network is not available yet'
}

@tirumerla
Copy link
Collaborator

Hi @patriksulak - Could you please try one more time and see if it resolves the issue for you. Pushed a patch to remove all blacklisted methods in the backend.

@tirumerla tried again, but got another error:

@TODO Error: network is not available yet (code=NETWORK_ERROR, version=6.13.1)
    at makeError (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/utils/errors.js:129:21)
    at assert (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/utils/errors.js:149:15)
    at get _network [as _network] (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/provider-jsonrpc.js:361:31)
    at FilterIdEventSubscriber._emitResults (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:159:75)
    at #poll (/Users/xxxxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:91:24)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'NETWORK_ERROR',
  shortMessage: 'network is not available yet'
}

Could you please send me the payload for the request and the network details. I tested using your previous payload ( eth_getFilterChanges ) that seemed to work fine/ got back the response ok. If you could share the request details will try to reproduce and check it out.

@patriksulak
Copy link
Author

Could you please send me the payload for the request and the network details. I tested using your previous payload ( eth_getFilterChanges ) that seemed to work fine/ got back the response ok. If you could share the request details will try to reproduce and check it out.

The whole debug log from the provider:

{
  action: 'response',
  request: {
    method: 'eth_getCode',
    params: [ '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', 'latest' ]
  },
  response: { id: 3, jsonrpc: '2.0', result: '0x' },
  provider: DefenderRelayProvider {
    credentials: {
      apiKey: 'xxx',
      apiSecret: 'zzz',
      authConfig: { type: 'relay', useCredentialsCaching: true }
    },
    pendingNetwork: null,
    relayer: Relayer {
      credentials: {
        apiKey: 'xxx',
        apiSecret: 'zzz',
        authConfig: { type: 'relay', useCredentialsCaching: true }
      },
      relayer: RelaySignerClient {
        apiKey: 'xxx',
        apiSecret: 'zzz',
        httpsAgent: undefined,
        retryConfig: { retries: 3, retryDelay: [Function: exponentialDelay] },
        authConfig: { type: 'relay', useCredentialsCaching: true },
        jsonRpcRequestNextId: 5,
        sessionV2: {
          apiKey: 'xxx',
          refreshToken: 'eyJ...',
          accessToken: 'eyJ...'
        },
        api: [Function: wrap] {
          constructor: [Function: wrap],
          request: [Function: wrap],
          _request: [Function: wrap],
          getUri: [Function: wrap],
          delete: [Function: wrap],
          get: [Function: wrap],
          head: [Function: wrap],
          options: [Function: wrap],
          post: [Function: wrap],
          postForm: [Function: wrap],
          put: [Function: wrap],
          putForm: [Function: wrap],
          patch: [Function: wrap],
          patchForm: [Function: wrap],
          defaults: {
            transitional: {
              silentJSONParsing: true,
              forcedJSONParsing: true,
              clarifyTimeoutError: false
            },
            adapter: [ 'xhr', 'http' ],
            transformRequest: [ [Function: transformRequest] ],
            transformResponse: [ [Function: transformResponse] ],
            timeout: 0,
            xsrfCookieName: 'XSRF-TOKEN',
            xsrfHeaderName: 'X-XSRF-TOKEN',
            maxContentLength: -1,
            maxBodyLength: -1,
            env: {
              FormData: [Function: FormData] {
                LINE_BREAK: '\r\n',
                DEFAULT_CONTENT_TYPE: 'application/octet-stream'
              },
              Blob: [class Blob]
            },
            validateStatus: [Function: validateStatus],
            headers: {
              common: {
                Accept: 'application/json, text/plain, */*',
                'Content-Type': undefined
              },
              delete: {},
              get: {},
              head: {},
              post: {},
              put: {},
              patch: {},
              'Content-Type': 'application/json',
              'X-Api-Key': 'xxx',
              Authorization: 'Bearer eyJr...'
            },
            baseURL: 'https://api.defender.openzeppelin.com/'
          },
          interceptors: {
            request: InterceptorManager { handlers: [] },
            response: InterceptorManager {
              handlers: [
                {
                  fulfilled: [Function (anonymous)],
                  rejected: [Function: rejectWithDefenderApiError],
                  synchronous: false,
                  runWhen: null
                }
              ]
            }
          },
          create: [Function: create]
        }
      }
    }
  }
}

The logs without provider:

{
  action: 'request',
  request: {
    method: 'eth_newFilter',
    params: [
      {
        topics: [
          '0xc6bb007d5073aca60e38964dbf6930bee55f9c8cacae4019360cadf88110a54f'
        ],
        address: [ '0xdfc0b38e30b62e345a30938c5266b52e51affabf' ]
      }
    ]
  },
}
{
  action: 'response',
  request: {
    method: 'eth_newFilter',
    params: [
      {
        topics: [
          '0xc6bb007d5073aca60e38964dbf6930bee55f9c8cacae4019360cadf88110a54f'
        ],
        address: [ '0xdfc0b38e30b62e345a30938c5266b52e51affabf' ]
      }
    ]
  },
  response: {
    id: 23,
    jsonrpc: '2.0',
    result: '0x2402000000000000984148e62ae2f998615d'
  },
}
{
  action: 'request',
  request: { method: 'eth_chainId', params: [] },
}
{
  action: 'response',
  request: { method: 'eth_chainId', params: [] },
  response: { id: 24, jsonrpc: '2.0', result: '0xaa36a7' },
}
{ action: 'receiveRpcResult', result: '0xaa36a7', provider: 'xxx' }
{
  action: 'request',
  request: {
    method: 'eth_getFilterChanges',
    params: [ '0x2402000000000000984148e62ae2f998615d' ]
  },
}
{
  action: 'response',
  request: {
    method: 'eth_getFilterChanges',
    params: [ '0x2402000000000000984148e62ae2f998615d' ]
  },
  response: { id: 25, jsonrpc: '2.0', result: [] },
}
{
  action: 'request',
  request: { method: 'eth_blockNumber', params: [] },
}
{
  action: 'response',
  request: { method: 'eth_blockNumber', params: [] },
  response: { id: 26, jsonrpc: '2.0', result: '0x613e26' },
}
{
  action: 'request',
  request: { method: 'eth_blockNumber', params: [] },
}
{
  action: 'response',
  request: { method: 'eth_blockNumber', params: [] },
  response: { id: 27, jsonrpc: '2.0', result: '0x613e26' },
}
{
  action: 'request',
  request: { method: 'eth_blockNumber', params: [] },
}
{
  action: 'response',
  request: { method: 'eth_blockNumber', params: [] },
  response: { id: 28, jsonrpc: '2.0', result: '0x613e27' },
}
{
  action: 'request',
  request: { method: 'eth_chainId', params: [] },
}
{
  action: 'response',
  request: { method: 'eth_chainId', params: [] },
  response: { id: 29, jsonrpc: '2.0', result: '0xaa36a7' },
}
{ action: 'receiveRpcResult', result: '0xaa36a7', provider: 'xxx' }
{
  action: 'request',
  request: {
    method: 'eth_getFilterChanges',
    params: [ '0x2402000000000000984148e62ae2f998615d' ]
  },
}
{
  action: 'response',
  request: {
    method: 'eth_getFilterChanges',
    params: [ '0x2402000000000000984148e62ae2f998615d' ]
  },
  response: {
    id: 30,
    jsonrpc: '2.0',
    result: [
      {
        address: '0xdfc0b38e30b62e345a30938c5266b52e51affabf',
        topics: [
          '0xc6bb007d5073aca60e38964dbf6930bee55f9c8cacae4019360cadf88110a54f',
          '0x000000000000000000000000f64bd9d1b65daf7a57bd1c2ab84acbcf3c6b5438'
        ],
        data: '0x',
        blockNumber: '0x613e27',
        transactionHash: '0x8e8cb6b14bf5cbcbf3cc2506fc649e9723a674df912a31970e9a6eecfca51706',
        transactionIndex: '0xc',
        blockHash: '0xbd58311e9c4376492ff37c14986c9f53f69d36a8d16c9e186491881f65419ae8',
        logIndex: '0x9',
        removed: false
      }
    ]
  },
}
@TODO Error: network is not available yet (code=NETWORK_ERROR, version=6.13.1)
    at makeError (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/utils/errors.js:129:21)
    at assert (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/utils/errors.js:149:15)
    at get _network [as _network] (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/provider-jsonrpc.js:361:31)
    at FilterIdEventSubscriber._emitResults (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:159:75)
    at #poll (/Users/xxx/Projects/project/node_modules/@openzeppelin/defender-sdk-relay-signer-client/node_modules/ethers/lib.commonjs/providers/subscriber-filterid.js:91:24)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'NETWORK_ERROR',
  shortMessage: 'network is not available yet'
}
{
  action: 'request',
  request: { method: 'eth_blockNumber', params: [] },
}
{
  action: 'response',
  request: { method: 'eth_blockNumber', params: [] },
  response: { id: 31, jsonrpc: '2.0', result: '0x613e27' },
}
{
  action: 'request',
  request: { method: 'eth_blockNumber', params: [] },
}
{
  action: 'response',
  request: { method: 'eth_blockNumber', params: [] },
  response: { id: 32, jsonrpc: '2.0', result: '0x613e27' },
}
{
  action: 'request',
  request: { method: 'eth_blockNumber', params: [] },
}
{
  action: 'response',
  request: { method: 'eth_blockNumber', params: [] },
  response: { id: 33, jsonrpc: '2.0', result: '0x613e28' },
}
{
  action: 'request',
  request: { method: 'eth_chainId', params: [] },
}

and the eth_blockNumber is requested every 2-3 seconds until closing the server or exceeding the Relayer query quota limits.

@MCarlomagno
Copy link
Member

Hi @patriksulak this seems to be a race condition where the provider tries send some rpc call and the network is still not loaded, would you mind sharing a code snippet along with the dependencies versions you are using?
If its private code, please send it to our support email [email protected]
And we will investigate the bug, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

3 participants