Add stats to blockprocessor (#3966)
This commit is contained in:
		
					parent
					
						
							
								5fcb8e09a0
							
						
					
				
			
			
				commit
				
					
						e3b264f5dc
					
				
			
		
					 5 changed files with 106 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -548,6 +548,9 @@ std::string nano::stat::type_to_string (stat::type type)
 | 
			
		|||
		case nano::stat::type::hinting:
 | 
			
		||||
			res = "hinting";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::type::blockprocessor:
 | 
			
		||||
			res = "blockprocessor";
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	return res;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -629,6 +632,33 @@ std::string nano::stat::detail_to_string (stat::detail detail)
 | 
			
		|||
		case nano::stat::detail::rollback_failed:
 | 
			
		||||
			res = "rollback_failed";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::progress:
 | 
			
		||||
			res = "progress";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::bad_signature:
 | 
			
		||||
			res = "bad_signature";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::negative_spend:
 | 
			
		||||
			res = "negative_spend";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::unreceivable:
 | 
			
		||||
			res = "unreceivable";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::gap_epoch_open_pending:
 | 
			
		||||
			res = "gap_epoch_open_pending";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::opened_burn_account:
 | 
			
		||||
			res = "opened_burn_account";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::balance_mismatch:
 | 
			
		||||
			res = "balance_mismatch";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::representative_mismatch:
 | 
			
		||||
			res = "representative_mismatch";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::block_position:
 | 
			
		||||
			res = "block_position";
 | 
			
		||||
			break;
 | 
			
		||||
		case nano::stat::detail::frontier_confirmation_failed:
 | 
			
		||||
			res = "frontier_confirmation_failed";
 | 
			
		||||
			break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -245,7 +245,8 @@ public:
 | 
			
		|||
		telemetry,
 | 
			
		||||
		vote_generator,
 | 
			
		||||
		vote_cache,
 | 
			
		||||
		hinting
 | 
			
		||||
		hinting,
 | 
			
		||||
		blockprocessor,
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	/** Optional detail type */
 | 
			
		||||
| 
						 | 
				
			
			@ -277,6 +278,15 @@ public:
 | 
			
		|||
		gap_previous,
 | 
			
		||||
		gap_source,
 | 
			
		||||
		rollback_failed,
 | 
			
		||||
		progress,
 | 
			
		||||
		bad_signature,
 | 
			
		||||
		negative_spend,
 | 
			
		||||
		unreceivable,
 | 
			
		||||
		gap_epoch_open_pending,
 | 
			
		||||
		opened_burn_account,
 | 
			
		||||
		balance_mismatch,
 | 
			
		||||
		representative_mismatch,
 | 
			
		||||
		block_position,
 | 
			
		||||
 | 
			
		||||
		// message specific
 | 
			
		||||
		not_a_type,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -505,6 +505,9 @@ nano::process_return nano::block_processor::process_one (nano::write_transaction
 | 
			
		|||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	node.stats.inc (nano::stat::type::blockprocessor, nano::to_stat_detail (result.code));
 | 
			
		||||
 | 
			
		||||
	return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -756,3 +756,54 @@ void nano::generate_cache::enable_all ()
 | 
			
		|||
	unchecked_count = true;
 | 
			
		||||
	account_count = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nano::stat::detail nano::to_stat_detail (nano::process_result process_result)
 | 
			
		||||
{
 | 
			
		||||
	nano::stat::detail result;
 | 
			
		||||
	switch (process_result)
 | 
			
		||||
	{
 | 
			
		||||
		case process_result::progress:
 | 
			
		||||
			return nano::stat::detail::progress;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::bad_signature:
 | 
			
		||||
			return nano::stat::detail::bad_signature;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::old:
 | 
			
		||||
			return nano::stat::detail::old;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::negative_spend:
 | 
			
		||||
			return nano::stat::detail::negative_spend;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::fork:
 | 
			
		||||
			return nano::stat::detail::fork;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::unreceivable:
 | 
			
		||||
			return nano::stat::detail::unreceivable;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::gap_previous:
 | 
			
		||||
			return nano::stat::detail::gap_previous;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::gap_source:
 | 
			
		||||
			return nano::stat::detail::gap_source;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::gap_epoch_open_pending:
 | 
			
		||||
			return nano::stat::detail::gap_epoch_open_pending;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::opened_burn_account:
 | 
			
		||||
			return nano::stat::detail::opened_burn_account;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::balance_mismatch:
 | 
			
		||||
			return nano::stat::detail::balance_mismatch;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::representative_mismatch:
 | 
			
		||||
			return nano::stat::detail::representative_mismatch;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::block_position:
 | 
			
		||||
			return nano::stat::detail::block_position;
 | 
			
		||||
			break;
 | 
			
		||||
		case process_result::insufficient_work:
 | 
			
		||||
			return nano::stat::detail::insufficient_work;
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	return result;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -7,6 +7,7 @@
 | 
			
		|||
#include <nano/lib/epoch.hpp>
 | 
			
		||||
#include <nano/lib/numbers.hpp>
 | 
			
		||||
#include <nano/lib/rep_weights.hpp>
 | 
			
		||||
#include <nano/lib/stats.hpp>
 | 
			
		||||
#include <nano/lib/utility.hpp>
 | 
			
		||||
 | 
			
		||||
#include <boost/iterator/transform_iterator.hpp>
 | 
			
		||||
| 
						 | 
				
			
			@ -150,19 +151,19 @@ public:
 | 
			
		|||
	endpoint_key () = default;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
     * @param address_a This should be in network byte order
 | 
			
		||||
     * @param port_a This should be in host byte order
 | 
			
		||||
     */
 | 
			
		||||
	 * @param address_a This should be in network byte order
 | 
			
		||||
	 * @param port_a This should be in host byte order
 | 
			
		||||
	 */
 | 
			
		||||
	endpoint_key (std::array<uint8_t, 16> const & address_a, uint16_t port_a);
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
     * @return The ipv6 address in network byte order
 | 
			
		||||
     */
 | 
			
		||||
	 * @return The ipv6 address in network byte order
 | 
			
		||||
	 */
 | 
			
		||||
	std::array<uint8_t, 16> const & address_bytes () const;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
     * @return The port in host byte order
 | 
			
		||||
     */
 | 
			
		||||
	 * @return The port in host byte order
 | 
			
		||||
	 */
 | 
			
		||||
	uint16_t port () const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			@ -370,6 +371,8 @@ enum class tally_result
 | 
			
		|||
	confirm
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
nano::stat::detail to_stat_detail (process_result);
 | 
			
		||||
 | 
			
		||||
class network_params;
 | 
			
		||||
 | 
			
		||||
/** Genesis keys and ledger constants for network variants */
 | 
			
		||||
| 
						 | 
				
			
			@ -496,7 +499,7 @@ enum class confirmation_height_mode
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
/* Holds flags for various cacheable data. For most CLI operations caching is unnecessary
 | 
			
		||||
     * (e.g getting the cemented block count) so it can be disabled for performance reasons. */
 | 
			
		||||
 * (e.g getting the cemented block count) so it can be disabled for performance reasons. */
 | 
			
		||||
class generate_cache
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue