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

Blockchain download from peer stuck #14

Open
abhaygupta1999 opened this issue Mar 14, 2023 · 3 comments
Open

Blockchain download from peer stuck #14

abhaygupta1999 opened this issue Mar 14, 2023 · 3 comments

Comments

@abhaygupta1999
Copy link

I have setup my own node in AWS, and use that only in peer group. Like below:
peerGroup.addAddress(InetAddress.getByName(host));
peerGroup.setMaxConnections(1);

But it got stuck, and not downloading new blocks of data. Can anyone please help me here? I was debugging from this morning, but can't able to find the issue.

Here are the logs:
org.bitcoinj.core.Peer : Peer{[10.17.10.55]:8333, version=70015, subVer=/Bitcoin Cash Node:24.0.0(EB32.0)/, services=1061 (NETWORK, BLOOM, NETWORK_LIMITED, remaining: 100000), time=2023-03-14 11:21:53, height=783873}: Too many pending pings, disconnecting
org.bitcoinj.core.PeerGroup : [10.17.10.55]:8333: Peer died (2 connected, 0 pending, 1 max)
org.bitcoinj.core.PeerGroup : Download peer died. Picking a new one.
org.bitcoinj.core.PeerGroup : Unsetting download peer: Peer{[10.17.10.55]:8333, version=70015, subVer=/Bitcoin Cash Node:24.0.0(EB32.0)/, services=1061 (NETWORK, BLOOM, NETWORK_LIMITED, remaining: 100000), time=2023-03-14 11:21:53, height=783873}
org.bitcoinj.core.PeerGroup : Setting download peer: Peer{[10.17.10.55]:8333, version=70015, subVer=/Bitcoin Cash Node:24.0.0(EB32.0)/, services=1061 (NETWORK, BLOOM, NETWORK_LIMITED, remaining: 100000), time=2023-03-14 11:21:53, height=783873}
o.b.c.listeners.DownloadProgressTracker : Chain download switched to Peer{[10.17.10.55]:8333, version=70015, subVer=/Bitcoin Cash Node:24.0.0(EB32.0)/, services=1061 (NETWORK, BLOOM, NETWORK_LIMITED, remaining: 100000), time=2023-03-14 11:21:53, height=783873}
org.bitcoinj.core.PeerSocketHandler : [10.17.10.55]:8333 - java.nio.channels.CancelledKeyException
c.PeerGroup$ChainDownloadSpeedCalculator : 0 blocks/sec, 0 tx/sec, 0 pre-filtered tx/sec, avg/last 0.00/0.00 kilobytes per sec, chain/common height 769180/783874, stall disabled (threshold <0.78 KB/sec for 10 seconds)

And then below log groups keeps on coming with waiting time increasing.

org.bitcoinj.core.PeerGroup : [10.17.10.55]:8333: Peer died (0 connected, 0 pending, 1 max)
org.bitcoinj.core.PeerGroup : Peer discovery took 3.630 ?s and returned 0 items from 0 discoverers
org.bitcoinj.core.PeerGroup : Waiting 600066 ms before next connect attempt to [10.17.10.55]:8333

I am using bitcoincashj version 0.26.2.1
I found out some thing that it stucked at block number 783808 (https://www.blockchain.com/explorer/blocks/bch/783808) for which the block size is around 8 Mb.
It is not able to sync that huge block. Node connection is working fine. As, I have resynced the wallet from start. But it gets stuck at chain height 783807.
Now my question is how to sync big size blocks in bitcoinj?
@pokkst Please help here

@pokkst
Copy link
Owner

pokkst commented Mar 14, 2023

It is not the block size that is the issue if I had to guess at first glance. There exist several 8+, especially 32MB, blocks that bitcoincashj can process just fine.
These new blocks seem to be full of OP_RETURN outputs, but I don't know for sure what the cause is right now, and I don't really have the time/interest to figure it out.

@abhaygupta1999
Copy link
Author

Hi @pokkst
Your small help will be much appreciated. Its a PROD issue for me. And the library is huge to get through the whole flow.
If you can provide me some direction, on which files or methods to check for the issue, it will help me a lot to debug.

@abhaygupta1999
Copy link
Author

Yes, you were right @pokkst
It is somehow related to OP_RETURN.
I have added logs to check, for example, for block number 783808, it was able to get transactions data for it, in processTransaction, then it says, Received broadcast filtered block "blockHash"
But, it does start processing next blocks.
It takes time to process the above transactions. And it takes more time when the transaction has OP_RETURN.

Can you please answer two questions?

  1. What exactly happens after we receive broadcast filtered block?
  2. How can we ignore transactions with OP_RETURN it it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants