Skip to content

Commit 75a8a68

Browse files
committed
Make EventBus requests less wasteful
1 parent 3b87495 commit 75a8a68

File tree

6 files changed

+45
-10
lines changed

6 files changed

+45
-10
lines changed

tests/trinity/conftest.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
Chain,
1414
)
1515

16+
from trinity.constants import (
17+
NETWORKING_EVENTBUS_ENDPOINT,
18+
)
1619
from trinity.chains.coro import (
1720
AsyncChainMixin,
1821
)
@@ -67,7 +70,7 @@ def event_loop():
6770
@pytest.fixture(scope='module')
6871
async def event_bus(event_loop):
6972
bus = EventBus()
70-
endpoint = bus.create_endpoint('test')
73+
endpoint = bus.create_endpoint(NETWORKING_EVENTBUS_ENDPOINT)
7174
bus.start(event_loop)
7275
await endpoint.connect(event_loop)
7376
try:

trinity/constants.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
from pathlib import Path
22
from typing import Dict, Tuple
33

4+
from lahja import (
5+
BroadcastConfig,
6+
)
7+
48
from eth_utils import (
59
decode_hex,
610
)
@@ -23,6 +27,7 @@
2327
# lahja endpoint names
2428
MAIN_EVENTBUS_ENDPOINT = 'main'
2529
NETWORKING_EVENTBUS_ENDPOINT = 'networking'
30+
TO_NETWORKING_BROADCAST_CONFIG = BroadcastConfig(filter_endpoint=NETWORKING_EVENTBUS_ENDPOINT)
2631

2732
# Network IDs: https://ethereum.stackexchange.com/questions/17051/how-to-select-a-network-id-or-is-there-a-list-of-network-ids/17101#17101 # noqa: E501
2833
MAINNET_NETWORK_ID = 1

trinity/plugins/builtin/ethstats/ethstats_service.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
)
2020
from trinity.constants import (
2121
SYNC_LIGHT,
22+
TO_NETWORKING_BROADCAST_CONFIG,
2223
)
2324
from trinity.db.manager import (
2425
create_db_manager,
@@ -138,7 +139,10 @@ async def get_node_stats(self) -> EthstatsData:
138139
'''Getter for data that should be sent periodically.'''
139140
try:
140141
peer_count = (await self.wait(
141-
self.context.event_bus.request(PeerCountRequest()),
142+
self.context.event_bus.request(
143+
PeerCountRequest(),
144+
TO_NETWORKING_BROADCAST_CONFIG,
145+
),
142146
timeout=0.5
143147
)).peer_count
144148
except TimeoutError:

trinity/plugins/builtin/light_peer_chain_bridge/light_peer_chain_bridge.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333
BaseService,
3434
)
3535

36+
from trinity.constants import (
37+
TO_NETWORKING_BROADCAST_CONFIG,
38+
)
3639
from trinity.utils.async_errors import (
3740
await_and_wrap_errors,
3841
)
@@ -230,23 +233,33 @@ def __init__(self, event_bus: Endpoint) -> None:
230233

231234
async def coro_get_block_header_by_hash(self, block_hash: Hash32) -> BlockHeader:
232235
event = GetBlockHeaderByHashRequest(block_hash)
233-
return self._pass_or_raise(await self.event_bus.request(event)).block_header
236+
return self._pass_or_raise(
237+
await self.event_bus.request(event, TO_NETWORKING_BROADCAST_CONFIG)
238+
).block_header
234239

235240
async def coro_get_block_body_by_hash(self, block_hash: Hash32) -> BlockBody:
236241
event = GetBlockBodyByHashRequest(block_hash)
237-
return self._pass_or_raise(await self.event_bus.request(event)).block_body
242+
return self._pass_or_raise(
243+
await self.event_bus.request(event, TO_NETWORKING_BROADCAST_CONFIG)
244+
).block_body
238245

239246
async def coro_get_receipts(self, block_hash: Hash32) -> List[Receipt]:
240247
event = GetReceiptsRequest(block_hash)
241-
return self._pass_or_raise(await self.event_bus.request(event)).receipts
248+
return self._pass_or_raise(
249+
await self.event_bus.request(event, TO_NETWORKING_BROADCAST_CONFIG)
250+
).receipts
242251

243252
async def coro_get_account(self, block_hash: Hash32, address: Address) -> Account:
244253
event = GetAccountRequest(block_hash, address)
245-
return self._pass_or_raise(await self.event_bus.request(event)).account
254+
return self._pass_or_raise(
255+
await self.event_bus.request(event, TO_NETWORKING_BROADCAST_CONFIG)
256+
).account
246257

247258
async def coro_get_contract_code(self, block_hash: Hash32, address: Address) -> bytes:
248259
event = GetContractCodeRequest(block_hash, address)
249-
return self._pass_or_raise(await self.event_bus.request(event)).bytez
260+
return self._pass_or_raise(
261+
await self.event_bus.request(event, TO_NETWORKING_BROADCAST_CONFIG)
262+
).bytez
250263

251264
TResponse = TypeVar("TResponse", bound=BaseLightPeerChainResponse)
252265

trinity/rpc/modules/eth.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
BaseAccountDB
4141
)
4242

43+
from trinity.constants import (
44+
TO_NETWORKING_BROADCAST_CONFIG,
45+
)
4346
from trinity.chains.base import BaseAsyncChain
4447
from trinity.rpc.format import (
4548
block_to_dict,
@@ -274,7 +277,7 @@ class SyncProgress(TypedDict):
274277
highestBlock: BlockNumber
275278

276279
async def syncing(self) -> Union[bool, SyncProgress]:
277-
res = await self._event_bus.request(SyncingRequest())
280+
res = await self._event_bus.request(SyncingRequest(), TO_NETWORKING_BROADCAST_CONFIG)
278281
if res.is_syncing:
279282
return {
280283
"startingBlock": res.progress.starting_block,

trinity/rpc/modules/net.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from p2p.events import PeerCountRequest
2+
from trinity.constants import TO_NETWORKING_BROADCAST_CONFIG
23
from trinity.nodes.events import NetworkIdRequest
34
from trinity.rpc.modules import RPCModule
45

@@ -8,14 +9,20 @@ async def version(self) -> str:
89
"""
910
Returns the current network ID.
1011
"""
11-
response = await self._event_bus.request(NetworkIdRequest())
12+
response = await self._event_bus.request(
13+
NetworkIdRequest(),
14+
TO_NETWORKING_BROADCAST_CONFIG
15+
)
1216
return str(response.network_id)
1317

1418
async def peerCount(self) -> str:
1519
"""
1620
Return the number of peers that are currently connected to the node
1721
"""
18-
response = await self._event_bus.request(PeerCountRequest())
22+
response = await self._event_bus.request(
23+
PeerCountRequest(),
24+
TO_NETWORKING_BROADCAST_CONFIG
25+
)
1926
return hex(response.peer_count)
2027

2128
async def listening(self) -> bool:

0 commit comments

Comments
 (0)