From 16d59bde799a5d4074bcd50885202158574ed47f Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Tue, 15 Oct 2024 14:17:19 -0700 Subject: [PATCH 1/4] Fixes success path of pow register --- .../src/bittensor/extrinsics/registration.py | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/bittensor_cli/src/bittensor/extrinsics/registration.py b/bittensor_cli/src/bittensor/extrinsics/registration.py index 6373824f9..6e69d6898 100644 --- a/bittensor_cli/src/bittensor/extrinsics/registration.py +++ b/bittensor_cli/src/bittensor/extrinsics/registration.py @@ -35,6 +35,7 @@ millify, get_human_readable, print_verbose, + print_error, ) if typing.TYPE_CHECKING: @@ -512,12 +513,13 @@ async def get_neuron_for_pubkey_and_subnet(): with console.status( f":satellite: Checking Account on [bold]subnet:{netuid}[/bold]...", spinner="aesthetic", - ): + ) as status: neuron = await get_neuron_for_pubkey_and_subnet() if not neuron.is_null: - # bittensor.logging.debug( - # f"Wallet {wallet} is already registered on {neuron.netuid} with {neuron.uid}" - # ) + print_error( + f"Wallet {wallet} is already registered on subnet {neuron.netuid} with uid {neuron.uid}", + status, + ) return True if prompt: @@ -611,7 +613,8 @@ async def get_neuron_for_pubkey_and_subnet(): success, err_msg = True, "" else: await response.process_events() - if not await response.is_success: + success = await response.is_success + if not success: success, err_msg = ( False, format_error_message( @@ -619,23 +622,23 @@ async def get_neuron_for_pubkey_and_subnet(): substrate=subtensor.substrate, ), ) - - if not success: - # Look error here - # https://github.com/opentensor/subtensor/blob/development/pallets/subtensor/src/errors.rs - if "HotKeyAlreadyRegisteredInSubNet" in err_msg: - console.print( - f":white_heavy_check_mark: [green]Already Registered on " - f"[bold]subnet:{netuid}[/bold][/green]" + # Look error here + # https://github.com/opentensor/subtensor/blob/development/pallets/subtensor/src/errors.rs + + if "HotKeyAlreadyRegisteredInSubNet" in err_msg: + console.print( + f":white_heavy_check_mark: [green]Already Registered on " + f"[bold]subnet:{netuid}[/bold][/green]" + ) + return True + err_console.print( + f":cross_mark: [red]Failed[/red]: {err_msg}" ) - return True - - err_console.print(f":cross_mark: [red]Failed[/red]: {err_msg}") - await asyncio.sleep(0.5) + await asyncio.sleep(0.5) # Successful registration, final check for neuron and pubkey - else: - console.print(":satellite: Checking Balance...") + if success: + console.print(":satellite: Checking Registration status...") is_registered = await is_hotkey_registered( subtensor, netuid=netuid, @@ -1630,7 +1633,6 @@ async def swap_hotkey_extrinsic( try: wallet.unlock_coldkey() except KeyFileError: - err_console.print("Error decrypting coldkey (possibly incorrect password)") return False if prompt: From cf4e6e7f6f1dd9cf8bd501fe861162e03d15ce20 Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Tue, 15 Oct 2024 14:18:44 -0700 Subject: [PATCH 2/4] Adds back decryption err_msg --- bittensor_cli/src/bittensor/extrinsics/registration.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bittensor_cli/src/bittensor/extrinsics/registration.py b/bittensor_cli/src/bittensor/extrinsics/registration.py index 6e69d6898..c8bbde07f 100644 --- a/bittensor_cli/src/bittensor/extrinsics/registration.py +++ b/bittensor_cli/src/bittensor/extrinsics/registration.py @@ -1633,6 +1633,7 @@ async def swap_hotkey_extrinsic( try: wallet.unlock_coldkey() except KeyFileError: + err_console.print("Error decrypting coldkey (possibly incorrect password)") return False if prompt: From a111077ca09b168ab1f6117f8d2f1995d53eab9d Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Tue, 15 Oct 2024 14:45:46 -0700 Subject: [PATCH 3/4] Fixes termination of workers --- bittensor_cli/src/bittensor/extrinsics/registration.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bittensor_cli/src/bittensor/extrinsics/registration.py b/bittensor_cli/src/bittensor/extrinsics/registration.py index c8bbde07f..cd8864a75 100644 --- a/bittensor_cli/src/bittensor/extrinsics/registration.py +++ b/bittensor_cli/src/bittensor/extrinsics/registration.py @@ -1234,8 +1234,11 @@ def _terminate_workers_and_wait_for_exit( if isinstance(worker, Queue_Type): worker.join_thread() else: - worker.join() - worker.close() + worker.join(3.0) + try: + worker.close() + except ValueError: + worker.terminate() # TODO verify this works with async From 7e0634be0f360287a8c8fab5629d2422588198aa Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Tue, 15 Oct 2024 14:55:10 -0700 Subject: [PATCH 4/4] Enhance terminate_workets --- bittensor_cli/src/bittensor/extrinsics/registration.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bittensor_cli/src/bittensor/extrinsics/registration.py b/bittensor_cli/src/bittensor/extrinsics/registration.py index cd8864a75..af6962106 100644 --- a/bittensor_cli/src/bittensor/extrinsics/registration.py +++ b/bittensor_cli/src/bittensor/extrinsics/registration.py @@ -16,6 +16,7 @@ import time import typing from typing import Optional +import subprocess import backoff from bittensor_wallet import Wallet @@ -1234,7 +1235,10 @@ def _terminate_workers_and_wait_for_exit( if isinstance(worker, Queue_Type): worker.join_thread() else: - worker.join(3.0) + try: + worker.join(3.0) + except subprocess.TimeoutExpired: + worker.terminate() try: worker.close() except ValueError: