debug: Add detailed logging to BlockchainClient for vote submission
Add logging at each stage:
- Context manager entry/exit
- submit_vote() method entry
- Validator selection
- HTTP request details
- Response handling
This will help identify exactly where the vote submission is failing.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
6f43d75155
commit
64ad1e9fb6
@ -84,8 +84,11 @@ class BlockchainClient:
|
|||||||
|
|
||||||
async def __aenter__(self):
|
async def __aenter__(self):
|
||||||
"""Async context manager entry"""
|
"""Async context manager entry"""
|
||||||
|
logger.info("[BlockchainClient.__aenter__] Creating AsyncClient")
|
||||||
self._client = httpx.AsyncClient(timeout=self.timeout)
|
self._client = httpx.AsyncClient(timeout=self.timeout)
|
||||||
|
logger.info("[BlockchainClient.__aenter__] Refreshing validator status")
|
||||||
await self.refresh_validator_status()
|
await self.refresh_validator_status()
|
||||||
|
logger.info(f"[BlockchainClient.__aenter__] Ready with {len(self.healthy_validators)} healthy validators")
|
||||||
return self
|
return self
|
||||||
|
|
||||||
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
||||||
@ -172,10 +175,16 @@ class BlockchainClient:
|
|||||||
Raises:
|
Raises:
|
||||||
Exception: If all validators are unreachable
|
Exception: If all validators are unreachable
|
||||||
"""
|
"""
|
||||||
|
logger.info(f"[BlockchainClient.submit_vote] CALLED with voter_id={voter_id}, election_id={election_id}")
|
||||||
|
logger.info(f"[BlockchainClient.submit_vote] healthy_validators count: {len(self.healthy_validators)}")
|
||||||
|
|
||||||
validator = self._get_healthy_validator()
|
validator = self._get_healthy_validator()
|
||||||
if not validator:
|
if not validator:
|
||||||
|
logger.error("[BlockchainClient.submit_vote] No healthy validators available!")
|
||||||
raise Exception("No healthy validators available")
|
raise Exception("No healthy validators available")
|
||||||
|
|
||||||
|
logger.info(f"[BlockchainClient.submit_vote] Selected validator: {validator.node_id}")
|
||||||
|
|
||||||
# Generate transaction ID if not provided
|
# Generate transaction ID if not provided
|
||||||
if not transaction_id:
|
if not transaction_id:
|
||||||
import uuid
|
import uuid
|
||||||
@ -215,17 +224,21 @@ class BlockchainClient:
|
|||||||
"id": transaction_id
|
"id": transaction_id
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info(f"Submitting vote to {validator.node_id}: tx_id={transaction_id}")
|
logger.info(f"[BlockchainClient.submit_vote] Submitting vote to {validator.node_id}: tx_id={transaction_id}")
|
||||||
|
logger.info(f"[BlockchainClient.submit_vote] RPC URL: {validator.rpc_url}/rpc")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if not self._client:
|
if not self._client:
|
||||||
|
logger.error("[BlockchainClient.submit_vote] AsyncClient not initialized!")
|
||||||
raise Exception("AsyncClient not initialized")
|
raise Exception("AsyncClient not initialized")
|
||||||
|
|
||||||
|
logger.info(f"[BlockchainClient.submit_vote] Sending POST request to {validator.rpc_url}/rpc")
|
||||||
response = await self._client.post(
|
response = await self._client.post(
|
||||||
f"{validator.rpc_url}/rpc",
|
f"{validator.rpc_url}/rpc",
|
||||||
json=rpc_request,
|
json=rpc_request,
|
||||||
timeout=self.timeout
|
timeout=self.timeout
|
||||||
)
|
)
|
||||||
|
logger.info(f"[BlockchainClient.submit_vote] Response received: status={response.status_code}")
|
||||||
|
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
result = response.json()
|
result = response.json()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user