`fs::create_directories` now has an error message saying
`create_directories` instead of `create_directory`. This caused
wallet_multiwallet.py to fail. The error message check has been updated
to be able accept either string.
Merge #2749: [Budget] Use space and time efficient data structure to check for already sent item sync requests
d8e2c984bdc8d9b67cfe9a3f4eb749cff231323c budget manager: use space and time efficient data structure for unknown item requests. (furszy)
f3a7fea18cd35c7e601a2b715d28d3fd7ad3d0ba budget manager: use g_netfulfilledman instead of mAskedUsForBudgetSync to prevent spam. (furszy)
Pull request description:
In the arriving orphan vote process; the node, after trying to add the vote to the orphan map, tries to ask the proposal/budget to the peer that sent the vote, sending a single item sync request.
The request, as the node can receive several votes going to the same proposal, is relayed only if the node haven't sent a sync request for the proposal already. As we are using a map to perform this membership test, the time complexity is O(log n).
This PR improves it migrating the map to a bloom filter, which time complexity for membership test is O(1).
The false-positive rate, even when it's negligible (i set the rate to 0.001), isn't really a worry here because, as wrote above, this is only use to test for sync proposal request existence, which is not ban cause. It's just used to not send extra unneeded requests.
Plus, aside from that, cleaned the other `mAskedUsForBudgetSync` map, using the already existent net request manager flow.
ACKs for top commit:
random-zebra:
ACK d8e2c984bdc8d9b67cfe9a3f4eb749cff231323c
Fuzzbawls:
ACK d8e2c984bdc8d9b67cfe9a3f4eb749cff231323c