From dda2dda754ed357e50b0afef6b00fc44b480aa90 Mon Sep 17 00:00:00 2001 From: Sergei Shulepov Date: Thu, 11 Jan 2024 16:01:36 +0000 Subject: [PATCH] chore: improve logging This changeset is meant to improve the logging. Basically committing whatever logging changes that I did for debugging issues with the demo. --- sugondat/nmt/src/ns.rs | 10 +++++++++- sugondat/shim/src/dock/rollkit.rs | 8 +++++++- sugondat/shim/src/dock/rpc_error.rs | 4 ++-- sugondat/shim/src/dock/sovereign.rs | 2 +- sugondat/shim/src/sugondat_rpc/mod.rs | 21 +++++++++++++++++++-- 5 files changed, 38 insertions(+), 7 deletions(-) diff --git a/sugondat/nmt/src/ns.rs b/sugondat/nmt/src/ns.rs index d4e65b11..c4203920 100644 --- a/sugondat/nmt/src/ns.rs +++ b/sugondat/nmt/src/ns.rs @@ -1,3 +1,5 @@ +use alloc::string::ToString; + use crate::NS_ID_SIZE; use core::fmt; @@ -13,7 +15,7 @@ use core::fmt; /// # use sugondat_nmt::Namespace; /// assert!(Namespace::from_u128_be(0x0100) > Namespace::from_u128_be(0x00FF)); /// ```` -#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "serde", derive(serde::Serialize, serde::Deserialize), @@ -70,3 +72,9 @@ impl fmt::Display for Namespace { Ok(()) } } + +impl fmt::Debug for Namespace { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_tuple("Namespace").field(&self.to_string()).finish() + } +} diff --git a/sugondat/shim/src/dock/rollkit.rs b/sugondat/shim/src/dock/rollkit.rs index 28b3dea5..5840d42b 100644 --- a/sugondat/shim/src/dock/rollkit.rs +++ b/sugondat/shim/src/dock/rollkit.rs @@ -56,7 +56,7 @@ impl RollkitRPCServer for RollkitDock { self.client .submit_blob(blob.data, namespace, submit_key.clone()) .await - .map_err(|_| err::submission_error())?; + .map_err(err::submission_error)?; } // TODO: Ok(0) @@ -70,6 +70,12 @@ impl RollkitRPCServer for RollkitDock { fn parse_namespace(namespace: &str) -> anyhow::Result { use sugondat_nmt::NS_ID_SIZE; let namespace_bytes = hex::decode(namespace)?; + if namespace_bytes.len() != NS_ID_SIZE { + debug!( + "The namespace '{}' is not {} bytes long. Resizing...", + namespace, NS_ID_SIZE + ); + } let namespace_bytes = match namespace_bytes.len() { 0 => anyhow::bail!("namespace must not be empty"), 1..=NS_ID_SIZE => { diff --git a/sugondat/shim/src/dock/rpc_error.rs b/sugondat/shim/src/dock/rpc_error.rs index 40464d37..051aabbb 100644 --- a/sugondat/shim/src/dock/rpc_error.rs +++ b/sugondat/shim/src/dock/rpc_error.rs @@ -16,10 +16,10 @@ pub fn no_signing_key() -> ErrorObjectOwned { ) } -pub fn submission_error() -> ErrorObjectOwned { +pub fn submission_error(e: anyhow::Error) -> ErrorObjectOwned { ErrorObjectOwned::owned( jsonrpsee::types::error::INTERNAL_ERROR_CODE, - "Internal Error: failed to submit blob", + format!("Internal Error: failed to submit blob: {:?}", e), None::<()>, ) } diff --git a/sugondat/shim/src/dock/sovereign.rs b/sugondat/shim/src/dock/sovereign.rs index 935f7009..1bd1854e 100644 --- a/sugondat/shim/src/dock/sovereign.rs +++ b/sugondat/shim/src/dock/sovereign.rs @@ -69,7 +69,7 @@ impl SovereignRPCServer for SovereignDock { self.client .submit_blob(blob, namespace, submit_key) .await - .map_err(|_| err::submission_error())?; + .map_err(err::submission_error)?; Ok(()) } } diff --git a/sugondat/shim/src/sugondat_rpc/mod.rs b/sugondat/shim/src/sugondat_rpc/mod.rs index 08f4c7eb..2baa6966 100644 --- a/sugondat/shim/src/sugondat_rpc/mod.rs +++ b/sugondat/shim/src/sugondat_rpc/mod.rs @@ -1,4 +1,4 @@ -use std::sync::Arc; +use std::{fmt, sync::Arc}; use crate::key::Keypair; use anyhow::Context; @@ -343,7 +343,6 @@ pub struct Block { } /// Represents a blob in a sugondat block. -#[derive(Debug)] pub struct Blob { pub extrinsic_index: u32, pub namespace: Namespace, @@ -357,3 +356,21 @@ impl Blob { sha2::Sha256::digest(&self.data).into() } } + +impl fmt::Debug for Blob { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let abridged_data = if self.data.len() > 16 { + let mut s = hex::encode(&self.data[..16]); + s.push_str("..."); + s + } else { + hex::encode(&self.data) + }; + f.debug_struct("Blob") + .field("extrinsic_index", &self.extrinsic_index) + .field("namespace", &self.namespace) + .field("sender", &self.sender) + .field("data", &abridged_data) + .finish() + } +}