| name | Debugging dubbo-go |
| description | Structured diagnosis for dubbo-go runtime errors. Use when user reports an error, paste logs, mentions timeout/panic/connection refused/no provider, or asks why their dubbo-go service isn't working. |
Debugging dubbo-go
When user shares an error or log, match it to a pattern below. If unclear, ask for:
- Full error message or stack trace
- Registry type (Nacos / ZK / etcd / direct)
- Protocol (Triple / Dubbo / gRPC)
- Whether provider and consumer are separate processes
Error Patterns
"no provider available" / "no route"
Cause: Consumer cannot find provider in registry.
Checklist:
curl "http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=<your-app-name>"
"connection refused" / dial error
Cause: Network or port configuration error.
Checklist:
Serialization / decode error
hessian: failed to decode
protobuf: cannot parse invalid wire-format data
Cause: Provider and consumer using different serialization formats.
Checklist:
Timeout
context deadline exceeded
invoke timeout
Cause: Provider too slow, filter blocking, or network delay.
Checklist:
svc, _ := pb.NewGreetService(cli, client.WithRequestTimeout(10*time.Second))
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
resp, err := svc.Greet(ctx, req)
"filter not found" / filter panic
Cause: Filter imported but not registered, or name string doesn't match what was registered in extension.SetFilter(name, ...).
Checklist:
Provider starts but immediately exits
Cause: Missing srv.Serve() or wrong graceful shutdown setup.
if err := srv.Serve(); err != nil {
panic(err)
}
go srv.Serve()
Reading dubbo-go logs
Enable debug logging to see more detail:
ins, _ := dubbo.NewInstance(
dubbo.WithLogger(logger.WithLevel("debug")),
)
Key log lines to look for:
Registering service: <interface> — service being registered
A provider service ... was registered successfully — provider ready
export <interface> service failed — registration error
No provider available / no route — consumer lookup failed