-
Notifications
You must be signed in to change notification settings - Fork 77
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
Blocks sometimes are with Synthetic transactions missing. #1599
Comments
I also had to manually check / re-fetch the following blocks today:
|
@georgi-l95 any ideas on this issue? |
Is it possible that because we have a different cache for every hashio instance, when the graph gets the block using getBlockByNumber/Hash it's saving the synthetic transaction in the cache, but later when it requests the receipt it asks another hashio instance, which does not have this synthetic transaction in the cache ? |
@georgi-l95, That is exactly my hypothesis as well, since that explains why it resolves by itself by re-fetching the block data. Trying to make some local tests in order to validate the theory. Also, I opened this other ticket to keep track of it, but I believe is due to the same reason that we lack distributed shared cache. #1627 |
Description
When doing some tests on TheGraph longstanding node against mainnet, I decided to index an HTS token with fairly high activity, so I choose
SAUCER
Token of SaucerSwap.Address:
0x00000000000000000000000000000000000b2ad5
startBlock:
38629934
I choose that starting block for the indexing since it was the first interaction found on
Hashscan
for that token. see here.Indexing went good until suddenly stopped at block: number:
0x30e597a
or hash:0xe0d8abbb5811629eac5c1f549b8013394a73c042f752bcf76f277f5b88a5b30c
When seeing the status of the subgraph, I found a
fatalError
with a message something like this:** I did not copy the original block error, but then there were many more blocks with same issue, so I started copying some for reference.
But to my surprise, when I fetched the block using postman I did not encounter the issue, I was able to find said transaction (synthetic) among the transactions for that block.
So I found that there was a way to
delete
the cache for a given block hash or number using a troubleshooting tool for thegraph-node
called:graphman
. This tool resides within the same instance where the graph-node is running, so a remote exec was needed to run it, and the command is something like this:or by hash:
if inconsistencies are found a message like this will appear and the cache will be deleted forcing the graph-node to refetch the block and resolved the indexing and continuing to index the
subgraph
And after a few minutes you can see that the indexing status of the subgraph is continuing and is no longer stuck.
So this happened around 20 times between blocks:
38629934
and51532212
(start to end)I documented the need to
check
the cached block for the following block instances, but there were a few more:What I think is happening:
graph-node is requesting logs for a range of blocks for that given address.
logs re returned with reference to the given block.
block is fetched using
eth_getBlockByHash
oreth_getBlockByNumber
and the expected transaction is not found there, hence failing.Steps to reproduce
Additional context
No response
Hedera network
mainnet
Version
v0.28.0
Operating system
Other
The text was updated successfully, but these errors were encountered: