Skip to content

Commit

Permalink
chore: updated validatorsim code
Browse files Browse the repository at this point in the history
  • Loading branch information
tedbee committed Feb 27, 2025
1 parent 1450dd2 commit 6641f2e
Showing 1 changed file with 55 additions and 56 deletions.
111 changes: 55 additions & 56 deletions simulator/validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from bittensor.utils.btlogging import logging as logger

# from commons.orm import ORM
from commons.utils import ttl_get_block
from dojo.protocol import TaskSynapseObject
from neurons.validator import Validator

Expand All @@ -23,65 +22,65 @@ def __init__(self):
super().__init__()
logger.info("Starting Validator Simulator")

async def _try_reconnect_subtensor(self):
self._block_check_attempts += 1
if self._block_check_attempts >= self.MAX_BLOCK_CHECK_ATTEMPTS:
logger.error(
f"Failed to reconnect after {self.MAX_BLOCK_CHECK_ATTEMPTS} attempts"
)
return False
# async def _try_reconnect_subtensor(self):
# self._block_check_attempts += 1
# if self._block_check_attempts >= self.MAX_BLOCK_CHECK_ATTEMPTS:
# logger.error(
# f"Failed to reconnect after {self.MAX_BLOCK_CHECK_ATTEMPTS} attempts"
# )
# return False

try:
logger.info(
f"Attempting to reconnect to subtensor (attempt {self._block_check_attempts}/{self.MAX_BLOCK_CHECK_ATTEMPTS})..."
)
if hasattr(self.subtensor.substrate, "websocket"):
self.subtensor.substrate.websocket.close()

self.subtensor = bt.subtensor(self.subtensor.config)
await asyncio.sleep(1)
return True
except Exception as e:
logger.error(f"Failed to reconnect to subtensor: {e}")
return await self._try_reconnect_subtensor()

async def _ensure_subtensor_connection(self):
async with self._connection_lock:
try:
self.subtensor.get_current_block()
self._block_check_attempts = 0
return True
except (BrokenPipeError, ConnectionError):
logger.warning("Connection lost, attempting immediate reconnection")
return await self._try_reconnect_subtensor()
except Exception as e:
logger.error(f"Unexpected error checking connection: {e}")
return False

@property
def block(self):
try:
if not asyncio.get_event_loop().run_until_complete(
self._ensure_subtensor_connection()
):
logger.warning(
"Subtensor connection failed - returning last known block"
)
return self._last_block if self._last_block is not None else 0
# try:
# logger.info(
# f"Attempting to reconnect to subtensor (attempt {self._block_check_attempts}/{self.MAX_BLOCK_CHECK_ATTEMPTS})..."
# )
# if hasattr(self.subtensor.substrate, "websocket"):
# self.subtensor.substrate.websocket.close()

self._last_block = ttl_get_block(self.subtensor)
self._block_check_attempts = 0
return self._last_block
except Exception as e:
logger.error(f"Error getting block number: {e}")
return self._last_block if self._last_block is not None else 0
# self.subtensor = bt.subtensor(self.subtensor.config)
# await asyncio.sleep(1)
# return True
# except Exception as e:
# logger.error(f"Failed to reconnect to subtensor: {e}")
# return await self._try_reconnect_subtensor()

# async def _ensure_subtensor_connection(self):
# async with self._connection_lock:
# try:
# self.subtensor.get_current_block()
# self._block_check_attempts = 0
# return True
# except (BrokenPipeError, ConnectionError):
# logger.warning("Connection lost, attempting immediate reconnection")
# return await self._try_reconnect_subtensor()
# except Exception as e:
# logger.error(f"Unexpected error checking connection: {e}")
# return False

# @property
# def block(self):
# try:
# if not asyncio.get_event_loop().run_until_complete(
# self._ensure_subtensor_connection()
# ):
# logger.warning(
# "Subtensor connection failed - returning last known block"
# )
# return self._last_block if self._last_block is not None else 0

# self._last_block = ttl_get_block(self.subtensor)
# self._block_check_attempts = 0
# return self._last_block
# except Exception as e:
# logger.error(f"Error getting block number: {e}")
# return self._last_block if self._last_block is not None else 0

async def sync(self):
has_connection = await self._ensure_subtensor_connection()
if not has_connection:
logger.warning("Subtensor connection failed - continuing with partial sync")
# async def sync(self):
# has_connection = await self._ensure_subtensor_connection()
# if not has_connection:
# logger.warning("Subtensor connection failed - continuing with partial sync")

await super().sync()
# await super().sync()

# async def _generate_synthetic_request(
# self,
Expand Down

0 comments on commit 6641f2e

Please sign in to comment.