Skip to content

Commit 05cf6c1

Browse files
committed
Special handling for the write ledger
Signed-off-by: Ian Costanzo <ian@anon-solutions.ca>
1 parent 4d6e970 commit 05cf6c1

3 files changed

Lines changed: 28 additions & 18 deletions

File tree

aries_cloudagent/core/conductor.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from ..config.wallet import wallet_config
2929
from ..core.profile import Profile
3030
from ..indy.verifier import IndyVerifier
31+
# from ..ledger.base import BaseLedger
3132

3233
from ..ledger.error import LedgerConfigError, LedgerTransactionError
3334
from ..ledger.multiple_ledger.base_manager import (
@@ -144,6 +145,7 @@ async def setup(self):
144145
self.root_profile.BACKEND_NAME == "askar"
145146
and ledger.BACKEND_NAME == "indy-vdr"
146147
):
148+
# context.injector.bind_instance(BaseLedger, ledger)
147149
context.injector.bind_provider(
148150
IndyVerifier,
149151
ClassProvider(
@@ -155,6 +157,7 @@ async def setup(self):
155157
self.root_profile.BACKEND_NAME == "indy"
156158
and ledger.BACKEND_NAME == "indy"
157159
):
160+
# context.injector.bind_instance(BaseLedger, ledger)
158161
context.injector.bind_provider(
159162
IndyVerifier,
160163
ClassProvider(

aries_cloudagent/ledger/multiple_ledger/indy_manager.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ def __init__(
5353

5454
async def get_write_ledger(self) -> Optional[Tuple[str, IndySdkLedger]]:
5555
"""Return the write IndySdkLedger instance."""
56-
return self.write_ledger_info
56+
# return self.write_ledger_info
57+
if self.write_ledger_info:
58+
return (self.write_ledger_info[0], self.profile.inject_or(BaseLedger))
59+
else:
60+
return None
5761

5862
async def get_prod_ledgers(self) -> Mapping:
5963
"""Return production ledgers mapping."""
@@ -83,7 +87,9 @@ async def _get_ledger_by_did(
8387
"""
8488
try:
8589
indy_sdk_ledger = None
86-
if ledger_id in self.production_ledgers:
90+
if self.write_ledger_info and ledger_id == self.write_ledger_info[0]:
91+
indy_sdk_ledger = self.get_write_ledger()
92+
elif ledger_id in self.production_ledgers:
8793
indy_sdk_ledger = self.production_ledgers.get(ledger_id)
8894
else:
8995
indy_sdk_ledger = self.non_production_ledgers.get(ledger_id)

aries_cloudagent/ledger/multiple_ledger/manager_provider.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -84,24 +84,25 @@ def provide(self, settings: BaseSettings, injector: BaseInjector):
8484
pool_name = config.get("pool_name")
8585
ledger_is_production = config.get("is_production")
8686
ledger_is_write = config.get("is_write")
87-
ledger_pool = pool_class(
88-
pool_name,
89-
keepalive=keepalive,
90-
cache=cache,
91-
genesis_transactions=genesis_transactions,
92-
read_only=read_only,
93-
socks_proxy=socks_proxy,
94-
)
95-
ledger_instance = ledger_class(
96-
pool=ledger_pool,
97-
profile=self.root_profile,
98-
)
9987
if ledger_is_write:
100-
write_ledger_info = (ledger_id, ledger_instance)
101-
if ledger_is_production:
102-
indy_sdk_production_ledgers[ledger_id] = ledger_instance
88+
write_ledger_info = (ledger_id, None)
10389
else:
104-
indy_sdk_non_production_ledgers[ledger_id] = ledger_instance
90+
ledger_pool = pool_class(
91+
pool_name,
92+
keepalive=keepalive,
93+
cache=cache,
94+
genesis_transactions=genesis_transactions,
95+
read_only=read_only,
96+
socks_proxy=socks_proxy,
97+
)
98+
ledger_instance = ledger_class(
99+
pool=ledger_pool,
100+
profile=self.root_profile,
101+
)
102+
if ledger_is_production:
103+
indy_sdk_production_ledgers[ledger_id] = ledger_instance
104+
else:
105+
indy_sdk_non_production_ledgers[ledger_id] = ledger_instance
105106
if settings.get_value("ledger.genesis_transactions"):
106107
ledger_instance = self.root_profile.inject_or(BaseLedger)
107108
ledger_id = "startup::" + ledger_instance.pool.name

0 commit comments

Comments
 (0)