Skip to content

Commit 11bf24a

Browse files
committed
Internal: pass chain data service to chain connector constructor (#490)
Problem: the chain connector class initializes its own chain data service, which is not ideal for testing. Solution: pass a chain data service instance to the constructor of the chain connector class.
1 parent 8dfc22e commit 11bf24a

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

src/aleph/chains/connector.py

+13-6
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,32 @@
1818

1919

2020
class ChainConnector:
21+
"""
22+
Service in charge of managing read/write links to blockchains.
23+
This consists mostly of starting fetcher and publisher tasks for each chain and let the chain-specific
24+
code do the heavy lifting.
25+
"""
26+
2127
readers: Dict[Chain, ChainReader]
2228
writers: Dict[Chain, ChainWriter]
2329

2430
def __init__(
25-
self, session_factory: DbSessionFactory, storage_service: StorageService
31+
self, session_factory: DbSessionFactory, chain_data_service: ChainDataService
2632
):
2733
self._session_factory = session_factory
34+
self._chain_data_service = chain_data_service
2835

2936
self.readers = {}
3037
self.writers = {}
3138

32-
self._chain_data_service = ChainDataService(
33-
session_factory=session_factory, storage_service=storage_service
34-
)
35-
3639
self._register_chains()
3740

3841
async def chain_reader_task(self, chain: Chain, config: Config):
3942
connector = self.readers[chain]
4043

4144
while True:
4245
try:
43-
LOGGER.info("Fetching on-chain data...")
46+
LOGGER.info("Fetching on-chain data for %s...", chain)
4447
await connector.fetcher(config)
4548
except Exception:
4649
LOGGER.exception(
@@ -62,6 +65,10 @@ async def chain_writer_task(self, chain: Chain, config: Config):
6265
await asyncio.sleep(10)
6366

6467
async def chain_event_loop(self, config: Config):
68+
"""
69+
Starts the listener and publisher tasks for all supported chains.
70+
"""
71+
6572
listener_tasks = []
6673
publisher_tasks = []
6774

src/aleph/chains/ethereum.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -264,9 +264,7 @@ async def fetch_ethereum_sync_events(self, config: Config):
264264
async def fetch_sync_events_task(self, config: Config):
265265
while True:
266266
try:
267-
with self.session_factory() as session:
268-
await self.fetch_ethereum_sync_events(config)
269-
session.commit()
267+
await self.fetch_ethereum_sync_events(config)
270268
except Exception:
271269
LOGGER.exception(
272270
"An unexpected exception occurred, "

src/aleph/commands.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from configmanager import Config
2424

2525
import aleph.config
26+
from aleph.chains.chain_data_service import ChainDataService
2627
from aleph.chains.connector import ChainConnector
2728
from aleph.cli.args import parse_args
2829
from aleph.db.connection import make_engine, make_session_factory, make_db_url
@@ -136,9 +137,12 @@ async def main(args: List[str]) -> None:
136137
ipfs_service=ipfs_service,
137138
node_cache=node_cache,
138139
)
139-
chain_connector = ChainConnector(
140+
chain_data_service = ChainDataService(
140141
session_factory=session_factory, storage_service=storage_service
141142
)
143+
chain_connector = ChainConnector(
144+
session_factory=session_factory, chain_data_service=chain_data_service
145+
)
142146

143147
set_start_method("spawn")
144148

0 commit comments

Comments
 (0)