geektutu/7days-golang · error

rpc server: can't find service

Error message

rpc server: can't find service 

What it means

Registry lookup failure in findService: the service name parsed from "Service.Method" (before the dot) is not present in the server's serviceMap, meaning no such service was Register()ed on this server. It fires for requests targeting unregistered or misspelled services.

Source

Thrown at gee-rpc/day3-service/server.go:116

	if err := cc.ReadHeader(&h); err != nil {
		if err != io.EOF && err != io.ErrUnexpectedEOF {
			log.Println("rpc server: read header error:", err)
		}
		return nil, err
	}
	return &h, nil
}

func (server *Server) findService(serviceMethod string) (svc *service, mtype *methodType, err error) {
	dot := strings.LastIndex(serviceMethod, ".")
	if dot < 0 {
		err = errors.New("rpc server: service/method request ill-formed: " + serviceMethod)
		return
	}
	serviceName, methodName := serviceMethod[:dot], serviceMethod[dot+1:]
	svci, ok := server.serviceMap.Load(serviceName)
	if !ok {
		err = errors.New("rpc server: can't find service " + serviceName)
		return
	}
	svc = svci.(*service)
	mtype = svc.method[methodName]
	if mtype == nil {
		err = errors.New("rpc server: can't find method " + methodName)
	}
	return
}

func (server *Server) readRequest(cc codec.Codec) (*request, error) {
	h, err := server.readRequestHeader(cc)
	if err != nil {
		return nil, err
	}
	req := &request{h: h}
	req.svc, req.mtype, err = server.findService(h.ServiceMethod)
	if err != nil {

View on GitHub (pinned to cf36443821)

Solutions

  1. Register the service on the server before serving: server.Register(new(DemoService)).
  2. Verify the service name string used by the client matches the registered receiver's type name.
  3. Check that the client connected to the server that actually hosts the service.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at gee-rpc/day3-service/server.go:116 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of geektutu/7days-golang@cf36443821 (2026-09-03). Data as JSON: /api/errors/0a13eb22c4d6c29d. Report an issue: GitHub.