Commit Graph

986 Commits

Author SHA1 Message Date
Christoph Atteneder
839175b27c
Resynced from last release and synced again 2021-08-27 20:02:14 +02:00
Christoph Atteneder
ce0b301cf1
Update data stores for v1.7.3 2021-08-27 09:30:43 +02:00
Christoph Atteneder
b92d1c25ac
Update data stores for v1.7.2 2021-07-19 20:06:02 +02:00
chimp1984
f169d845d4
Comment out trace logs
In profiler the printMap method got invoked (though it should
not if added as parameter in log)
2021-07-07 22:49:40 +02:00
Christoph Atteneder
d9b84e2a84
Update data stores for v1.7.0 2021-06-25 16:18:10 +02:00
sqrrm
8bc60d0909
Merge pull request #5573 from ripcurlx/add-hint-to-upgrade-to-tor-v3
Add hint to upgrade to tor v3
2021-06-23 13:41:03 +02:00
Christoph Atteneder
e9ef413722
Display a tor node address v3 upgrade prompt
whenever the client is in a state to do so without any problems.
2021-06-14 16:10:47 +02:00
jmacxx
cc7346544b
feature to enable user avatars and tags in Disputes 2021-06-08 15:15:52 -05:00
Christoph Atteneder
3be0795eea
Update data stores for v1.6.5 2021-05-25 10:40:45 +02:00
Christoph Atteneder
fa920fc0a1
Update DAO state for v1.6.3 2021-04-29 20:20:49 +02:00
Christoph Atteneder
b5d772bc48
Update data stores for v1.6.3 2021-04-26 11:11:29 +02:00
Christoph Atteneder
d3233bac7a
Update data stores for v1.6.0 2021-03-24 10:53:24 +01:00
Steven Barclay
f21379160b
Merge branch 'release/v1.6.0' into implement-segwit-for-bsq 2021-03-20 23:18:49 +00:00
jmacxx
f936210717
fix mailbox bootstrap issue 2021-03-02 14:34:03 -06:00
jmacxx
b3263be5e9
Fix initialization ordering issue
TradeManager must be inited before MailboxMessageService
2021-02-24 09:13:52 +01:00
Christoph Atteneder
a691b26de4
Update witness stores 2021-02-23 11:16:29 +01:00
Christoph Atteneder
8e78cfa2b7
Update data stores for v1.5.7 2021-02-22 15:52:18 +01:00
chimp1984
3c38fd67eb
Remove boolean return value for requestPreliminaryData
and call onNoSeedNodeAvailable instead.
2021-02-19 10:09:05 +01:00
chimp1984
f73408a79e
Call onNoSeedNodeAvailable if return value from requestPreliminaryData is false
We did not do all the calls before (like on p2pDataStorage), so that changes behaviour.
2021-02-19 10:09:05 +01:00
chimp1984
e57c26ecb0
Refactor: Extract method from duplicated code 2021-02-19 10:09:05 +01:00
chimp1984
1e6744ddc0
Use same behaviour in onNoSeedNodeAvailable as in onUpdatedDataReceived 2021-02-19 10:09:04 +01:00
chimp1984
45e4aaa24d
Refactor: Rename onBootstrapComplete to onBootstrapped 2021-02-19 10:09:04 +01:00
chimp1984
c6868f1bed
Call p2PDataStorage.onBootstrapComplete() before
mailboxMessageService.onBootstrapped(); and onUpdatedDataReceived

mailboxMessageService depends on p2PDataStorage so we make sure the
p2PDataStorage is updated before we update the mailboxMessageService state.
2021-02-19 10:09:04 +01:00
chimp1984
49e9f72d6e
Merge onUpdatedDataReceived and onNoSeedNodeAvailable to onBootstrapped 2021-02-19 10:09:04 +01:00
chimp1984
44fcfb86bb
Call onNoSeedNodeAvailable on mailboxMessageService at onNoSeedNodeAvailable 2021-02-19 10:09:04 +01:00
chimp1984
d39cdaa33e
Fixes https://github.com/bisq-network/bisq/issues/5204
Remove SetupListener implementation from MailboxMessageService.
Remove requestDataManager
Add onNoSeedNodeAvailable method
Call onNoSeedNodeAvailable from P2PService
2021-02-19 10:09:03 +01:00
chimp1984
fcaad5580b
Use readableFileSize instead of division by 1024 for kb display in statistic logs 2021-02-18 11:40:10 -05:00
Steven Barclay
b4ad6bf637
Upgrade jsonrpc4j & Jackson; simplify BitcoindClient
Change jsonrpc4j version from 1.5.3 to 1.6.0.bisq.1, forked to the Bisq
repo from the recent 1.6.0 release. The forked version changes the class
'com.googlecode.jsonrpc4j.HttpException' to be public, instead of (prob.
mistakenly) package private, so we can avoid using reflection to catch
it and re-throw as a 'bisq.network.http.HttpException'. Remove the now
unused constructors from the latter.

As part of this, upgrade Jackson to the latest stable (2.12.1) release,
since jsonrpc4j now depends on a newer version than the previous 2.8.10.
2021-02-04 07:51:38 +00:00
chimp1984
9041bf4938
onUpdatedDataReceived must be called in the correct order.
We cannot use a listener at RequestDataManager as the order
is not defined if doing so.
So we use P2PService as our controlling entity to call
further clients in the correct order.
2021-01-31 19:38:46 +01:00
Christoph Atteneder
60fc17be2c
Update data stores for v1.5.5 2021-01-25 14:18:21 +01:00
Steven Barclay
f34231abb6
Factor out failure callback logic into new Utilities method 2021-01-21 10:08:23 +00:00
Steven Barclay
dbe4953f63
Add replacement bitcoind RPC client using jsonrpc4j
Create a new 'BitcoindClient' interface and a corresponding builder, to
replace the old 'com.neemre.btcdcli4j.core.client.BtcdClientImpl' class
from the btcdcli4j library. This is instantiated by jsonrpc4j using a
dynamic proxy. It provides only a cut down version of the bitcoind RPC
API, exposing the methods 'getblock', 'getblockcount' & 'getblockhash',
as they are the only ones currently being used by RpcService.

Add corresponding Jackson-annotated DTO classes to model the JSON
structures returned by bitcoind, very similar to the classes provided by
btcdcli4j. Note that we use Double instead of BigDecimal to represent
fractional fields (difficulties + coin amounts in BTC), as they have
more consistent Jackson (de)serialisation and appear to be able to
faithfully round-trip numeric fields produced by bitcoind. Also note
that doubles can faithfully represent any valid decimal BTC amount (that
is, with 8 d.p. of precision) up to 21 million.

For now, keep the old BtcdClientImpl instance used by RpcService in
place, as the btcdcli4j block notification daemon is dependent upon it
and would also need to be replaced.

Also add unit tests for BitcoindClient which test against sample regtest
responses, using a mock HttpURLConnection.
2021-01-21 10:08:22 +00:00
chimp1984
5d13fdcdbb
Return early 2021-01-14 20:42:36 -05:00
chimp1984
7ba5ab5a4e
Change prio for mailboxMessageList persitence 2021-01-13 20:48:52 -05:00
chimp1984
d434cb3022
Sort persisted mail box messages by age and limit total number.
Add size limit.
Add log for number of persisted mailbox msg per day
2021-01-12 22:59:44 -05:00
chimp1984
2fb3bba74d
Use MailboxMessage as param type in sendEncryptedMailboxMessage 2021-01-12 17:47:44 -05:00
chimp1984
3834785828
Bugfix: Add processing of SendersNodeAddressMessage to
onBundleOfEnvelopes method.

In case we received a SendersNodeAddressMessage
inside a BundleOfEnvelope we did not set the
peers address.
2021-01-12 17:40:40 -05:00
chimp1984
3e69edeb9e
Remove comment 2021-01-12 17:34:54 -05:00
chimp1984
a21d79ad63
Refactor: rename 2021-01-12 17:34:28 -05:00
chimp1984
364a7f524c
Add toString 2021-01-12 16:14:32 -05:00
chimp1984
2b05ed54fc
Let MailboxMessage extend ExpirablePayload:
For all MailboxMessage we want to be sure they have an expire date.
Add getTTL methods and TTL value.
We use 7 days for ChatMessages and 30 days for PrivateNotificationMessages.
All others use default 15 days.
We prefer to keep them explicit and not use a default method in
ExpirablePayload or MailboxMessage.
The value in PrefixedSealedAndSignedMessage will not be used as the
sender use the TTL of the payload and pass that to the MailboxStoragePayload
where we store it in the extraMap. That way we can use different TTL even the
payload message is encrypted and we would not be able to look it up.
2021-01-12 16:14:13 -05:00
chimp1984
46f60260dc
Remove outdated code
Remove outdated comment
Add checkNotNull for senderNodeAddress
2021-01-12 15:46:33 -05:00
chimp1984
4c003cded6
Clone reportedPeers to avoid ConcurrentModificationExceptions 2021-01-12 15:33:31 -05:00
chimp1984
5c429bb3a7
Add containsKey check 2021-01-12 14:48:45 -05:00
chimp1984
d353140e7a
Refactor: rename getMyDecryptedMessages method to make it more explicit
that its only used for MailboxMsg
2021-01-12 13:54:54 -05:00
chimp1984
575196c16d
Refactor handleDecryptedMessageWithPubKey to use MailboxMessage
instead of decryptedMessageWithPubKey.
Here we change a bit the behaviour as now we check also if the
TradeMessage is a MailboxMessage. As that method is only called
from MailboxMessageService domain we never get a non MailboxMessage
here anyway and it would have been a bug.

Remove removeMailboxMsg(DecryptedMessageWithPubKey decryptedMessageWithPubKey) as not used anymore
2021-01-12 13:53:20 -05:00
chimp1984
3875bd85d1
Add removeMailboxMsg with MailboxMessage as argument 2021-01-12 13:24:42 -05:00
chimp1984
337ea89ce6
Add program argument flag republishMailboxEntries
Only republish if that flag is set, not depending if its a seedNode
2021-01-12 12:42:50 -05:00
chimp1984
b4ab8a4a0d
Fix incorrect comparison at RemovedPayloadsService.readPersisted
Add comments
Cleanups
2021-01-12 10:59:11 -05:00
chimp1984
d39a697611
Fix wrong delay, increase timeout 2021-01-12 10:48:29 -05:00
chimp1984
a9802e60cd
Refactor: return early 2021-01-12 10:48:29 -05:00
chimp1984
8d866d5d06
Improve logs, rename methods, variables 2021-01-12 10:48:29 -05:00
chimp1984
e933bfd281
Add temp. ignore to a failing test.
By debugging I could not see why it fails, behaviour seems correct.
I guess its a mock setup issue. Will look into it to fix it soon...
2021-01-12 10:48:28 -05:00
chimp1984
8e0181e528
Add republishExistingProtectedMailboxStorageEntry method
Seed nodes republish the persisted mailbox messages after
startup in chunks of 50 items with a 2 minute delay.

Move check for hasSequenceNrIncreased in addProtectedStorageEntry
earlier so we return earlier. This is a very common case for return
if we receive outdated data (like republished mailbox data we have
already received).

Mark logs with ## for easier find/replace for dev testing...
2021-01-12 10:48:28 -05:00
chimp1984
a54813a015
Increase timout for BroadcastHandler to 120 sec 2021-01-12 10:48:28 -05:00
chimp1984
320e5f1aef
Refactor: Rename method 2021-01-12 10:48:28 -05:00
chimp1984
659fe15b8d
Add comment 2021-01-12 10:48:28 -05:00
chimp1984
35ef3b842f
Add support for TTL defined by payload message so we can use
different TTL for lower prio mailbox messages like AckMessages.

As we cannot add a field without breaking signatures we
need to use the extraMap in MailboxStoragePayload
2021-01-12 10:48:28 -05:00
chimp1984
7a2501ea1b
Set uid inside constructor 2021-01-12 10:48:28 -05:00
chimp1984
873b557ce8
Add logs 2021-01-12 10:48:28 -05:00
chimp1984
026858d8b1
Refactor: move duplicated method
capabilityRequiredAndCapabilityNotSupported to CapabilityUtils
2021-01-12 10:48:27 -05:00
chimp1984
a3b2aad3b0
Refactor: move class to new utils package 2021-01-12 10:48:27 -05:00
chimp1984
de131c83b5
Use MailboxItem value at mailboxItemsByUid instead of a list:
The uid is not perfect like a cryptographic hash but it can be
considered safe enough to not have collusion. The list got filled
with duplicates, so should have been a hashSet anyway.
We cannot use the hash as that is not available at the remove method.
We might refactor that in future to get rid of that problematic uid as
key but will require a but more refactoring in the client code as well,
as we do not pass around the outer envelope data but only the decrypted
data.

- Add protectedStorageEntry from persisted mailbox messages to
P2PDataStorage at startup. This ensures that we add those keys to excludedKeys
and that helps to reduce load for seed nodes at initial data response.

- Refactoring at removeFromMapAndDataStore:

- Add trace logs
- Add more comments
2021-01-12 10:48:27 -05:00
chimp1984
9edad02e8f
Use a hashset for listeners 2021-01-12 10:48:27 -05:00
chimp1984
41a92eae7f
Refactor: Rename class 2021-01-12 10:48:27 -05:00
chimp1984
5ba7d78a39
Add RemovedPayloadsStorageService
Adjust param
2021-01-12 10:48:27 -05:00
chimp1984
1886b4eb9d
Set addressPrefixHash to empty bytes.
We have added the capability in 1.4.0 and have
enforced 1.5.1 so no traders can use that old
version anymore so the capability check is not
needed anymore.
2021-01-12 10:48:27 -05:00
chimp1984
e69a3f646c
Refactor: rename method 2021-01-12 10:48:27 -05:00
chimp1984
75e547fda5
Refactor: move classes to persistence package 2021-01-12 10:48:27 -05:00
chimp1984
32f887478b
Persist map for removed mailbox messages (AddOncePayload more generally)
We add the date when we add the hash so that we can remove expired data.
2021-01-12 10:48:26 -05:00
chimp1984
6146362d71
Add onRemoved method to remove mailbox entries once a remove message arrives
Add republishMailBoxMessages method
2021-01-12 10:48:26 -05:00
chimp1984
bfbc657c22
Remove old code 2021-01-12 10:48:26 -05:00
chimp1984
5245c205cb
Add filter for isMine at getMyMailBoxMessages
Add TODOs
2021-01-12 10:48:26 -05:00
chimp1984
63a0117b4b
Remove nullable return value from decryptProtectedMailboxStorageEntry
Remove Objects::nonNull check
Split handleMailboxItem into 2 methods for persisting and
for processing my mailbox msg
2021-01-12 10:48:26 -05:00
chimp1984
79363e7fa8
Refactor: Rename 2021-01-12 10:48:26 -05:00
chimp1984
cf8c93dc5f
Filter expired entries at startup 2021-01-12 10:48:26 -05:00
chimp1984
504fb2e6a1
Refactor: Rename 2021-01-12 10:48:26 -05:00
chimp1984
4c7b56072f
Add new methods, make decryptedMessageWithPubKey nullable 2021-01-12 10:48:25 -05:00
chimp1984
4fc35a7b39
Cleanups 2021-01-12 10:48:25 -05:00
chimp1984
b8fc7f3985
Remove sendEncryptedMailboxMessage from P2PService and use MailboxMessageService instead 2021-01-12 10:48:25 -05:00
chimp1984
33703c269c
Remove removePrivateNotification from P2PService and use MailboxMessageService instead 2021-01-12 10:48:25 -05:00
chimp1984
ee3f158f5f
Remove addDecryptedMailboxListener from P2PService and use MailboxMessageService instead 2021-01-12 10:48:25 -05:00
chimp1984
d470d736ce
Remove getMailBoxMessages from P2PService and use MailboxMessageService instead 2021-01-12 10:48:25 -05:00
chimp1984
a28a2f59df
Move mailbox related code from P2PService to MailboxMessageService 2021-01-12 10:48:25 -05:00
chimp1984
73cfe0bb7d
Make some methods default 2021-01-12 10:48:25 -05:00
chimp1984
0656a52eb9
Refactor: Move mailbox related classed to mailbox package. Make constructor public. 2021-01-12 10:48:24 -05:00
sqrrm
fea52f07a3
Merge pull request #5057 from chimp1984/fix-premature-disconnections-from-seeds
Fix premature disconnections from seeds
2021-01-12 12:52:41 +01:00
chimp1984
3f8972bf87
Call init after setting connectionState and connectionStatistics 2021-01-11 22:38:49 -05:00
chimp1984
21eaea0703
Add IgnoredMailboxMap to persist failed decryption
attempts and optimize performance by that
2021-01-06 21:20:50 -05:00
chimp1984
8ccfd65c49
Prevent calling shutdown at TorNetworkNode twice.
This can happen from the main shut down routine when a timeout gets triggered.
2021-01-06 18:38:21 -05:00
chimp1984
bda9ebe3ca
Change print statistics period to 5 min.
remove dev log
2021-01-06 18:09:34 -05:00
chimp1984
e0e14431e4
Add RRT for request / response 2021-01-06 15:45:43 -05:00
chimp1984
4aecd75d4f
Add bytes sent/received to ConnectionStatistics
Do check for closed socket after blocking read.
Move throttle code after blocking read.
2021-01-06 14:01:04 -05:00
chimp1984
d8f9581ee8
Ignore test
It reports "Wanted but not invoked:" but when debugging
into it it is called. So seems to be some mock setup issue
2021-01-06 12:18:45 -05:00
chimp1984
1dc71c9b3a
Increase delay for reset
Improve statistic logging
2021-01-06 11:14:47 -05:00
chimp1984
63a87def20
Add missing stub to mock 2021-01-06 11:05:16 -05:00
chimp1984
14008a670a
Add formatDurationAsWords to Utilities in common
to be accessible to the statistics log.
2021-01-06 01:49:38 -05:00
chimp1984
a996754e06
Improve log 2021-01-06 01:11:37 -05:00
chimp1984
082cc33ba4
Fix wrong param in addToMap
Also track BundleOfEnvelopes
2021-01-06 01:09:24 -05:00
chimp1984
d13b7e70fa
Add seed node info, add line break 2021-01-06 00:58:40 -05:00
chimp1984
a346db696f
Handle BundleOfEnvelopes in ConnectionState
Add ConnectionStatistics
Print statistics of all live connections periodically
2021-01-06 00:18:56 -05:00
chimp1984
347e68004c
Use OS independent double line breaks for better readability 2021-01-05 22:20:09 -05:00
chimp1984
3fa22427c7
Set expectedRequests to 5 in case of fullDaoNode as
it does not do the getBlocksRequest.
2021-01-05 22:19:26 -05:00
chimp1984
c7bc7720d8
Add safety filter to removeAnonymousPeers
Cleanups
2021-01-05 21:42:19 -05:00
chimp1984
769a78fe52
Behaviour change: Remove setAllowDisconnectSeedNodes method
We handle it in ConnectionState by counting
requests and responses and adding a timer
2021-01-05 21:42:18 -05:00
chimp1984
7414df0951
Behaviour change: Remove removeSuperfluousSeedNodes method
We handle the connections by INITIAL_DATA_EXCHANGE which
cover the seed nodes as well. Do have an parallel routine
is risky and make things more complex.
2021-01-05 21:41:57 -05:00
chimp1984
34230f43f6
Fix wrong return value for getMaxConnections 2021-01-05 21:21:58 -05:00
chimp1984
5628b7b85c
Refactor:
Rename maxConnectionsPeer to outBoundPeerTrigger
Rename maxConnectionsNonDirect to initialDataExchangeTrigger

Update comment
2021-01-05 21:21:17 -05:00
chimp1984
cf4d89dea2
Behaviour change:
In the 3rd attempt we filter for
INITIAL_DATA_EXCHANGE peers.
Before we excluded 2 types and as PEER have been
already filtered earlier we would look up for SEED_NODE.
This was only called by non-seedNodes.
2021-01-05 21:10:45 -05:00
chimp1984
4d64fac401
Refactor: Rename lastInitialDataExchangeMessageTimeStamp to lastInitialDataMsgTimeStamp 2021-01-05 21:03:16 -05:00
chimp1984
acad31fa63
Do sorting at candidates stream.
At INITIAL_DATA_EXCHANGE we sort
by lastInitialDataExchangeMessageTimeStamp
2021-01-05 21:02:09 -05:00
chimp1984
e1b1781e66
Remove PeerType.SEED_NODE
Fix typo
2021-01-05 20:56:04 -05:00
chimp1984
5f977ffe6f
Use isSeedNode 2021-01-05 20:55:29 -05:00
chimp1984
86d0f96c6c
Remove PeerType from Connection. Use ConnectionState instead.
Remove unnecessary setPeerType calls. ConnectionState is handling that.
Only PeerManager does the setting of isSeedNode as we do not have the
required dependency in ConnectionState.
2021-01-05 20:50:46 -05:00
chimp1984
0f7a69d1b7
Add ConnectionState class 2021-01-05 20:42:14 -05:00
chimp1984
809484e65d
Refactoring: Rename INITIAL_DATA_REQUEST to INITIAL_DATA_EXCHANGE 2021-01-05 20:40:37 -05:00
chimp1984
15cd42de0c
Add InitialDataRequest and InitialDataResponse marker interface for
relevant classes
2021-01-05 20:39:52 -05:00
chimp1984
2c8c9ac519
Add onMessageSent method to MessageListener 2021-01-05 20:36:51 -05:00
chimp1984
f169cf1309
Refactoring: Move PeerType outside of Connection 2021-01-05 20:34:28 -05:00
sqrrm
4da1bb0c10
Merge pull request #5041 from chimp1984/request-only-not-seeds-if-no-seed-available
Request only non-seed nodes if no seed nodes are available
2021-01-04 10:50:10 +01:00
chimp1984
77c405530d
Add comment, remove pointless code. 2021-01-03 18:48:07 -05:00
chimp1984
a2d6b52483
In case requests to all seed nodes fail we take
persisted and reported peers for requests.
Before we added also the seed nodes which would
delay connection to other nodes a lot.
2021-01-01 20:36:27 -05:00
chimp1984
818c797f97
Refactor sendMessage method: Inline debug value 2021-01-01 16:51:25 -05:00
chimp1984
f57d4e041b
Refactor sendMessage method: Return early 2021-01-01 16:51:25 -05:00
chimp1984
cc433ab57d
Add checks if peer is banned at send msg and InputHandlers 2021-01-01 16:51:24 -05:00
chimp1984
c8bf1d469e
Add support to filter manager for network wide banned nodes 2021-01-01 16:51:24 -05:00
chimp1984
851a44ccb8
Make code more readable 2021-01-01 16:51:05 -05:00
chimp1984
3cf6c60354
Add NetworkFilter, remove BanList 2021-01-01 16:51:05 -05:00
chimp1984
9dfcc01acd
Improve logging of received data
The numbers did not match up from delivered response size and items as we did not count
in the overhead of the ProtectedStorageEntry (pub key+sig) and did estimate the size
with taking only first item and multiplying it. A measurement resulted in 20 ms costs
for the exact calculation (toProtoMessage().getSerializedSize() has some costs).
I guess that is acceptable to get correct metrics.
2021-01-01 14:07:17 -05:00
chimp1984
0aeaa5386c
Improve logs, optimize stream 2021-01-01 14:06:16 -05:00
chimp1984
15b8f64d91
Do not shutDown with CloseConnectionReason.PEER_BANNED if we received a
CloseConnectionMessage as it would trigger a wrong log on the peers side,
that he got banned.
2021-01-01 14:05:21 -05:00
chimp1984
28dd8404f7
Merge branch 'access-concrete-data-stores' into add-filter-support-on-network-level 2021-01-01 13:50:46 -05:00
sqrrm
d633d13b88
Merge pull request #5032 from chimp1984/check-for-duplicates-at-onBundleOfEnvelopes
[1.5.4] Check for duplicate hashes at onBundleOfEnvelopes
2020-12-31 11:52:36 +01:00
sqrrm
4c14d4e232
Merge pull request #5030 from chimp1984/fix-incorrect-map-lookup-forhistorical-data-stores
[1.5.4] We need to use the getMapOfAllData method for HistoricalDataStoreServices
2020-12-31 11:28:30 +01:00
chimp1984
35c6a9aca4
Force travis for rebuild 2020-12-31 00:56:21 -05:00
chimp1984
203a6e0681
Force travis for rebuild 2020-12-31 00:44:57 -05:00
chimp1984
b9ca29988f
Check for duplicate hashes at onBundleOfEnvelopes
Set log level to debug to not spam logs with it.
2020-12-30 20:56:51 -05:00
chimp1984
6a35410c69
Log error (and throw exception if in devMode) if
HistoricalDataStoreService.getMap is called.

HistoricalDataStoreService.getMap should not be used by domain
clients but rather the custom methods getMapOfAllData,
getMapOfLiveData or getMapSinceVersion.

As we have not removed the calls from ProposalService and
other domains we return getMapOfAllData() instead of the live map.
This was prevented earlier for performance reasons. It is more safe
thought to return in case of an illegal access all data instead of
live data only.
2020-12-30 20:47:15 -05:00
chimp1984
4489e57849
Use concrete dataStorageServices instead
p2PService.getP2PDataStorage().getAppendOnlyDataStoreMap().

p2PService.getP2PDataStorage().getAppendOnlyDataStoreMap() iterates
over all services including the historical data store service. It used the
getMap method which should not be used at historical data store service as
it is not clear if the live data or all data should be accessed.
2020-12-30 20:38:42 -05:00
chimp1984
85caf88913
We need to use the getMapOfAllData method for HistoricalDataStoreServices 2020-12-30 20:20:57 -05:00
chimp1984
ae65da2861
Revert dev values for NUM_SEEDS_FOR_PRELIMINARY_REQUEST and NUM_ADDITIONAL_SEEDS_FOR_UPDATE_REQUEST 2020-12-30 14:27:33 -05:00
sqrrm
9f50dcae2f
Merge pull request #5026 from chimp1984/add-dos-protection
Add dos protection
2020-12-30 12:57:53 +01:00
chimp1984
a6413e4c6f
Filter out AccountAgeWitness data if it appears to be a dos attack or caused from a bug 2020-12-30 06:13:57 -05:00
chimp1984
510a941cb4
Disconnect nodes at RequestDataManager.onMessage < 1.5.1 2020-12-30 06:12:37 -05:00
Christoph Atteneder
aaad74fbf0
Merge pull request #5009 from chimp1984/improve-log-of-initial-data-response
Add estimated size to log of initial data response
2020-12-29 20:00:54 +01:00
Christoph Atteneder
94cf02303e
Merge pull request #4950 from chimp1984/improve-offer-publishing
Improve offer publishing
2020-12-29 19:51:21 +01:00
chimp1984
0be451a136
Fix typos 2020-12-28 12:24:35 -05:00
chimp1984
fd8fc8f9ac
Add estimated size to log of initial data response 2020-12-27 22:27:10 -05:00
sqrrm
442d65a730
Merge pull request #4973 from chimp1984/improve-logs
[1.5.2] Improve logs
2020-12-19 23:36:21 +01:00
chimp1984
d24d05d08d
Fix nullpointer
A Nullpointer can happen if app get shut down very early.
2020-12-19 15:37:02 -05:00
chimp1984
1e0dcfbcbc
Change log level to debug to reduce verbosity 2020-12-19 15:07:26 -05:00
chimp1984
19ef0a2b40
Remove log 2020-12-19 14:51:11 -05:00
chimp1984
55b2cf6259
Change period for statistics log to 5 min instead of 1 min to make it less verbose 2020-12-19 14:34:34 -05:00
chimp1984
dc19e31fe5
Change log level to debug. Fix wrong method name in log.
We request each min. the price feed so that get very verbose
2020-12-19 14:33:28 -05:00
Christoph Atteneder
6384753332
Update data stores for v1.5.2 2020-12-17 15:48:05 +01:00
chimp1984
f270b9c6fa
Call completeHandler if services in store services is empty.
If oen starts with --daoActivated=false there is no service
set up in one of the data store services so it never calls
the result handler and the app never starts up.
2020-12-16 22:25:06 +01:00
chimp1984
4c575098b7
Call completeHandler if services in store services is empty.
If oen starts with --daoActivated=false there is no service
set up in one of the data store services so it never calls
the result handler and the app never starts up.
2020-12-16 16:21:10 -05:00
chimp1984
24f53e0c01
Add flush method.
Call flush at openOfferManager shutdown.
Remove unused method.

Force broadcaster to send out immediately, otherwise we could
have a 2 sec delay until the bundled messages sent out.
2020-12-16 09:01:12 -05:00
sqrrm
9b8073b94a
Merge pull request #4954 from chimp1984/various-small-improvements
Various small improvements
2020-12-15 23:04:15 +01:00
chimp1984
f7a706518c
Use PRIVATE_LOW_PRIO instead of PRIVATE for sequenceNumberMap
to reduce cpu load for persistence.
2020-12-15 01:03:52 -05:00
chimp1984
7f73fa10af
Add support for data post 2020-12-14 11:24:49 -05:00
chimp1984
664ebc13b5
Add constructor with responseCode 2020-12-14 11:24:07 -05:00
Christoph Atteneder
810c0da0f9
Merge pull request #4930 from chimp1984/use-historical-data-store-for-account-age
Use HistoricalDataStoreService for AccountAgeWitnessStorageService
2020-12-14 11:28:18 +01:00
chimp1984
3b0ad356b4
Fix incorrect checkArgument 2020-12-13 17:18:07 -05:00
chimp1984
d61a07f6bb
- Add hasPendingRequest() getter and block repeated requests
while hasPendingRequest is true
- Throw exception if we get a request before previous request is
terminated (happens with priceFee at startup, on regtest as
startup is fast, but can happen also on mainnet)
- Improve shutDown
- Improve finally clause
2020-12-13 17:03:45 -05:00
chimp1984
9496691f76
Refactor: Rename 'requestWithGET' to 'get' 2020-12-13 15:23:36 -05:00
chimp1984
de2ba82b3d
Add post method. Add doRequest method 2020-12-13 15:20:26 -05:00
chimp1984
3cf97c706a
Rename httpclient (make it more distinct to Bisq Httpclient) 2020-12-13 15:14:07 -05:00
chimp1984
5a1a9006e2
Improve logging 2020-12-13 15:13:45 -05:00
chimp1984
b9d72b5185
Add baseUrl as param, extract variable 2020-12-13 15:04:27 -05:00
chimp1984
b480f26f81
Add HttpMethod enum
Use HttpMethod as param
Add getHttpUriRequest method
2020-12-13 15:00:48 -05:00
chimp1984
138019ed25
Rearrange: move method down 2020-12-13 14:54:47 -05:00
chimp1984
7f85fd9b7d
Refactor getSocks5Proxy method: Return early, make flow more clear 2020-12-13 14:54:28 -05:00
chimp1984
3a2e4f1d69
Refactor: Extract method getSocks5Proxy 2020-12-13 14:52:06 -05:00
chimp1984
77f46a0a5e
Remove requestWithGETNoProxy methods from interface (not used outside) 2020-12-13 14:50:53 -05:00
chimp1984
4c81c442ee
Update toString method 2020-12-13 14:49:38 -05:00
chimp1984
8122cab77a
Use Lombok setter and getters 2020-12-13 14:48:58 -05:00
chimp1984
a9eb99c252
Remove warning log (is logged before already) 2020-12-09 23:46:14 -05:00
chimp1984
a2d2e6c4fb
Shutdown PriceFeedService and related services
at shutdown routine
2020-12-09 18:33:15 -05:00
chimp1984
f8ebd075cd
Revert TTL to original value of 15 days. 2020-12-08 16:46:37 -05:00
Christoph Atteneder
11b0a466ce
Merge branch 'master' of github.com:bisq-network/bisq into release/v1.5.0
# Conflicts:
#	core/src/main/java/bisq/core/provider/fee/FeeService.java
#	core/src/main/resources/i18n/displayStrings.properties
#	seednode/src/main/java/bisq/seednode/SeedNodeMain.java
2020-11-25 14:05:37 +01:00
Christoph Atteneder
dd55beabac
Update data stores for v1.5.0 (update 2) 2020-11-23 11:23:15 +01:00
Steven Barclay
88d7d96427
Fix failing OpenOfferManagerTest & PeerManagerTest
These are failing on the tip of release/1.5.0 currently due to extra
validation added to PersistenceManager, causing the build to fail upon
merging upstream. Add missing PersistenceManager.shutDown calls to the
tearDown methods of the affected tests to fix.
2020-11-19 16:47:21 +01:00
chimp1984
9517f427b6
Refactoring: Extract requestPersistence method 2020-11-18 12:12:59 -05:00
Christoph Atteneder
19432e4a1e
Update data stores for v1.5.0 2020-11-13 13:00:46 +01:00
chimp1984
ee5fca9532
Revert timeout changes and MAX_PERMITTED_MESSAGE_SIZE change 2020-11-12 16:01:30 -05:00
chimp1984
1b7c1ce49a
Only reset numAllConnectionsLostEvents if we have nodes connected 2020-11-12 15:58:57 -05:00
chimp1984
a1c84741f3
Add comments, revert TTL change at AckMessage as it has no effect anyway 2020-11-12 15:58:56 -05:00
chimp1984
b002c93d78
Increase SOCKET_TIMEOUT to 6 min 2020-11-12 15:58:56 -05:00
chimp1984
4bececeb4c
Increase MAX_PERMITTED_MESSAGE_SIZE to 15 MB, increase SOCKET_TIMEOUT to 6 min 2020-11-12 15:58:56 -05:00
chimp1984
f10d2318f3
Log when we remove expired entries 2020-11-12 15:58:56 -05:00
chimp1984
ac955e1875
Reduce TTL for ack and mailbox messages 2020-11-12 15:58:55 -05:00
chimp1984
23df53e61b
Always try to prune live map with historical data
It should be only needed in case we get the historical data from resources,
but as I have seen multiple times that some nodes have duplicated entries
in the live data I think its more safe to clean up always. If no entries are
removed the call is very cheap. Even with 60k entries to be pruned it takes
only about 20 ms.
2020-11-12 12:19:24 -05:00
chimp1984
eea1203ec5
Fix issue with immutable maps.
As we might have same keys in multiple maps and merge those to 1 map we
cannot use an immutable map when merging the maps. Instead we copy our merged map
at the end into a immutable map.

Fix issue with immutable maps.
As we might have same keys in multiple maps and merge those to 1 map we
cannot use an immutable map when merging the maps. Instead we copy our merged map
at the end into a immutable map.
2020-11-12 12:19:24 -05:00
chimp1984
9cd5dc9e26
Add support for persisting MailboxMessageList 2020-11-11 22:19:44 -05:00
chimp1984
8b738796db
Remove mailbox msg early from network 2020-11-11 20:31:42 -05:00
chimp1984
ab5645b864
Fix issue with getting complete handler called twice from P2PService
We used a delegate method in P2PService for calling readPersisted on p2PDataStorage and peerManager.
This was from old times when those classed have not been injected classes. The complete handlers got
called from both p2PDataStorage and peerManager but we counted only P2PService as host, so the
countdown completed before the last host was really completed, leading to a nullpointer in
MainView (not always).

We removed now PersistedDataHost interface from P2PService and use P2PDataStorage and PeerManager to be added to hosts.
2020-11-03 13:01:35 -05:00
chimp1984
4161ecf239
Fix bugs with reading historical data
- Use fileName not getFileName() in readHistoricalStoreFromResources
- use complete handler once reading of all historical data is completed where we
build the ImmutableMaps and complete the readFromResources method
2020-11-03 11:48:58 -05:00
Christoph Atteneder
9da7100ef2
Merge pull request #4734 from chimp1984/show-past-deviation-in-monitor
Show past deviation in monitor
2020-11-03 09:03:14 +01:00
sqrrm
f03be6ad3d
Merge pull request #4628 from chimp1984/improve-read-file-handling
Use a thread in PersistenceManager for reading persisted files instead of using threads in client code
2020-11-02 17:36:21 +01:00
chimp1984
baaa100c01
Reset NumAllConnectionsLostEvents once we sent it to inventory monitor 2020-10-31 11:23:24 -05:00
chimp1984
0c4eb14077
Only log and increase numAllConnectionsLostEvents if we have not called shutDown
We also do not call listeners in that case as some listeners have some restart routines
on that event which is not what we want at shut down
2020-10-23 01:17:34 -05:00
chimp1984
5bdc5abe34
Add numAllConnectionsLostEvents 2020-10-23 01:17:34 -05:00
chimp1984
8c156eb5bf
Add peakNumConnections 2020-10-23 01:17:34 -05:00
chimp1984
1b83083ade
Add nodes from mike
Various improvements...
2020-10-23 01:17:33 -05:00
chimp1984
9dab186086
Move inventory package to core as we want to include other domain data as well like DAO state
Add more data to inventory map and change type of value to String.
2020-10-23 01:17:32 -05:00
chimp1984
55b693e295
Make config nullable and extract methods where config is used and apply default value in case config is not set. 2020-10-23 01:17:32 -05:00
chimp1984
c0f981ad1d
Fix incorrect shutdown behaviour
Delay the boolean property setter as otherwise our listener might never
get triggered if property is set synchronously before listener registration.
Remove shutdown thread.
Cancel future in case tor is not created yet.
2020-10-23 00:30:29 -05:00
chimp1984
68583d86ee
Remove mapping to user thread in client code
Add synchronous methods for tests. They new async methods lead to failing tests.
It could be probably fixed, but its quite an effort... Don't like to add code just for
tests but on the other hand, maybe those methods might be useful for other use cases as well.
2020-10-21 14:45:40 -05:00
chimp1984
01ab16abe5
Reformat 2020-10-21 13:41:50 -05:00
chimp1984
8baf34a643
Fix missing params 2020-10-21 13:41:50 -05:00
chimp1984
3f4d6e6f23
Use a thread in PersistenceManager for reading persisted files instead of using thread in client code
Before we use a thread in readFromResources and readAllPersisted. To avoid that client code need to deal with
threading we moved that to the PersistenceManager and changed the API accordingly so it will not return the persisted object but calls a consumer once it is completed with reading.
2020-10-21 13:41:50 -05:00
chimp1984
927004b4be
Rename HISTORY to HISTORICAL_RESOURCE_FILE_VERSION_TAGS to make its usage more clear 2020-10-20 22:08:18 -05:00
chimp1984
6b4d77fb1b
Handle Capabilities for encrypted messages (offer availibility request/response)
We did check in Connection for SupportedCapabilitiesMessage and if a message is of that type we set the capability.
But encrypted messages are wrapped in a PrefixedSealedAndSignedMessage so the payload is not visible as SupportedCapabilitiesMessage without decrypting it.
We need to call maybeHandleSupportedCapabilitiesMessage at decrypting the message. We do that only for direct messages not for mailbox messages as we likely do not have a connection open to the peer in that case (otherwise it would not be a mailbox msg) and as we don't have the connection available (we get is as AddDataMessage broadcast from an peer, so could could not apply it to the Connection of the sender.
2020-10-16 11:07:36 -05:00
Christoph Atteneder
4e2e523beb
Update data stores for v1.4.0 2020-10-15 13:21:46 +02:00
sqrrm
c41bfd7164
Merge pull request #4643 from chimp1984/add-get-inventory-msg
Add GetInventory messages
2020-10-14 12:22:00 +02:00
chimp1984
32b953b61a
Improve GetInventoryRequester and GetInventoryRequestManager 2020-10-14 02:37:00 -05:00
chimp1984
5f9d3d1f0d
Add GetInventory messages
This will be used for monitoring seed nodes.
Instead of requesting all data (we cannot request all in fact as it is too large)
we request the number of items the node has.

This code will not have any impact atm. It will be triggered once a new monitor module gets added which
will send the GetInventoryRequest to the seeds.
2020-10-13 23:30:39 -05:00
chimp1984
cc5bdfaf9c
Change data response behaviour
Add DateSortedTruncatablePayload interface for TradeStatistics2

We check first if we need to truncate dateSortedTruncatablePayloads, if so we have sorted by date and truncate in the way that we receive the most recent data. We define the maxItems in the class implementing the interface (3000 for trade stats).
Later we apply the maxEntries check the combined list and if we need to truncate here as well (10 000) we have added the dateSortedTruncatablePayloads at the end so those will get truncated with higher prio.

There is also a bit wrong handling in the previous code that we check for max limits before the shouldTransmitPayloadToPeer filter. Should be fixed in another PR for master...
2020-10-13 20:31:09 -05:00
chimp1984
30c77aa419
Update resource file.
Number of objects is 24 more then with 1.3.9. Seems there are still either a few duplicate
with some diverging data which should not be different or that our old code to filter
duplicates had some issues. But a difference of 24 out of 75 000 object can be ignored IMO.
2020-10-13 11:31:54 -05:00
chimp1984
68a10cf5a1
Remove comment line 2020-10-08 18:51:24 -05:00
chimp1984
e95ab2a0b4
Add resource file for 1.4.0 (should be updated at release time) 2020-10-08 18:49:15 -05:00
chimp1984
b14266d815
Remove resource file 2020-10-08 18:49:14 -05:00
chimp1984
98207518d6
We "hack" TradeStatistics2StorageService to fulfill our needs:
1. We do not want that initial data request/response use old trades statistics for excluded key hashes.
Thats why we return an empty map in getMap.
2. We do not read resource file as we have removed that.
3. We do not persist as we convert the existing data and re-publish as new data, or at startup we convert the old data to the new one and then delete the file.
2020-10-08 18:48:52 -05:00
chimp1984
b2665bdd2c
let seller publish trade statistics only if peer is updated user. If not the peer will publish only. 2020-10-08 18:48:52 -05:00
chimp1984
4f685f8f4b
When updating the capability from a reported peer we check if the reported one has higher capabilities, otherwise we ignore it. 2020-10-08 18:23:04 -05:00
chimp1984
c8feef150e
Apply code review suggestions
Fix incorrectly commented out code (was for dev testing commented out)
2020-10-08 18:23:04 -05:00
chimp1984
c88bc1c99c
Use custom class MailboxItem instead of Tuple
Rename mailboxMap to mailboxItemsByUid
2020-10-08 18:23:04 -05:00
chimp1984
447235c2af
Dont reassign param 2020-10-08 18:23:03 -05:00
chimp1984
f53290b817
Copy peers in a new hashset to avoid concurrent modification exc at serialisation
Remove final
Cleanups
2020-10-08 18:23:03 -05:00
chimp1984
c7f23e8deb
Do not log size as we don't want to call potentially expensive toProtoMessage method 2020-10-08 18:23:03 -05:00
chimp1984
b748bffbfe
Add isPresent check 2020-10-08 18:23:03 -05:00
chimp1984
f36a17389e
Fix incorrect collection used in == 1 check 2020-10-08 18:23:03 -05:00
chimp1984
2fd010498d
Decrease failedConnectionAttempts onConnection
Rename method
2020-10-08 18:23:03 -05:00
chimp1984
351db88992
Use a hashset instead of list to avoid duplicates. Filter out my own node from persisted peers.
Remove log in DisputeAgentManager which gets called repeatedly
2020-10-08 18:23:03 -05:00
chimp1984
cfda0aff68
Fix tests 2020-10-08 18:23:03 -05:00
chimp1984
31ce5ccf67
Use connection.getPeersNodeAddressOptional().isPresent() instead of connection.hasPeersNodeAddress() which does the same internally 2020-10-08 18:23:03 -05:00
chimp1984
0686079946
Refactor: Rename method 2020-10-08 18:23:02 -05:00
chimp1984
ed960aba3f
Refactor: Rearrange code, remove unused methods, renamings (no functional change) 2020-10-08 18:23:02 -05:00
chimp1984
4575516d19
Refactor: Return early 2020-10-08 18:23:02 -05:00
chimp1984
31e7e26557
Fix incorrect handling of decryptedEntries size 2020-10-08 18:23:02 -05:00
chimp1984
983f610e73
Update p2p/src/main/java/bisq/network/p2p/network/Connection.java
Co-authored-by: sqrrm <sqrrm@users.noreply.github.com>
2020-10-08 18:23:02 -05:00
chimp1984
bf674ea0cf
Use getPersistedPeers for peerList.getList() calls
Rename getOptionalPersistedPeer to findPersistedPeer
Improve getConnectedReportedPeers method
2020-10-08 18:23:02 -05:00
chimp1984
25526750a8
Replace persistedPeers with peerList 2020-10-08 18:23:02 -05:00
chimp1984
25bfe2d6ad
Add findPeersCapabilities method
Impl. applyCapabilities

Cleanups
2020-10-08 18:23:02 -05:00
chimp1984
7af16d7af3
Add getDateAsLong method, add setter for capabilities 2020-10-08 18:23:01 -05:00
chimp1984
186a9d670d
Add findPeersCapabilities method 2020-10-08 18:23:01 -05:00
chimp1984
765f9ea940
Apply code inspection suggestions
The check for AckMessage is not needed anymore as we remove the interface from AckMessage
2020-10-08 18:23:01 -05:00
chimp1984
2523c2e914
Use getSingleThreadListeningExecutor, cleanups 2020-10-08 18:23:01 -05:00
chimp1984
bf659a1e6d
Pass supportedCapabilities to PeerManager. Not further processed yet, will be done in next commits
Cleanups
2020-10-08 18:23:01 -05:00