Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions hathor/builder/cli_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ def create_manager(self, reactor: Reactor) -> HathorManager:
nc_log_storage=nc_log_storage,
nc_calls_sorter=nc_calls_sorter,
feature_service=self.feature_service,
nc_exec_fail_trace=self._args.nc_exec_fail_trace,
)

if self._args.x_enable_event_queue or self._args.enable_event_queue:
Expand Down
1 change: 1 addition & 0 deletions hathor/cli/run_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ def create_parser(cls) -> ArgumentParser:
possible_nc_exec_logs = [config.value for config in NCLogConfig]
parser.add_argument('--nc-exec-logs', default=NCLogConfig.NONE, choices=possible_nc_exec_logs,
help=f'Enable saving Nano Contracts execution logs. One of {possible_nc_exec_logs}')
parser.add_argument('--nc-exec-fail-trace', action='store_true', help=SUPPRESS)
return parser

def prepare(self, *, register_resources: bool = True) -> None:
Expand Down
1 change: 1 addition & 0 deletions hathor/cli/run_node_args.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,4 @@ class RunNodeArgs(BaseModel, extra=Extra.allow):
localnet: bool
nc_indexes: bool
nc_exec_logs: NCLogConfig
nc_exec_fail_trace: bool
10 changes: 9 additions & 1 deletion hathor/consensus/block_consensus.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,15 @@ def __init__(
runner_factory: RunnerFactory,
nc_log_storage: NCLogStorage,
feature_service: FeatureService,
*,
nc_exec_fail_trace: bool = False,
) -> None:
self._settings = settings
self.context = context
self._runner_factory = runner_factory
self._nc_log_storage = nc_log_storage
self.feature_service = feature_service
self.nc_exec_fail_trace = nc_exec_fail_trace

@classproperty
def log(cls) -> Any:
Expand Down Expand Up @@ -253,6 +256,8 @@ def _nc_execute_calls(self, block: Block, *, is_reorg: bool) -> None:
kwargs: dict[str, Any] = {}
if tx.name:
kwargs['__name'] = tx.name
if self.nc_exec_fail_trace:
kwargs['exc_info'] = True
self.log.info(
'nc execution failed',
tx=tx.hash.hex(),
Expand Down Expand Up @@ -869,19 +874,22 @@ def calculate_score(self, block: Block, *, mark_as_best_chain: bool = False) ->


class BlockConsensusAlgorithmFactory:
__slots__ = ('settings', 'nc_log_storage', '_runner_factory', 'feature_service')
__slots__ = ('settings', 'nc_log_storage', '_runner_factory', 'feature_service', 'nc_exec_fail_trace')

def __init__(
self,
settings: HathorSettings,
runner_factory: RunnerFactory,
nc_log_storage: NCLogStorage,
feature_service: FeatureService,
*,
nc_exec_fail_trace: bool = False,
) -> None:
self.settings = settings
self._runner_factory = runner_factory
self.nc_log_storage = nc_log_storage
self.feature_service = feature_service
self.nc_exec_fail_trace = nc_exec_fail_trace

def __call__(self, context: 'ConsensusAlgorithmContext') -> BlockConsensusAlgorithm:
return BlockConsensusAlgorithm(
Expand Down
3 changes: 2 additions & 1 deletion hathor/consensus/consensus.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,14 +80,15 @@ def __init__(
nc_calls_sorter: NCSorterCallable,
nc_log_storage: NCLogStorage,
feature_service: FeatureService,
nc_exec_fail_trace: bool = False,
) -> None:
self._settings = settings
self.log = logger.new()
self._pubsub = pubsub
self.nc_storage_factory = nc_storage_factory
self.soft_voided_tx_ids = frozenset(soft_voided_tx_ids)
self.block_algorithm_factory = BlockConsensusAlgorithmFactory(
settings, runner_factory, nc_log_storage, feature_service
settings, runner_factory, nc_log_storage, feature_service, nc_exec_fail_trace=nc_exec_fail_trace,
)
self.transaction_algorithm_factory = TransactionConsensusAlgorithmFactory()
self.nc_calls_sorter = nc_calls_sorter
Expand Down
Loading