diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc
index 08c956601c393f97792077ba3440c0a6a2ab1044..1ff9ff4b32b695e24ac90e578afcf92f24c2c359 100644
--- a/src/cpp/server/server.cc
+++ b/src/cpp/server/server.cc
@@ -446,8 +446,12 @@ void Server::RunRpc() {
     ScheduleCallback();
     if (ok) {
       SyncRequest::CallData cd(this, mrd);
-      mrd->Request(server_);
-
+      {
+        grpc::unique_lock<grpc::mutex> lock(mu_);
+        if (!shutdown_) {
+          mrd->Request(server_);
+        }
+      }
       cd.Run();
     }
   }