Closed pik694 closed 4 years ago
anyone, any ideas what might cause such behavior? (looks like some receipts can be inaccessible until next time geth
is restarted, after which they appear correctly again).
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This is indicative of some sort of race, where our internal receipt-cache is polluted, probably by not properly handling a reorg and updating to the new canon status.
When this happens, it would be good to know if eth.getTransaction{xx}
also fails with null
, or if it's only the eth.getTransactionReceipt
that fails
Oh, https://github.com/omisego/elixir-omg/issues/284 is closed -- I would guess that means this is no longer relevant? Let's auto-close after some time
Hello @holiman and thank you for looking into.
Confirming, that the very manifestation of this we used to have is now gone.
So I'm afraid we don't have a chance to reproduce or debug this better. If it resurfaces, we'll let know!
Thank you, closing then for now
System information
Geth version:
1.8.18-stable
OS & Version: Ubuntu 18.04.1 LTS Chain:rinkeby
testnetOn one machine work one
geth
instance as well as two services. The first service sends transactions togeth
, the other reads logs. Both services connected to the very samegeth
instance.Expected behaviour
When using JSON RPC
eth_getLogs
endpoint with parameters given such as:Actual behaviour
I am always asking for logs from the last 20 blocks. It sees all the logs correctly for a time, but then it does not return one log from the range. Then I keep asking for the corrupted range and the result keeps missing the same log. When I restart
geth
instance the missing log is back.Steps to reproduce the behaviour
I'm deploying the contract on
rinkeby
testnet and one my services is sending transactions to it (lets say one per block) and the other check the events. For a couple of hours it works just fine, when suddenlygeth
does not return one of the event (viaeth_getLogs
). It does return events from the transactions that where mined after the one which logs are missing as well as from the transactions before. When I try to calleth.getTransactionReceipt
from geth console it returnsnull
, even though the transaction is seen by other nodes and onetherscan
as well. On some other node I also calleth_getLogs
and it returns the logs with the missing one.What is more - when I kill the corrupted geth instance and restart it (I do not wipe out the data) the new instance returns correct results.
What is also strange is the fact that the first service (the one sending transactions) did see receipt.
I was able to reproduce this behaviour a couple of times so far.
Backtrace
This is a log from my code on corrupted
geth
From geth console:
When I restart geth:
And from geth console