Skip to content

GraphQL blocks query not resolving parent consistently #24161

@amyodov

Description

@amyodov

System information

Geth version: 1.10.13
OS & Version: Linux

Expected behaviour

{
  blocks(from:10381080 to:10381085) {
    number
    hash
    parent {
      number
      hash
    }
  }
}

Result:

{
  "data": {
    "blocks": [
      {
        "number": 10381080,
        "hash": "0x13c0ee88f68741bc780aef2c101dc193c84dc86d65bfb2221bc1ad27dea92a2a",
        "parent": {
          "number": 10381079,
          "hash": "0x59d246e54bf24fc2232dc4422037fb16fcee3c9c205a3c20d40f2fdf8a444ae6"
        }
      },
      {
        "number": 10381081,
        "hash": "0x0206b0706851b58f6fa0bb2c2642559d46b7278831d1ed2d6e7271c7543c41b7",
        "parent": {
          "number": 10381080,
          "hash": "0x13c0ee88f68741bc780aef2c101dc193c84dc86d65bfb2221bc1ad27dea92a2a"
        }
      },
      {
        "number": 10381082,
        "hash": "0xc38be4168f5cf5facb787d2bec40f1bcb8fd14391087dbd6c4b50c7b405c525a",
        "parent": {
          "number": 10381081,
          "hash": "0x0206b0706851b58f6fa0bb2c2642559d46b7278831d1ed2d6e7271c7543c41b7"
        }
      },
      {
        "number": 10381083,
        "hash": "0x3cee0f907ad3d303a32759d513eb538d58a56e2eb78985edb81841e707b1bde2",
        "parent": {
          "number": 10381082,
          "hash": "0xc38be4168f5cf5facb787d2bec40f1bcb8fd14391087dbd6c4b50c7b405c525a"
        }
      },
      {
        "number": 10381084,
        "hash": "0x703aaebacb5abb97043cf22d806e0ff1b947b8f09673e8539b1abb78f737b707",
        "parent": {
          "number": 10381083,
          "hash": "0x3cee0f907ad3d303a32759d513eb538d58a56e2eb78985edb81841e707b1bde2"
        }
      },
      {
        "number": 10381085,
        "hash": "0x9b464050520ec1293e0ed120d4c581b6aaa26d0f8cf65e5f3735fe3d527b9081",
        "parent": {
          "number": 10381084,
          "hash": "0x703aaebacb5abb97043cf22d806e0ff1b947b8f09673e8539b1abb78f737b707"
        }
      }
    ]
  }
}

Actual behaviour

The parent handling is rather random, and may occasionally return null on some blocks, sometimes may return the data; the result varies even on different queries. Example happening output:

{
  "data": {
    "blocks": [
      {
        "number": 10381080,
        "hash": "0x13c0ee88f68741bc780aef2c101dc193c84dc86d65bfb2221bc1ad27dea92a2a",
        "parent": null
      },
      {
        "number": 10381081,
        "hash": "0x0206b0706851b58f6fa0bb2c2642559d46b7278831d1ed2d6e7271c7543c41b7",
        "parent": null
      },
      {
        "number": 10381082,
        "hash": "0xc38be4168f5cf5facb787d2bec40f1bcb8fd14391087dbd6c4b50c7b405c525a",
        "parent": null
      },
      {
        "number": 10381083,
        "hash": "0x3cee0f907ad3d303a32759d513eb538d58a56e2eb78985edb81841e707b1bde2",
        "parent": {
          "number": 10381082,
          "hash": "0xc38be4168f5cf5facb787d2bec40f1bcb8fd14391087dbd6c4b50c7b405c525a"
        }
      },
      {
        "number": 10381084,
        "hash": "0x703aaebacb5abb97043cf22d806e0ff1b947b8f09673e8539b1abb78f737b707",
        "parent": null
      },
      {
        "number": 10381085,
        "hash": "0x9b464050520ec1293e0ed120d4c581b6aaa26d0f8cf65e5f3735fe3d527b9081",
        "parent": null
      }
    ]
  }
}

Steps to reproduce the behaviour

Using the GraphQL interface, create a blocks(from: ..., to: ...) query for multiple blocks range, containing parent selector. The parent fields in the response would be rather inpredictable.
I wonder if the other “foreign key” references in the GraphQL queries may exhibit a similar inconsistent behavior.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions