Skip to content

Commit 829e115

Browse files
authored
Cluster grpc request add server identity info. (#12851)
1 parent f425ef5 commit 829e115

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

core/src/main/java/com/alibaba/nacos/core/cluster/remote/ClusterRpcClientProxy.java

+19-4
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,22 @@
2121
import com.alibaba.nacos.api.remote.RequestCallBack;
2222
import com.alibaba.nacos.api.remote.request.Request;
2323
import com.alibaba.nacos.api.remote.response.Response;
24+
import com.alibaba.nacos.auth.config.AuthConfigs;
2425
import com.alibaba.nacos.common.notify.NotifyCenter;
2526
import com.alibaba.nacos.common.remote.ConnectionType;
2627
import com.alibaba.nacos.common.remote.client.RpcClient;
2728
import com.alibaba.nacos.common.remote.client.RpcClientFactory;
2829
import com.alibaba.nacos.common.remote.client.RpcClientTlsConfig;
29-
import com.alibaba.nacos.common.remote.client.ServerListFactory;
3030
import com.alibaba.nacos.common.remote.client.RpcClientTlsConfigFactory;
31+
import com.alibaba.nacos.common.remote.client.ServerListFactory;
3132
import com.alibaba.nacos.common.utils.CollectionUtils;
33+
import com.alibaba.nacos.common.utils.StringUtils;
3234
import com.alibaba.nacos.core.cluster.Member;
3335
import com.alibaba.nacos.core.cluster.MemberChangeListener;
3436
import com.alibaba.nacos.core.cluster.MembersChangeEvent;
3537
import com.alibaba.nacos.core.cluster.ServerMemberManager;
3638
import com.alibaba.nacos.core.utils.Loggers;
3739
import com.alibaba.nacos.sys.env.EnvUtil;
38-
import org.springframework.beans.factory.annotation.Autowired;
3940
import org.springframework.stereotype.Service;
4041

4142
import javax.annotation.PostConstruct;
@@ -60,8 +61,14 @@ public class ClusterRpcClientProxy extends MemberChangeListener {
6061

6162
private static final long DEFAULT_REQUEST_TIME_OUT = 3000L;
6263

63-
@Autowired
64-
ServerMemberManager serverMemberManager;
64+
final ServerMemberManager serverMemberManager;
65+
66+
final AuthConfigs authConfigs;
67+
68+
public ClusterRpcClientProxy(ServerMemberManager serverMemberManager, AuthConfigs authConfigs) {
69+
this.serverMemberManager = serverMemberManager;
70+
this.authConfigs = authConfigs;
71+
}
6572

6673
/**
6774
* init after constructor.
@@ -184,6 +191,7 @@ public Response sendRequest(Member member, Request request) throws NacosExceptio
184191
public Response sendRequest(Member member, Request request, long timeoutMills) throws NacosException {
185192
RpcClient client = RpcClientFactory.getClient(memberClientKey(member));
186193
if (client != null) {
194+
injectorServerIdentity(request);
187195
return client.request(request, timeoutMills);
188196
} else {
189197
throw new NacosException(CLIENT_INVALID_PARAM, "No rpc client related to member: " + member);
@@ -201,6 +209,7 @@ public Response sendRequest(Member member, Request request, long timeoutMills) t
201209
public void asyncRequest(Member member, Request request, RequestCallBack callBack) throws NacosException {
202210
RpcClient client = RpcClientFactory.getClient(memberClientKey(member));
203211
if (client != null) {
212+
injectorServerIdentity(request);
204213
client.asyncRequest(request, callBack);
205214
} else {
206215
throw new NacosException(CLIENT_INVALID_PARAM, "No rpc client related to member: " + member);
@@ -243,4 +252,10 @@ public boolean isRunning(Member member) {
243252
}
244253
return client.isRunning();
245254
}
255+
256+
private void injectorServerIdentity(Request request) {
257+
if (StringUtils.isNotBlank(authConfigs.getServerIdentityKey())) {
258+
request.putHeader(authConfigs.getServerIdentityKey(), authConfigs.getServerIdentityValue());
259+
}
260+
}
246261
}

core/src/test/java/com/alibaba/nacos/core/cluster/remote/ClusterRpcClientProxyTest.java

+6
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.alibaba.nacos.api.remote.ability.ServerRemoteAbility;
2424
import com.alibaba.nacos.api.remote.request.HealthCheckRequest;
2525
import com.alibaba.nacos.api.remote.response.Response;
26+
import com.alibaba.nacos.auth.config.AuthConfigs;
2627
import com.alibaba.nacos.common.remote.ConnectionType;
2728
import com.alibaba.nacos.common.remote.client.RpcClient;
2829
import com.alibaba.nacos.common.remote.client.RpcClientFactory;
@@ -69,6 +70,9 @@ class ClusterRpcClientProxyTest {
6970
@Mock
7071
private ServerMemberManager serverMemberManager;
7172

73+
@Mock
74+
private AuthConfigs authConfigs;
75+
7276
@Mock
7377
private RpcClient client;
7478

@@ -96,6 +100,8 @@ void setUp() throws NacosException {
96100
clientMap.remove("Cluster-" + member.getAddress()).shutdown();
97101
clientMap.put("Cluster-" + member.getAddress(), client);
98102
when(client.getConnectionType()).thenReturn(ConnectionType.GRPC);
103+
when(authConfigs.getServerIdentityKey()).thenReturn("MockIdentityKey");
104+
when(authConfigs.getServerIdentityValue()).thenReturn("MockIdentityValue");
99105
}
100106

101107
@Test

0 commit comments

Comments
 (0)