Commit Graph

252 Commits

Author SHA1 Message Date
Chris Stewart
5a8576a057
Encapsulate access to akka streams queue to PeerManager (#5070)
* Encapsulate access to akka streams queue to PeerManager

* Revert logback-test.xml
2023-05-15 15:24:38 -05:00
Chris Stewart
8dfb7d091f
2023 05 05 encapsulate peermanager peermsgsender (#5066)
* Make PeerManager.peerDataMap private

* Remove PeerMessageSender as param to DataMessageHandler.addToStream()

* Remove PeerMessageSender parameter from DataMessageWrapper

* Add PeerMessageSenderApi

* Try adding a supervision strategy to the stream

* Empty commit to re-run CI

* Adjust log level down to try and get a better idea of whats happening on IC

* Add commandName to exception when we cannot find peerMessageSender in stream

* Try decreasing queue size to reduce async processing between being stream processing and actor receiving external p2p message

* Empty commit to re-run CI

* Increase max concurrent offers to nodeAppConfig.maxConnectedPeers

* Revert logging
2023-05-08 15:17:36 -05:00
Chris Stewart
4c6090207a
Add MisbehavingPeer state (#5065)
* Add MisbehavingPeer state

* Remove PeerManager.syncFromNewPeer()
2023-05-05 16:11:25 -05:00
Chris Stewart
2fdd237e20
2023 04 26 dmh state refactor (#5062)
* WIP: Add new states for FilterHeaderSync, FilterSync, DoneSyncing

* Get DataMessageHandler compiling

* Get src compiling

* Get tests compiling

* Remove syncPeer from DoneSyncing

* WIP: Get first NeutrinoNodeTest working

* Get first NeutrinoNodeTest working for basic sync

* Fix small bug

* Fix bug where we transition to HeaderSync when we receive HeadersMessage with 0 headers. Also reduce conflicting states in DataMessageHandler.getHeaders()

* Add caveats for empty HeadersMessage

* WIP: Get NeutrinoNodeTest syncing compact filters during IBD passing consistently

* Remove generate block delay

* Empty commit to re-run CI

* Fix bug in onP2PClientStopped()

* Fix handling of DoneSyncing state when we receive headers messages

* Remove impossible case
2023-05-04 12:45:40 -05:00
Chris Stewart
ce6f0d1507
Refactor HeadersMessage to have helper method for HeadersMessage (#5060) 2023-04-26 10:46:24 -05:00
Chris Stewart
1fc6edf825
Remove initialSyncDone Promise as it isn't used (#5058) 2023-04-25 06:45:15 -05:00
Chris Stewart
ce6d2212c1
2023 04 22 peermanager dmh refactor (#5057)
* WIP: Move DataMessageHandler into PeerManager

* Get things compiling

* Turn off logging
2023-04-24 08:14:02 -05:00
Chris Stewart
1461782865
Move onHeaderRequestTimeout to PeerManager (#5056) 2023-04-23 13:38:15 -05:00
Chris Stewart
7beed5a00d
Only request syncing compact filter headers / filters if our tip isn't stale (#5055) 2023-04-22 10:24:23 -05:00
Chris Stewart
18482c7e44
2023 04 20 decouple node (#5049)
* Remove node parameter to PeerMessageReceiver, pass the ControlMessageHandler and DataMessageHandler as parameters

* Remove node reference in DataMessageHandler, just pass PeerManager as parameter

* Fix pattern match to be exhaustive

* Move fetchCompactFilterHeaders, sendFirstGetCompactFilterHeadersCommand out of DataMessagehandler to decouple DataMessageHandler, PeerManager

* scalafmt
2023-04-20 18:39:30 -05:00
Chris Stewart
447c6d03de
Implement getconnectioncount rpc (#5048)
* Implement getconnectioncount rpc

* Reduce waits in test, add documentation

* Fix docs

* Empty commit to re-run CI
2023-04-19 16:47:54 -05:00
Chris Stewart
51429a7d68
2023 04 17 refactor peer message receiver (#5045)
* WIP: Refactor PeerMessageReceiver methods into PeerMessageReceiverState

* Remove state helper methods from PeerMessageReceiver

* WIP: Remove PeerMessageReceiverState from PeerMessageReceiver

* Get things compiling and tests passing

* Remove currentPeerMessageHandlerReceiver

* Refactor PeerMessageReceiverTest to not use bitcoind
2023-04-18 10:25:24 -05:00
Chris Stewart
13e5e6501c
Fix bug where compact filters weren't being processed in order of block height during IBD (#5041)
* Fix bug where compact filters weren't being processed in order of block height during IBD

* Use sorted compact filter messages in chainApi.processFilters()
2023-04-10 16:42:48 -05:00
Chris Stewart
f95360f8ba
Add logic to fetch block headers after compact filters are synced in IBD to avoid a stale tip (#5037)
* Add logic to fetch block headers after compact filters are synced in IBD to avoid a stale tip

* Restore logging, remove println

* Add comment linking to issue

* Cleanup logging

* Only send getheaders message after filter sync if we are in IBD
2023-04-08 16:12:03 -05:00
Chris Stewart
e791932f99
Refactor peerData -> peerDataMap, try to fix #4955 (#5030)
* Refactor peerData -> peerDataMap, try to fix #4955

* scalafmt

* Empty commit to re-run CI
2023-04-03 06:35:39 -05:00
Chris Stewart
54b47152d1
Fix bug fetching compact filter height to early in DataMessageHandler (#5031) 2023-04-01 07:21:58 -05:00
Chris Stewart
1d611ec6b5
Remove fetch compact filters in NeutrinoNode.sync() before fetching block headers / compact filter headers (#5023) 2023-03-23 12:01:22 -05:00
Chris Stewart
875a67a73c
2023 03 03 rm DataMessageHandler filter params (#5009)
* Remove DataMessageHandler filter params, tests not passing

* Adjust logging levels

* WIP

* Get tests passing

* Cleanup

* Fix logging level

* Invert isSynced flag

* Rework BaseBlockchain.toString

* Fix BlockchainTest

* Fix syncing of compact filters when walletCreationTime is passed into dmh

* Cleanup
2023-03-14 11:45:21 -05:00
Chris Stewart
de0e892b3e
2023 02 27 Fix bug where duplicate filters caused node not to sync (#5008)
* WIP

* Modify DataMessageHandler to use Set for filter batch, fix test case

* revert log level

* Remove duplicate filters test

* Re-add test to make sure we don't throw an exception when processing a filter we've seen before

* Empty commit to re-run CI

* Empty commit to re-run CI

* Empty commit to re-run CI

* Fix NeutrinoNodeTest

* Empty commit to re-run CI

* Empty commit to re-run CI
2023-03-02 06:46:08 -06:00
Chris Stewart
0577b8c1fe
Improve Inventory toString messages (#4997)
* Improve Inventory toString messages

* Add individual counts rather than showing each service identifier

* Add peer= prefix to peer
2023-02-23 14:12:53 -06:00
Chris Stewart
c7febc1ef0
Segregate P2PClientTest and P2PClientActorTest (#4974)
* Segregate P2PClientTest and P2PClientActorTest to make it easier to test the actor

* Fix cleanup code

* Clean up tables for postgres test case

* Fix BitcoinSAppConfigBitcoinFixtureStarted.afterAll()

* Empty commit

* Add forceNamedWallet parameter to for postgres test cases where we need multiple wallets. This prevents them from writing to the same postgres schema by making unique wallet names

* Cleanup:

* Empty commit
2023-02-06 15:07:18 -06:00
Chris Stewart
f6207b1c9f
Add check we have more than 1 peer before we try to syncFromNewPeer() (#4966)
* Add check we have more than 1 peer before we try to syncFromNewPeer()

* Empty commit

* Return failed Future rather than just logging an error
2023-02-03 15:46:24 -06:00
Chris Stewart
3bc89c680f
Fix case where syncCompactFilters is called but filters but no sync peer is set (#4965) 2023-01-31 06:42:55 -06:00
Chris Stewart
c5983730bb
2023 01 10 refactor peermanager (#4950)
* Make PeerManager.finder private

* Make PeerManager.supervisor private

* Write unit test to see if default peer is added to PeerManager

* Use withNeutrinoNodeUnstarted fixture

* Get unit tests passing

* Add println to try and debug CI

* Add more println

* more println

* Adjust nodeTest / parallelExecution = false

* Try to make error logged to figure out why failure is happening on CI

* Adjust log level to ERROR

* Add catch to try and log failure messages

* Add log for sending messages to peers

* Try to increase threadpool size to see if we are deadlocking

* Add more logs

* Add another log to detect where failure is

* Try using Actor.tell() with explicit ActorRef.noSender

* Very detailed logging

* Remove duplicate method from rebase

* Revert things

* Revert build.sbt

* Empty commit

* Bump timeout

* Empty commit to run CI

* Revert more files
2023-01-27 10:43:50 -06:00
Chris Stewart
60907a7c17
2023 01 25 mv handling network received msg (#4961)
* Move handle network received message into awaitNetworkRequest() context

* Fix bug where I wasn't wrapping in NetworkMessageReceived

* revert logging

* remove more uncessary logs

* Empty commit
2023-01-25 13:38:39 -06:00
Chris Stewart
dd08dedb41
2023 01 24 small changes from pr 4950 (#4958)
* Pull things over from 4950 that shouldn't cause issues to reduce size of 4950

* Reduce timeout for processing a batch of messages from 1000 seconds -> 60 seconds

* scalafmt

* Empty commit
2023-01-25 08:31:57 -06:00
Chris Stewart
dfe92d2ba4
Remove expectTimeout Await.result() (#4957) 2023-01-23 12:30:36 -06:00
Chris Stewart
4e4c6d03f1
Remove Await.result() in initializationTimeoutCancellable (#4956) 2023-01-23 09:00:38 -06:00
Chris Stewart
9646994a99
Encapsulate PeerData.client (#4944) 2023-01-09 11:56:38 -06:00
Chris Stewart
09d53460a1
Implement ability to cancel background task for querying peer with specific services (#4937)
* Implement ability to cancel background task for querying peer with specific services

* Cancel scheduled job when promise is completed
2023-01-02 11:39:13 -06:00
Chris Stewart
a7930657f9
Rework logging so that stack traces aren't printed when we receive duplicate data over the p2p network (#4936) 2022-12-30 14:51:27 -06:00
Chris Stewart
bd79ab0b73
2022 12 12 rm dmh params (#4925)
* WIP

* WIP2

* Get all DataMessageHandlerTest passing

* Get NeutrinoNodeTest passing

* Fix NeutrinoNodeWithUncachedBitcoindTest unit test

* Use chainApi to detect if we are in IBD

* Empty commit

* Revert logging levels
2022-12-28 16:37:28 -06:00
Chris Stewart
96392edde7
Stop P2PClientActor when we receive Tcp.{ErrorClosed,ConfirmedClosed,Closed,Aborted,PeerClosed} commands (#4926) 2022-12-15 16:45:08 -06:00
Chris Stewart
24c6dc2cdb
Download blocks from random peer if we aren't in IBD (#4924)
* Download blocks from random peer if we aren't in IBD

* scalafmt
2022-12-14 16:49:54 -06:00
Chris Stewart
0d76a06331
Call handleDataPayloadHelper explicitly on DataMessageHandlerState (#4921)
* Call handleDataPayloadHelper explicitly on DataMessageHandlerState

* revert changes from other PR

* revert logs
2022-12-14 09:28:56 -06:00
Chris Stewart
6293d45a37
Fix synced flag but in DataMessageHandler bug (#4920)
* Fix synced flag but in DataMessageHandler bug

* Make variable name be syncing since that is what it actually represents
2022-12-13 07:40:00 -06:00
Chris Stewart
aab2b274f0
Remove default parameters from DataMessageHandler (#4918)
* Remove default parameters from DataMessageHandler

* Remove syncPeer default parameter
2022-12-12 15:46:34 -06:00
Chris Stewart
f2be536211
Delay querying for peers for 30 minutes (#4897) 2022-11-23 16:45:04 -06:00
Chris Stewart
1127c56a98
Bump versions to 1.9.7 (#4886) 2022-11-16 09:35:42 -06:00
Chris Stewart
f483e356cb
Adjust period of time we query for peers on the p2p network from 12 seconds -> 1 hour (#4847) 2022-10-17 14:42:14 -05:00
Chris Stewart
e73b328833
Prepare for 1.9.6 (#4820) 2022-10-09 11:12:43 -05:00
Chris Stewart
eb5924ba94
2022 10 03 1.9.5 release notes (#4813)
* add new commits

* Bump versions

* update release notes

* Update release notes
2022-10-03 14:34:36 -05:00
Chris Stewart
88fce93268
Bump more logs to INFO (#4769) 2022-09-12 09:31:30 -05:00
Chris Stewart
0cfad33fae
Add 1.9.4 website, add 1.9.4 release notes (#4726)
* Add 1.9.4 website, add 1.9.4 release notes

* Add versioned sidebars

* Bump more versions to 1.9.4

* update release notes
2022-09-12 08:19:28 -05:00
Chris Stewart
fae1a53579
Bump bitcoin-s.node.query-wait-time=120 seconds (#4759)
* Bump query-wait-time to 120 seconds

* bump disconnection log level

* Bump log to INFO where peer disconnects us
2022-09-10 09:47:50 -05:00
Chris Stewart
d2f8811a1c
Add log when we are fetching peers to sync with (#4693) 2022-08-31 17:39:21 -05:00
Chris Stewart
9353c41e8f
Add some guards for when we set IBD flag to reduce false positive WARN messages (#4683) 2022-08-30 11:47:54 -05:00
Shreyansh
2cae3f803d
Fix infinite invalid header loop (#4667)
* fix infinite invalid header loop

* Adjust log levels to WARN

Co-authored-by: Chris Stewart <stewart.chris1234@gmail.com>
2022-08-26 09:43:07 -05:00
benthecarman
02f525fd39
Make CRUDAction types more strict (#4657) 2022-08-24 06:15:24 -05:00
rorp
7c112b8a90
Fix rescan for existing wallets (#4656) 2022-08-24 05:42:53 -05:00