Skip to content

Unexpected results from block_search RPC #9712

@ancazamfir

Description

@ancazamfir

Tendermint version (use tendermint version or git rev-parse --verify HEAD if installed from source):
v0.34.21

ABCI app (name for built-in, URL for self-written if it's publicly available):

Environment:

  • OS (e.g. from /etc/os-release):
  • Install tools:
  • Others:

What happened:
We noticed that sometimes hermes gets multiple blocks from block_search for a query that should have returned a single block. The exact query was:

"send_packet.packet_sequence='890' AND 
send_packet.packet_src_channel='channel-2' AND 
send_packet.packet_src_port='provider' AND 
send_packet.packet_dst_channel='channel-0' AND 
send_packet.packet_dst_port='consumer'"

The block_search was returning two blocks, one had something like:

"end_block_events": [
      {
        "type": "send_packet",
        "attributes": [
...
b'packet_sequence' b'890'
b'packet_src_port' b'provider'
b'packet_src_channel' b'channel-0'
b'packet_dst_port' b'consumer'
b'packet_dst_channel' b'channel-0'
...
	  ]
      },
      { =
        "type": "send_packet",
        "attributes": [
...
b'packet_sequence' b'884'
b'packet_src_port' b'provider'
b'packet_src_channel' b'channel-2'
b'packet_dst_port' b'consumer'
b'packet_dst_channel' b'channel-0'
...
	    ]
      }
]

(full IBC events from end_block_events are here)
This result seems to be wrong as the attributes span multiple send_packet types.

What you expected to happen:
If iiuc the block should be returned only if the attributes of an entry of the given type in the event list match the query. If my understanding is wrong please let me know. Also if the query can be formatted differently so we get the expected results.

Have you tried the latest version: yes

How to reproduce it (as minimally and precisely as possible):
I added a simple test in state/indexer/block/kv/kv_test.go

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done/Merged

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions