зеркало из https://github.com/microsoft/CCF.git
Fix recovery sandbox (#2534)
This commit is contained in:
Родитель
2d5c03a936
Коммит
d93d02c549
|
@ -1 +1 @@
|
|||
quack
|
||||
coal
|
|
@ -29,7 +29,7 @@ class Consortium:
|
|||
share_script,
|
||||
members_info=None,
|
||||
curve=None,
|
||||
network=None,
|
||||
public_state=None,
|
||||
authenticate_session=True,
|
||||
):
|
||||
self.common_dir = common_dir
|
||||
|
@ -77,10 +77,8 @@ class Consortium:
|
|||
f"Successfully recovered member {local_id}: {new_member.service_id}"
|
||||
)
|
||||
|
||||
# Retrieve state of service directly from ledger
|
||||
latest_public_state, _ = network.get_latest_ledger_public_state()
|
||||
self.recovery_threshold = json.loads(
|
||||
latest_public_state["public:ccf.gov.service.config"][
|
||||
public_state["public:ccf.gov.service.config"][
|
||||
ccf.ledger.WELL_KNOWN_SINGLETON_TABLE_KEY
|
||||
]
|
||||
)["recovery_threshold"]
|
||||
|
@ -89,7 +87,7 @@ class Consortium:
|
|||
LOG.warning("No consortium member to recover")
|
||||
return
|
||||
|
||||
for id_bytes, info_bytes in latest_public_state[
|
||||
for id_bytes, info_bytes in public_state[
|
||||
"public:ccf.gov.members.info"
|
||||
].items():
|
||||
member_id = id_bytes.decode()
|
||||
|
|
|
@ -10,7 +10,7 @@ import infra.path
|
|||
import infra.proc
|
||||
import infra.node
|
||||
import infra.consortium
|
||||
from ccf.ledger import NodeStatus
|
||||
from ccf.ledger import NodeStatus, Ledger
|
||||
from ccf.tx_status import TxStatus
|
||||
from ccf.tx_id import TxID
|
||||
import random
|
||||
|
@ -430,6 +430,12 @@ class Network:
|
|||
self.common_dir = common_dir or get_common_folder_name(
|
||||
args.workspace, args.label
|
||||
)
|
||||
ledger_dirs = [ledger_dir]
|
||||
if committed_ledger_dir:
|
||||
ledger_dirs.append(committed_ledger_dir)
|
||||
|
||||
ledger = Ledger(ledger_dirs, committed_only=False)
|
||||
public_state, _ = ledger.get_latest_public_state()
|
||||
|
||||
primary = self._start_all_nodes(
|
||||
args,
|
||||
|
@ -442,7 +448,10 @@ class Network:
|
|||
# If a common directory was passed in, initialise the consortium from it
|
||||
if common_dir is not None:
|
||||
self.consortium = infra.consortium.Consortium(
|
||||
common_dir, self.key_generator, self.share_script, network=self
|
||||
common_dir,
|
||||
self.key_generator,
|
||||
self.share_script,
|
||||
public_state=public_state,
|
||||
)
|
||||
|
||||
for node in self.get_joined_nodes():
|
||||
|
|
Загрузка…
Ссылка в новой задаче