Skip to content

Commit ef1b9bf

Browse files
committed
Bugfixes
1 parent 289f259 commit ef1b9bf

3 files changed

Lines changed: 15 additions & 10 deletions

File tree

yarn-project/p2p/src/client/test/p2p_client.integration_batch_txs.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import type { P2PClient } from '../../client/p2p_client.js';
1616
import { type P2PConfig, getP2PDefaultConfig } from '../../config.js';
1717
import type { AttestationPool } from '../../mem_pools/attestation_pool/attestation_pool.js';
1818
import type { TxPool } from '../../mem_pools/tx_pool/index.js';
19+
import { BatchTxRequester } from '../../services/reqresp/batch-tx-requester/reqresp_batch.js';
1920
import type { ConnectionSampler } from '../../services/reqresp/connection-sampler/connection_sampler.js';
20-
import { BatchTxRequester } from '../../services/reqresp/reqresp_batch.js';
2121
import { generatePeerIdPrivateKeys } from '../../test-helpers/generate-peer-id-private-keys.js';
2222
import { getPorts } from '../../test-helpers/get-ports.js';
2323
import { makeEnrs } from '../../test-helpers/make-enrs.js';

yarn-project/p2p/src/services/reqresp/batch-tx-requester/peer_collection.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { PeerId } from '@libp2p/interface';
22

3-
const BADE_PEER_THRESHOLD = 3;
3+
const BAD_PEER_THRESHOLD = 3;
44

55
export class PeerCollection {
66
private readonly peers;
@@ -45,7 +45,7 @@ export class PeerCollection {
4545
return new Set(
4646
this.badPeers
4747
.entries()
48-
.filter(([_k, v]) => v > BADE_PEER_THRESHOLD)
48+
.filter(([_k, v]) => v > BAD_PEER_THRESHOLD)
4949
.map(([k]) => k),
5050
);
5151
}

yarn-project/p2p/src/services/reqresp/batch-tx-requester/reqresp_batch.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { chunk } from '@aztec/foundation/collection';
22
import { createLogger } from '@aztec/foundation/log';
33
import { Semaphore } from '@aztec/foundation/queue';
44
import { sleep } from '@aztec/foundation/sleep';
5+
import { DateProvider } from '@aztec/foundation/timer';
56
import type { BlockProposal } from '@aztec/stdlib/p2p';
67
import { type TxArray, TxHash } from '@aztec/stdlib/tx';
78

@@ -33,7 +34,8 @@ export class BatchTxRequester {
3334
private readonly timeoutMs: number,
3435
private readonly reqresp: ReqRespInterface,
3536
private readonly connectionSampler: ConnectionSampler,
36-
private logger = createLogger('p2p:reqresp_batch'),
37+
private readonly logger = createLogger('p2p:reqresp_batch'),
38+
private readonly dateProvider: DateProvider = new DateProvider(),
3739
) {
3840
this.txsMetadata = new MissingTxMetadataCollection(
3941
missingTxs.map(txHash => [txHash.toString(), new MissingTxMetadata(txHash)]),
@@ -46,7 +48,7 @@ export class BatchTxRequester {
4648
this.peers.markPeerInFlight(this.pinnedPeer);
4749
}
4850

49-
this.deadline = Date.now() + this.timeoutMs;
51+
this.deadline = this.dateProvider.now() + this.timeoutMs;
5052
}
5153

5254
public async run() {
@@ -108,7 +110,7 @@ export class BatchTxRequester {
108110
};
109111

110112
const workers = Array.from(
111-
{ length: Math.min(DUMB_PEERS_TO_QUERY_IN_PARALLEL, this.peers.getAllPeers().size) },
113+
{ length: Math.min(SMART_PEERS_TO_QUERY_IN_PARALLEL, this.peers.getAllPeers().size) },
112114
() => this.workerLoop(nextPeer, makeRequest, 'smart'),
113115
);
114116

@@ -135,7 +137,7 @@ export class BatchTxRequester {
135137
return undefined;
136138
}
137139

138-
const txs = txChunks()[idx].map(t => TxHash.fromString(t));
140+
const txs = txsChunks[idx].map(t => TxHash.fromString(t));
139141
console.log(`Dumb batch index: ${idx}, batches count: ${txsChunks.length}`);
140142
txs.forEach(tx => this.txsMetadata.markRequested(tx));
141143
return { blockRequest: BlockTxsRequest.fromBlockProposalAndMissingTxs(this.blockProposal, txs), txs };
@@ -222,12 +224,15 @@ export class BatchTxRequester {
222224
console.log(`Peer ${peerId.toString()}\n${err}`);
223225
await this.handleFailResponseFromPeer(peerId, ReqRespStatus.UNKNOWN);
224226
} finally {
225-
this.peers.unMarkPeerInFlight(peerId);
227+
// Don't mark pinned peer as not in flight
228+
if (!this.pinnedPeer?.equals(peerId)) {
229+
this.peers.unMarkPeerInFlight(peerId);
230+
}
226231
}
227232
}
228233

229234
private handleSuccessResponseFromPeer(peerId: PeerId, response: BlockTxsResponse) {
230-
this.peers.markPeerAsBad(peerId);
235+
this.peers.unMarkPeerAsBad(peerId);
231236
this.logger.debug(`Received txs: ${response.txs.length} from peer ${peerId.toString()} `);
232237
this.handleReceivedTxs(peerId, response.txs);
233238

@@ -320,6 +325,6 @@ export class BatchTxRequester {
320325

321326
//TODO: abort signal here?
322327
private shouldStop() {
323-
return this.txsMetadata.size === 0 || this.fetchedAllTxs() || Date.now() > this.deadline;
328+
return this.txsMetadata.size === 0 || this.fetchedAllTxs() || this.dateProvider.now() > this.deadline;
324329
}
325330
}

0 commit comments

Comments
 (0)