Skip to main content

Issue Reporting Guide

This guide provides a structured approach to reporting issues and requesting features for NEAR nodes. Following these steps helps ensure your reports are processed efficiently and receive appropriate attention.

Before You Report

1. Check Existing Issues

Before creating a new report, search for similar issues:

  • GitHub Issues: Check the nearcore repository for existing bug reports or feature requests
  • Documentation: Review the troubleshooting guide for common solutions
  • Community Channels: Search through community discussions for similar problems

2. Try Community Support

For immediate help, try these channels in order:

  1. Telegram: Join the @near_validators chat for fast community support
  2. Zulip: Visit the community support channel

How to Report Issues

Bug Reports

For node operation issues, follow this process:

Step 1: Gather Information

Before reporting, collect the following:

  • Node version: near --version
  • Operating system: OS type and version
  • Hardware specs: CPU, RAM, storage details
  • Network: Mainnet, testnet, or localnet
  • Node type: Validator, RPC, archival, indexer
  • Configuration: Relevant config files (remove sensitive data)
  • Debug Information: See next section.

Step 2: Collect Debug Information

To enable effective troubleshooting, gather comprehensive system diagnostics: The commands below will compile system data, logs, and configuration files into a designated directory. This diagnostic package can be provided to the NEAR team to facilitate faster issue identification and resolution.

Setup Debug Collection:

These are a couple of variables to make the command execution easier.

# Set your paths
DEBUG_INFO=<path to the folder where all the debug files will be dumped>
NEAR_HOME=<path to your neard home directory, typically ~/.near>
NEARD_BIN_PATH=<path to your neard binary>
NEARD="$NEARD_BIN_PATH --home $NEAR_HOME"

# Create debug folder
mkdir -p $DEBUG_INFO

Configuration Files:

# Copy configuration
cp $NEAR_HOME/config.json $DEBUG_INFO/config.json

# Get running configuration (requires debug RPC enabled)
# Set rpc.enable_debug_rpc = true in config.json first
curl -s "http://localhost:3030/debug/client_config" > $DEBUG_INFO/running_config.json

Enhanced Logging: Enable detailed logging by modifying log_config.json in $NEAR_HOME

cat > $NEAR_HOME/log_config.json << EOF
{
"opentelemetry": "info",
"rust_log": "debug",
"verbose_module": null
}
EOF

# If neard is running, signal it to pick up new log config
sudo kill -s SIGHUP $(pidof neard)

# Collect relevant logs around the time the issue occurred.

Database Information:

# Node version and database state
$NEARD -V > $DEBUG_INFO/neard_version.txt

# Database column scan (works for any node type)
$NEARD view-state scan-db-column --column BlockMisc > $DEBUG_INFO/neard_view-state_scan-db-column_BlockMisc.txt

# For archival nodes
$NEARD cold-store head > $DEBUG_INFO/neard_cold-store_head.txt

Metrics Collection:

Query the neard binary for metrics. The following script will help you automate this by sending a request every 10 seconds.

Save this as collect_metrics.sh and execute ./collect_metrics.sh -e http://localhost:3030/metrics -o $DEBUG_INFO -n 6 while the node is running.

#!/bin/bash

# Default values
ENDPOINT="http://localhost:3030/metrics"
OUTDIR=$(mktemp -d -t metrics_XXXX)
NUM_SAMPLES=-1

usage() {
echo "Usage: $0 [-e endpoint] [-o outputdir] [-n number_of_samples]"
echo " -e Metrics endpoint (default: http://localhost:3030/metrics)"
echo " -o Output directory (default: temp directory)"
echo " -n Number of samples to collect (default: infinite)"
}

# Parse options
while getopts "e:o:n:h" opt; do
case $opt in
e) ENDPOINT="$OPTARG" ;;
o) OUTDIR="$OPTARG/metrics" ;;
n) NUM_SAMPLES="$OPTARG" ;;
h) usage; exit 0 ;;
*) usage; exit 1 ;;
esac
done

mkdir -p "$OUTDIR"
echo "Output directory: $OUTDIR"

collect() {
TIMESTAMP=$(date -u +"%Y%m%d_%H%M%S_UTC")
curl -s "$ENDPOINT" > "$OUTDIR/metrics_$TIMESTAMP.txt"
}

COUNT=0
while [[ $NUM_SAMPLES -lt 0 || $COUNT -lt $NUM_SAMPLES ]]; do
collect
((COUNT++))
echo "Samples collection, iteration #$COUNT."
if [[ $NUM_SAMPLES -lt 0 || $COUNT -lt $NUM_SAMPLES ]]; then
echo -n " Waiting 10s..."
sleep 10
fi
done

Collecting multiple samples provides better insight into node behavior, but for a quick snapshot, use this single command:

# Single metrics snapshot
curl -s "http://localhost:3030/metrics" > $DEBUG_INFO/metrics_$(date -u +"%Y%m%d_%H%M%S_UTC").txt

Archive and Submit:

# Create compressed archive
zip -r -9 debug_info.zip $DEBUG_INFO

Step 4: GitHub Issue

Create the GitHub issue and attach the relevant data.

Feature Requests

For new features or enhancements:

Step 1: Create GitHub Issue

Submit your feature request at: https://github.com/near/nearcore/issues

Step 2: Provide Details

Include the following information:

  • Problem description: What problem does this feature solve?
  • Proposed solution: How should the feature work?
  • Use case: Who would benefit from this feature?
  • Priority: Why is this important for the community?

Step 3: Review Process

Your request will be:

  • Reviewed by the NEAR team
  • Prioritized based on community impact and development resources

Getting Help

Quick Help

For immediate assistance, try the community channels first. The @near_validators Telegram chat is particularly active and helpful for node operation issues.

Community Resources

Best Practices

Do's

  • ✅ Search for existing issues before creating new ones
  • ✅ Provide detailed, reproducible steps
  • ✅ Include relevant logs and configuration
  • ✅ Use clear, descriptive titles
  • ✅ Be patient - the team reviews all submissions

Don'ts

  • ❌ Report the same issue multiple times
  • ❌ Include sensitive information (private keys, passwords)
  • ❌ Submit vague or incomplete reports
  • ❌ Expect immediate responses for non-critical issues

Tip

The NEAR team actively monitors all channels and appreciates community feedback. Your reports help improve the node experience for everyone!