Skip to content

Commit 17d62e7

Browse files
committed
chain: remove BlockManagerOptions and ChainstateLoadOptions
These are no longer exposed by bitcoinkernel, and all merged into ChainstateManagerOptions.
1 parent d1e2a78 commit 17d62e7

File tree

3 files changed

+34
-33
lines changed

3 files changed

+34
-33
lines changed

src/pbk/__init__.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
from pbk.block import Block, BlockHash, BlockIndex, BlockUndo
22
from pbk.chain import (
3-
BlockManagerOptions,
43
ChainParameters,
5-
ChainstateLoadOptions,
64
ChainstateManager,
75
ChainstateManagerOptions,
86
ChainType,
@@ -24,9 +22,7 @@
2422
"BlockHash",
2523
"BlockIndex",
2624
"BlockUndo",
27-
"BlockManagerOptions",
2825
"ChainParameters",
29-
"ChainstateLoadOptions",
3026
"ChainstateManager",
3127
"ChainstateManagerOptions",
3228
"ChainType",
@@ -78,11 +74,9 @@ def load_chainman(
7874
context = make_context(chain_type)
7975
blocksdir = datadir / "blocks"
8076

81-
block_man_opts = BlockManagerOptions(context, str(blocksdir.absolute()))
82-
chain_man_opts = ChainstateManagerOptions(context, str(datadir.absolute()))
83-
chain_load_opts = ChainstateLoadOptions()
84-
chain_man = ChainstateManager(
85-
context, chain_man_opts, block_man_opts, chain_load_opts
77+
chain_man_opts = ChainstateManagerOptions(
78+
context, str(datadir.absolute()), str(blocksdir.absolute())
8679
)
80+
chain_man = ChainstateManager(context, chain_man_opts)
8781

8882
return chain_man

src/pbk/chain.py

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,41 +23,37 @@ def __init__(self, chain_type: ChainType):
2323
super().__init__(chain_type)
2424

2525

26-
class BlockManagerOptions(KernelOpaquePtr):
27-
def __init__(self, context: "Context", blocksdir: str):
28-
blocksdir_bytes = blocksdir.encode("utf-8")
29-
super().__init__(context, blocksdir_bytes, len(blocksdir_bytes))
30-
31-
3226
class ChainstateManagerOptions(KernelOpaquePtr):
33-
def __init__(self, context: "Context", datadir: str):
27+
def __init__(self, context: "Context", datadir: str, blocks_dir: str):
3428
datadir_bytes = datadir.encode("utf-8")
35-
super().__init__(context, datadir_bytes, len(datadir_bytes))
29+
blocksdir_bytes = blocks_dir.encode("utf-8")
30+
super().__init__(
31+
context,
32+
datadir_bytes,
33+
len(datadir_bytes),
34+
blocksdir_bytes,
35+
len(blocksdir_bytes),
36+
)
37+
38+
def set_wipe_dbs(self, wipe_block_tree_db: bool, wipe_chainstate_db: bool) -> bool:
39+
return k.kernel_chainstate_manager_options_set_wipe_dbs(
40+
self, wipe_block_tree_db, wipe_chainstate_db
41+
)
3642

3743
def set_worker_threads_num(self, worker_threads: int):
3844
k.kernel_chainstate_manager_options_set_worker_threads_num(self, worker_threads)
3945

4046

41-
class ChainstateLoadOptions(KernelOpaquePtr):
42-
def set_wipe_block_tree_db(self, value: bool):
43-
k.kernel_chainstate_load_options_set_wipe_block_tree_db(self, value)
44-
45-
def set_wipe_chainstate_db(self, value: bool):
46-
k.kernel_chainstate_load_options_set_wipe_chainstate_db(self, value)
47-
48-
4947
class ChainstateManager(KernelOpaquePtr):
5048
_context: "Context" # Persisted to ensure context is not destroyed before ChainstateManager
5149

5250
def __init__(
5351
self,
5452
context: "Context",
5553
chain_man_opts: ChainstateManagerOptions,
56-
block_man_opts: BlockManagerOptions,
57-
chainstate_load_opts: ChainstateLoadOptions,
5854
):
5955
self._context = context
60-
super().__init__(context, chain_man_opts, block_man_opts, chainstate_load_opts)
56+
super().__init__(context, chain_man_opts)
6157

6258
def get_block_index_from_hash(self, hash: "BlockHash"):
6359
return BlockIndex._from_ptr(

test/test_chain.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,27 @@
77
def test_chainstate_manager_options(temp_dir: Path):
88
opts = pbk.ContextOptions()
99
context = pbk.Context(opts)
10-
block_man_opts = pbk.BlockManagerOptions(context, str(temp_dir / "blocks"))
11-
chain_man_opts = pbk.ChainstateManagerOptions(context, str(temp_dir))
12-
chain_load_opts = pbk.ChainstateLoadOptions()
10+
chain_man_opts = pbk.ChainstateManagerOptions(
11+
context, str(temp_dir), str(temp_dir / "blocks")
12+
)
13+
14+
assert chain_man_opts.set_wipe_dbs(wipe_block_tree_db=True, wipe_chainstate_db=True)
15+
assert chain_man_opts.set_wipe_dbs(
16+
wipe_block_tree_db=False, wipe_chainstate_db=True
17+
)
18+
assert chain_man_opts.set_wipe_dbs(
19+
wipe_block_tree_db=False, wipe_chainstate_db=False
20+
)
21+
assert not chain_man_opts.set_wipe_dbs(
22+
wipe_block_tree_db=True, wipe_chainstate_db=False
23+
)
1324

1425
# valid number
1526
for num_threads in [0, 1, 5]:
1627
chain_man_opts.set_worker_threads_num(num_threads)
17-
pbk.ChainstateManager(context, chain_man_opts, block_man_opts, chain_load_opts)
28+
pbk.ChainstateManager(context, chain_man_opts)
1829

1930
# invalid numbers are automatically clamped between 0-15
2031
for num_threads in [-10, -1, 100]:
2132
chain_man_opts.set_worker_threads_num(num_threads)
22-
pbk.ChainstateManager(context, chain_man_opts, block_man_opts, chain_load_opts)
33+
pbk.ChainstateManager(context, chain_man_opts)

0 commit comments

Comments
 (0)