| name | neumann-troubleshoot |
| description | Debug and troubleshoot Neumann issues. Use when encountering errors, performance problems, cluster issues, or unexpected query results. |
Neumann Troubleshooting Guide
Parse Errors
Parse errors are the most common issue. The parser is strict and error messages
point to the exact token that failed.
Reserved keyword collision
Neumann has 150+ reserved keywords. If a column name, node label, or edge type
collides with a keyword, you get a parse error.
Symptoms: expected identifier, found keyword 'NODE' or similar.
Fix: Rename the identifier. Common collisions: node, edge, path, type,
status, key, value, name, index, limit, order, group, select,
table, set, delete, create, drop, insert, update.
NODE CREATE node { ... }
NODE CREATE nd { ... }
CREATE TABLE status (...)
CREATE TABLE user_status (...)
Unquoted keys with special characters
The parser splits tokens on :, -, and other punctuation.
EMBED STORE 'doc:1' [0.1, 0.2]
EMBED STORE doc:1 [0.1, 0.2]
NODE GET 'node-abc'
NODE GET node-abc
Wrong direction keywords
The parser only accepts OUTGOING, INCOMING, BOTH.
NEIGHBORS 'n1' OUTGOING
NEIGHBORS 'n1' OUT
NEIGHBORS 'n1' IN
Wrong SIMILAR syntax
SIMILAR [0.1, 0.2] LIMIT 5
SIMILAR TO [0.1, 0.2] LIMIT 5
SIMILAR [0.1, 0.2] BY COSINE
Missing property block braces
NODE CREATE person { name: 'Alice' }
NODE CREATE person name: 'Alice'
Wrong property separator
NODE CREATE person { name: 'Alice', age: 30 }
NODE CREATE person { name = 'Alice' }
Edge creation syntax
EDGE CREATE 'a' -> 'b' : knows
EDGE CREATE 'a' 'b' knows
EDGE CREATE (a)-[:knows]->(b)
Connection Issues
Port assignments
| Service | Default Port | Protocol |
|---|
| gRPC API | 9200 | HTTP/2 (gRPC) |
| Raft consensus | 9300 | TCP (length-prefixed frames) |
Port conflict
Symptom: Address already in use on startup.
Fix: Check what is using the port:
lsof -i :9200
lsof -i :9300
Kill the conflicting process or change the Neumann bind address via
NEUMANN_BIND_ADDR environment variable.
Health check
grpcurl -plaintext localhost:9200 grpc.health.v1.Health/Check
Expected response: { "status": "SERVING" }.
TLS issues
If TLS is enabled, use the correct certificate:
grpcurl -cacert ca.pem -cert client.pem -key client-key.pem localhost:9200 grpc.health.v1.Health/Check
Authentication
If API key authentication is enabled, include the key in metadata:
grpcurl -plaintext -H 'authorization: Bearer <api-key>' localhost:9200 neumann.QueryService/Query
Performance Issues
Slow queries
Check for missing indexes:
DESCRIBE users
SHOW TABLES
SHOW VECTOR INDEX
GRAPH INDEX SHOW NODE
GRAPH INDEX SHOW EDGE
Common fixes:
- Relational:
CREATE INDEX idx_name ON table (column)
- Vector:
EMBED BUILD INDEX (must be run after inserts)
- Graph:
GRAPH INDEX CREATE NODE PROPERTY prop_name
Slow SIMILAR queries
If SIMILAR is slow, the HNSW index likely was not built or is stale:
SHOW VECTOR INDEX
EMBED BUILD INDEX
High memory usage
Check embedding count -- each embedding consumes memory proportional to its
dimensionality:
COUNT EMBEDDINGS
Check node/edge counts:
GRAPH AGGREGATE COUNT NODES
GRAPH AGGREGATE COUNT EDGES
Large result sets
Always use LIMIT to bound result sizes:
SIMILAR [0.1, 0.2] LIMIT 10
NODE LIST person LIMIT 100
SELECT * FROM users LIMIT 1000
Cluster Issues
Split brain
Symptom: Two nodes both claim to be leader, or queries return different results
depending on which node is queried.
Diagnose:
CLUSTER STATUS
CLUSTER LEADER
CLUSTER NODES
Compare commit indices across nodes. The node with the higher commit index has
more up-to-date data. The other node likely lost connectivity and elected itself.
Fix: Restart the minority-side node. It will rejoin the cluster and
replicate from the true leader.
Leader election timeout
Symptom: CLUSTER LEADER returns no leader or times out.
Causes:
- Network partition between nodes.
- All nodes started simultaneously (election collision). Wait for randomized
timeout to resolve.
- Fewer than quorum nodes are reachable.
Quorum requirements:
| Cluster Size | Quorum | Can Tolerate Failures |
|---|
| 3 | 2 | 1 |
| 5 | 3 | 2 |
| 7 | 4 | 3 |
Replication lag
Symptom: Writes on the leader are not immediately visible on followers.
This is normal in an eventually-consistent read path. For strong consistency,
read from the leader. For followers, wait briefly or verify via:
CLUSTER STATUS
Check that commit_index on followers is close to the leader's.
Node won't join cluster
Verify:
NEUMANN_CLUSTER_PEERS includes all peer addresses in node_id=IP:port format.
NEUMANN_CLUSTER_NODE_ID is unique across all nodes.
- Port 9300 is reachable between all nodes (Raft transport).
- All nodes are running the same Neumann version.
Data Issues
Missing data
Check you are querying the right engine:
- Relational data:
SELECT * FROM table WHERE ...
- Graph data:
NODE GET 'id' or NODE LIST label
- Vector data:
EMBED GET 'key'
- Unified data:
ENTITY GET 'key'
A common mistake is inserting into one engine and querying another.
Data integrity verification
CHAIN VERIFY
BLOB VERIFY 'blob-id'
Recovery from checkpoints
CHECKPOINTS
CHECKPOINTS LIMIT 5
ROLLBACK TO 'checkpoint-id'
WAL corruption
If the write-ahead log is corrupted, start Neumann with a fresh WAL directory.
Data persisted in checkpoints is still recoverable via ROLLBACK TO.
Debug Logging
Set the RUST_LOG environment variable to control log verbosity.
Levels: error, warn, info, debug, trace.
RUST_LOG=info neumann
RUST_LOG=query_router=debug neumann
RUST_LOG=tensor_chain=debug,query_router=trace,tensor_store=info neumann
RUST_LOG=trace neumann
Useful module targets for debugging:
query_router -- query parsing and routing
tensor_chain -- Raft consensus and chain operations
tensor_store -- storage operations
vector_engine -- HNSW index and similarity search
graph_engine -- graph traversal and algorithms
neumann_server -- gRPC request handling
Getting Help
When filing an issue, include:
- Neumann version (from startup banner or
--version).
- Operating system and architecture.
- The exact query that failed and the full error message.
- Relevant log output (set
RUST_LOG=debug to capture details).
- Cluster configuration if applicable (node count, network topology).
- Steps to reproduce the issue from a fresh state.