Skip to content

Commit

Permalink
Merge pull request #2271 from CounterpartyXCP/fixstartfetcher
Browse files Browse the repository at this point in the history
Fix RSFetcher starting
  • Loading branch information
ouziel-slama authored Sep 26, 2024
2 parents 2e03561 + 42dc86d commit e4d60e7
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 16 deletions.
26 changes: 12 additions & 14 deletions counterparty-core/counterpartycore/lib/backend/rsfetcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
class RSFetcher(metaclass=util.SingletonMeta):
thread_index_counter = 0 # Add a thread index counter

def __init__(self, start_height=0, indexer_config=None):
def __init__(self, indexer_config=None):
RSFetcher.thread_index_counter += 1
if indexer_config is None:
self.config = {
Expand All @@ -27,27 +27,18 @@ def __init__(self, start_height=0, indexer_config=None):
"log_file": config.FETCHER_LOG,
"log_level": config.LOG_LEVEL_STRING,
"json_format": config.JSON_LOGS,
"start_height": start_height,
}
else:
self.config = indexer_config | {"start_height": start_height}
self.config = indexer_config
self.config["network"] = "testnet" if config.TESTNET else "mainnet"
self.start_height = start_height
self.next_height = start_height
self.fetcher = None
self.prefetch_task = None
self.start()
# prefetching
self.stopped = False
self.prefetch_queue = {}
self.prefetch_queue_size = 0
self.executor = ThreadPoolExecutor(max_workers=WORKER_THREADS)
self.prefetch_task = self.executor.submit(self.prefetch_blocks)
self.prefetch_queue_initialized = False

def start(self):
def start(self, start_height=0):
logger.debug("Starting Prefetcher...")
try:
self.config["start_height"] = start_height
self.next_height = start_height
self.fetcher = indexer.Indexer(self.config)
# check fetcher version
fetcher_version = self.fetcher.get_version()
Expand All @@ -65,6 +56,13 @@ def start(self):
except Exception as e:
logger.error(f"Failed to initialize fetcher: {e}. Retrying in 5 seconds...")
raise e
# prefetching
self.stopped = False
self.prefetch_queue = {}
self.prefetch_queue_size = 0
self.executor = ThreadPoolExecutor(max_workers=WORKER_THREADS)
self.prefetch_task = self.executor.submit(self.prefetch_blocks)
self.prefetch_queue_initialized = False

def get_block(self):
logger.trace("Fetching block with Rust backend.")
Expand Down
4 changes: 2 additions & 2 deletions counterparty-core/counterpartycore/lib/blocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -1321,8 +1321,8 @@ def catch_up(db, check_asset_conservation=True):
# Get block information and transactions
fetch_time_start = time.time()
if fetcher is None:
fetcher = rsfetcher.RSFetcher(util.CURRENT_BLOCK_INDEX + 1)

fetcher = rsfetcher.RSFetcher()
fetcher.start(util.CURRENT_BLOCK_INDEX + 1)
decoded_block = fetcher.get_block()
block_height = decoded_block.get("height")
fetch_time_end = time.time()
Expand Down
3 changes: 3 additions & 0 deletions counterparty-core/counterpartycore/test/indexer_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@
@pytest.mark.skip()
def test_fetcher_singleton():
fetcher = rsfetcher.RSFetcher(config=TEST_CONFIG)
fetcher.start()
fetcher.is_me = "Coucou"

fetcher2 = rsfetcher.RSFetcher(config=TEST_CONFIG)
fetcher2.start()
assert fetcher2.is_me == "Coucou"

assert fetcher.instance() is fetcher2.instance()
Expand All @@ -36,6 +38,7 @@ def test_fetcher_singleton():
@pytest.mark.skip()
def test_fetcher_interrupt():
fetcher = rsfetcher.RSFetcher(config=TEST_CONFIG)
fetcher.start()
interrupted = False
try:
for _ in range(500):
Expand Down
25 changes: 25 additions & 0 deletions release-notes/release-notes-v10.4.2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Release Notes - Counterparty Core v10.4.2 (2024-??-??)


# Upgrading


# ChangeLog

## Protocol Changes

## Bugfixes

* Fix RSFetcher startup

## Codebase

## API

## CLI

# Credits

* Ouziel Slama
* Warren Puffett
* Adam Krellenstein

0 comments on commit e4d60e7

Please sign in to comment.