geektutu/7days-golang · error

rpc server: can't find method

Error message

rpc server: can't find method 

What it means

Method lookup failure in findService: the service exists in serviceMap but the method name (after the dot) has no entry in svc.method, so the requested exported RPC method is not exposed by that service. It fires for misspelled method names or methods failing the RPC signature rules.

Source

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

	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 {
		return req, err
	}
	req.argv = req.mtype.newArgv()
	req.replyv = req.mtype.newReplyv()

	// make sure that argvi is a pointer, ReadBody need a pointer as parameter

View on GitHub (pinned to cf36443821)

Solutions

  1. Check the method name spelling in the client's serviceMethod string.
  2. Ensure the method satisfies the RPC rules: exported, two exported args (second a pointer), one error return — otherwise it is not registered.
  3. List the service's registered methods to confirm the method was published.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at gee-rpc/day3-service/server.go:122 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/d4da3fde9418c52d. Report an issue: GitHub.