diff --git a/protocol/invocation/rpcinvocation.go b/protocol/invocation/rpcinvocation.go
index b8b5b509702ea5ee62df83eb55bf7f1c86625b26..953d50ca46d3e5613655720affdab9bfd7ae9a67 100644
--- a/protocol/invocation/rpcinvocation.go
+++ b/protocol/invocation/rpcinvocation.go
@@ -157,6 +157,8 @@ func (r *RPCInvocation) Invoker() protocol.Invoker {
 
 // nolint
 func (r *RPCInvocation) SetInvoker(invoker protocol.Invoker) {
+	r.lock.Lock()
+	defer r.lock.Unlock()
 	r.invoker = invoker
 }