Skip to content

Commit a5ab2d7

Browse files
authored
Merge branch 'alibaba:develop' into develop
2 parents 90b854e + 828acd3 commit a5ab2d7

File tree

107 files changed

+2049
-680
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+2049
-680
lines changed

.github/workflows/pr-e2e-test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ jobs:
171171
ask-config: "${{ secrets.ASK_CONFIG_VIRGINA }}"
172172
test-version: "${{ matrix.version }}"
173173
test-code-git: "https://github.com/nacos-group/nacos-e2e.git"
174-
test-code-branch: "master"
174+
test-code-branch: "main"
175175
test-code-path: "java/nacos-2X"
176176
test-cmd: 'mvn clean test -B'
177177
job-id: ${{ strategy.job-index }}

api/src/main/java/com/alibaba/nacos/api/config/ConfigType.java

+5
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ public enum ConfigType {
5858
*/
5959
YAML("yaml"),
6060

61+
/**
62+
* config type is "toml".
63+
*/
64+
TOML("toml"),
65+
6166
/**
6267
* not a real type.
6368
*/

client/src/main/java/com/alibaba/nacos/client/config/impl/ClientWorker.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -411,17 +411,13 @@ private void decreaseTaskIdCount(int taskId) {
411411

412412
private int calculateTaskId() {
413413
int perTaskSize = (int) ParamUtil.getPerTaskConfigSize();
414-
int taskId = -1;
415414
for (int index = 0; index < taskIdCacheCountList.size(); index++) {
416415
if (taskIdCacheCountList.get(index).get() < perTaskSize) {
417416
return index;
418417
}
419418
}
420-
if (taskId < 0) {
421-
taskIdCacheCountList.add(new AtomicInteger(0));
422-
taskId = taskIdCacheCountList.size() - 1;
423-
}
424-
return taskId;
419+
taskIdCacheCountList.add(new AtomicInteger(0));
420+
return taskIdCacheCountList.size() - 1;
425421
}
426422

427423
public CacheData getCache(String dataId, String group) {

client/src/main/java/com/alibaba/nacos/client/naming/NacosNamingService.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
@SuppressWarnings("PMD.ServiceOrDaoClassShouldEndWithImplRule")
5555
public class NacosNamingService implements NamingService {
5656

57-
private static final String DEFAULT_NAMING_LOG_FILE_PATH = "naming.log";
57+
private static final String DEFAULT_NAMING_LOG_FILE_PATH = "naming.log";
5858

5959
private static final String UP = "UP";
6060

@@ -93,13 +93,14 @@ private void init(Properties properties) throws NacosException {
9393
InitUtils.initSerialization();
9494
InitUtils.initWebRootContext(nacosClientProperties);
9595
initLogName(nacosClientProperties);
96-
96+
9797
this.notifierEventScope = UUID.randomUUID().toString();
9898
this.changeNotifier = new InstancesChangeNotifier(this.notifierEventScope);
9999
NotifyCenter.registerToPublisher(InstancesChangeEvent.class, 16384);
100100
NotifyCenter.registerSubscriber(changeNotifier);
101101
this.serviceInfoHolder = new ServiceInfoHolder(namespace, this.notifierEventScope, nacosClientProperties);
102-
this.clientProxy = new NamingClientProxyDelegate(this.namespace, serviceInfoHolder, nacosClientProperties, changeNotifier);
102+
this.clientProxy = new NamingClientProxyDelegate(this.namespace, serviceInfoHolder, nacosClientProperties,
103+
changeNotifier);
103104
}
104105

105106
private void initLogName(NacosClientProperties properties) {
@@ -241,7 +242,7 @@ public List<Instance> getAllInstances(String serviceName, String groupName, List
241242
serviceInfo = clientProxy.subscribe(serviceName, groupName, clusterString);
242243
}
243244
} else {
244-
serviceInfo = clientProxy.queryInstancesOfService(serviceName, groupName, clusterString, 0, false);
245+
serviceInfo = clientProxy.queryInstancesOfService(serviceName, groupName, clusterString, false);
245246
}
246247
List<Instance> list;
247248
if (serviceInfo == null || CollectionUtils.isEmpty(list = serviceInfo.getHosts())) {
@@ -302,7 +303,7 @@ public List<Instance> selectInstances(String serviceName, String groupName, List
302303
serviceInfo = clientProxy.subscribe(serviceName, groupName, clusterString);
303304
}
304305
} else {
305-
serviceInfo = clientProxy.queryInstancesOfService(serviceName, groupName, clusterString, 0, false);
306+
serviceInfo = clientProxy.queryInstancesOfService(serviceName, groupName, clusterString, false);
306307
}
307308
return selectInstances(serviceInfo, healthy);
308309
}
@@ -373,8 +374,7 @@ public Instance selectOneHealthyInstance(String serviceName, String groupName, L
373374
}
374375
return Balancer.RandomByWeight.selectHost(serviceInfo);
375376
} else {
376-
ServiceInfo serviceInfo = clientProxy
377-
.queryInstancesOfService(serviceName, groupName, clusterString, 0, false);
377+
ServiceInfo serviceInfo = clientProxy.queryInstancesOfService(serviceName, groupName, clusterString, false);
378378
return Balancer.RandomByWeight.selectHost(serviceInfo);
379379
}
380380
}
@@ -467,6 +467,6 @@ public void shutDown() throws NacosException {
467467
serviceInfoHolder.shutdown();
468468
clientProxy.shutdown();
469469
NotifyCenter.deregisterSubscriber(changeNotifier);
470-
470+
471471
}
472472
}

client/src/main/java/com/alibaba/nacos/client/naming/core/ServiceInfoUpdateService.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ private boolean isAsyncQueryForSubscribeService(NacosClientProperties properties
7777
if (properties == null || !properties.containsKey(PropertyKeyConst.NAMING_ASYNC_QUERY_SUBSCRIBE_SERVICE)) {
7878
return false;
7979
}
80-
return ConvertUtils.toBoolean(properties.getProperty(PropertyKeyConst.NAMING_ASYNC_QUERY_SUBSCRIBE_SERVICE), false);
80+
return ConvertUtils.toBoolean(properties.getProperty(PropertyKeyConst.NAMING_ASYNC_QUERY_SUBSCRIBE_SERVICE),
81+
false);
8182
}
8283

8384
private int initPollingThreadCount(NacosClientProperties properties) {
@@ -188,14 +189,14 @@ public void run() {
188189

189190
ServiceInfo serviceObj = serviceInfoHolder.getServiceInfoMap().get(serviceKey);
190191
if (serviceObj == null) {
191-
serviceObj = namingClientProxy.queryInstancesOfService(serviceName, groupName, clusters, 0, false);
192+
serviceObj = namingClientProxy.queryInstancesOfService(serviceName, groupName, clusters, false);
192193
serviceInfoHolder.processServiceInfo(serviceObj);
193194
lastRefTime = serviceObj.getLastRefTime();
194195
return;
195196
}
196197

197198
if (serviceObj.getLastRefTime() <= lastRefTime) {
198-
serviceObj = namingClientProxy.queryInstancesOfService(serviceName, groupName, clusters, 0, false);
199+
serviceObj = namingClientProxy.queryInstancesOfService(serviceName, groupName, clusters, false);
199200
serviceInfoHolder.processServiceInfo(serviceObj);
200201
}
201202
lastRefTime = serviceObj.getLastRefTime();

client/src/main/java/com/alibaba/nacos/client/naming/remote/NamingClientProxy.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,12 @@ public interface NamingClientProxy extends Closeable {
9191
* @param serviceName service name
9292
* @param groupName group name
9393
* @param clusters clusters
94-
* @param udpPort udp port
9594
* @param healthyOnly healthy only
9695
* @return service info
9796
* @throws NacosException nacos exception
9897
*/
99-
ServiceInfo queryInstancesOfService(String serviceName, String groupName, String clusters, int udpPort,
100-
boolean healthyOnly) throws NacosException;
98+
ServiceInfo queryInstancesOfService(String serviceName, String groupName, String clusters, boolean healthyOnly)
99+
throws NacosException;
101100

102101
/**
103102
* Query Service.

client/src/main/java/com/alibaba/nacos/client/naming/remote/NamingClientProxyDelegate.java

+8-9
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public class NamingClientProxyDelegate implements NamingClientProxy {
6565

6666
private ScheduledExecutorService executorService;
6767

68-
public NamingClientProxyDelegate(String namespace, ServiceInfoHolder serviceInfoHolder, NacosClientProperties properties,
69-
InstancesChangeNotifier changeNotifier) throws NacosException {
68+
public NamingClientProxyDelegate(String namespace, ServiceInfoHolder serviceInfoHolder,
69+
NacosClientProperties properties, InstancesChangeNotifier changeNotifier) throws NacosException {
7070
this.serviceInfoUpdateService = new ServiceInfoUpdateService(properties, serviceInfoHolder, this,
7171
changeNotifier);
7272
this.serverListManager = new ServerListManager(properties, namespace);
@@ -88,9 +88,8 @@ private void initSecurityProxy(NacosClientProperties properties) {
8888
});
8989
final Properties nacosClientPropertiesView = properties.asProperties();
9090
this.securityProxy.login(nacosClientPropertiesView);
91-
this.executorService
92-
.scheduleWithFixedDelay(() -> securityProxy.login(nacosClientPropertiesView), 0, SECURITY_INFO_REFRESH_INTERVAL_MILLS,
93-
TimeUnit.MILLISECONDS);
91+
this.executorService.scheduleWithFixedDelay(() -> securityProxy.login(nacosClientPropertiesView), 0,
92+
SECURITY_INFO_REFRESH_INTERVAL_MILLS, TimeUnit.MILLISECONDS);
9493
}
9594

9695
@Override
@@ -131,9 +130,9 @@ public void updateInstance(String serviceName, String groupName, Instance instan
131130
}
132131

133132
@Override
134-
public ServiceInfo queryInstancesOfService(String serviceName, String groupName, String clusters, int udpPort,
133+
public ServiceInfo queryInstancesOfService(String serviceName, String groupName, String clusters,
135134
boolean healthyOnly) throws NacosException {
136-
return grpcClientProxy.queryInstancesOfService(serviceName, groupName, clusters, udpPort, healthyOnly);
135+
return grpcClientProxy.queryInstancesOfService(serviceName, groupName, clusters, healthyOnly);
137136
}
138137

139138
@Override
@@ -178,8 +177,8 @@ public ServiceInfo subscribe(String serviceName, String groupName, String cluste
178177

179178
@Override
180179
public void unsubscribe(String serviceName, String groupName, String clusters) throws NacosException {
181-
NAMING_LOGGER
182-
.debug("[UNSUBSCRIBE-SERVICE] service:{}, group:{}, cluster:{} ", serviceName, groupName, clusters);
180+
NAMING_LOGGER.debug("[UNSUBSCRIBE-SERVICE] service:{}, group:{}, cluster:{} ", serviceName, groupName,
181+
clusters);
183182
serviceInfoUpdateService.stopUpdateIfContain(serviceName, groupName, clusters);
184183
grpcClientProxy.unsubscribe(serviceName, groupName, clusters);
185184
}

client/src/main/java/com/alibaba/nacos/client/naming/remote/gprc/NamingGrpcClientProxy.java

+22-12
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@
5454
import com.alibaba.nacos.common.remote.ConnectionType;
5555
import com.alibaba.nacos.common.remote.client.RpcClient;
5656
import com.alibaba.nacos.common.remote.client.RpcClientFactory;
57-
import com.alibaba.nacos.common.remote.client.ServerListFactory;
5857
import com.alibaba.nacos.common.remote.client.RpcClientTlsConfig;
58+
import com.alibaba.nacos.common.remote.client.ServerListFactory;
5959
import com.alibaba.nacos.common.utils.CollectionUtils;
6060
import com.alibaba.nacos.common.utils.JacksonUtils;
6161

@@ -139,8 +139,10 @@ public void batchRegisterService(String serviceName, String groupName, List<Inst
139139
@Override
140140
public void batchDeregisterService(String serviceName, String groupName, List<Instance> instances)
141141
throws NacosException {
142-
List<Instance> retainInstance = getRetainInstance(serviceName, groupName, instances);
143-
batchRegisterService(serviceName, groupName, retainInstance);
142+
synchronized (redoService.getRegisteredInstances()) {
143+
List<Instance> retainInstance = getRetainInstance(serviceName, groupName, instances);
144+
batchRegisterService(serviceName, groupName, retainInstance);
145+
}
144146
}
145147

146148
/**
@@ -218,11 +220,20 @@ public void doRegisterService(String serviceName, String groupName, Instance ins
218220

219221
@Override
220222
public void deregisterService(String serviceName, String groupName, Instance instance) throws NacosException {
221-
NAMING_LOGGER
222-
.info("[DEREGISTER-SERVICE] {} deregistering service {} with instance: {}", namespaceId, serviceName,
223-
instance);
224-
redoService.instanceDeregister(serviceName, groupName);
225-
doDeregisterService(serviceName, groupName, instance);
223+
NAMING_LOGGER.info("[DEREGISTER-SERVICE] {} deregistering service {} with instance: {}", namespaceId,
224+
serviceName, instance);
225+
String key = NamingUtils.getGroupedName(serviceName, groupName);
226+
InstanceRedoData instanceRedoData = redoService.getRegisteredInstancesByKey(key);
227+
if (instanceRedoData instanceof BatchInstanceRedoData) {
228+
List<Instance> instances = new ArrayList<>();
229+
if (null != instance) {
230+
instances.add(instance);
231+
}
232+
batchDeregisterService(serviceName, groupName, instances);
233+
} else {
234+
redoService.instanceDeregister(serviceName, groupName);
235+
doDeregisterService(serviceName, groupName, instance);
236+
}
226237
}
227238

228239
/**
@@ -246,12 +257,11 @@ public void updateInstance(String serviceName, String groupName, Instance instan
246257
}
247258

248259
@Override
249-
public ServiceInfo queryInstancesOfService(String serviceName, String groupName, String clusters, int udpPort,
260+
public ServiceInfo queryInstancesOfService(String serviceName, String groupName, String clusters,
250261
boolean healthyOnly) throws NacosException {
251262
ServiceQueryRequest request = new ServiceQueryRequest(namespaceId, serviceName, groupName);
252263
request.setCluster(clusters);
253264
request.setHealthyOnly(healthyOnly);
254-
request.setUdpPort(udpPort);
255265
QueryServiceResponse response = requestToServer(request, QueryServiceResponse.class);
256266
return response.getServiceInfo();
257267
}
@@ -321,8 +331,8 @@ public ServiceInfo doSubscribe(String serviceName, String groupName, String clus
321331
@Override
322332
public void unsubscribe(String serviceName, String groupName, String clusters) throws NacosException {
323333
if (NAMING_LOGGER.isDebugEnabled()) {
324-
NAMING_LOGGER
325-
.debug("[GRPC-UNSUBSCRIBE] service:{}, group:{}, cluster:{} ", serviceName, groupName, clusters);
334+
NAMING_LOGGER.debug("[GRPC-UNSUBSCRIBE] service:{}, group:{}, cluster:{} ", serviceName, groupName,
335+
clusters);
326336
}
327337
redoService.subscriberDeregister(serviceName, groupName, clusters);
328338
doUnsubscribe(serviceName, groupName, clusters);

client/src/main/java/com/alibaba/nacos/client/naming/remote/gprc/redo/NamingGrpcRedoService.java

+4
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ public NamingGrpcRedoService(NamingGrpcClientProxy clientProxy) {
6868
DEFAULT_REDO_DELAY, TimeUnit.MILLISECONDS);
6969
}
7070

71+
public ConcurrentMap<String, InstanceRedoData> getRegisteredInstances() {
72+
return registeredInstances;
73+
}
74+
7175
public boolean isConnected() {
7276
return connected;
7377
}

client/src/main/java/com/alibaba/nacos/client/naming/remote/http/NamingHttpClientProxy.java

+11-26
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import com.alibaba.nacos.api.selector.AbstractSelector;
2929
import com.alibaba.nacos.api.selector.ExpressionSelector;
3030
import com.alibaba.nacos.api.selector.SelectorType;
31-
import com.alibaba.nacos.api.utils.NetUtils;
3231
import com.alibaba.nacos.client.env.NacosClientProperties;
3332
import com.alibaba.nacos.client.monitor.MetricsMonitor;
3433
import com.alibaba.nacos.client.naming.core.ServerListManager;
@@ -93,8 +92,6 @@ public class NamingHttpClientProxy extends AbstractNamingClientProxy {
9392

9493
private static final String CLUSTERS_PARAM = "clusters";
9594

96-
private static final String UDP_PORT_PARAM = "udpPort";
97-
9895
private static final String CLIENT_IP_PARAM = "clientIP";
9996

10097
private static final String HEALTHY_ONLY_PARAM = "healthyOnly";
@@ -160,17 +157,15 @@ public void batchRegisterService(String serviceName, String groupName, List<Inst
160157
}
161158

162159
@Override
163-
public void batchDeregisterService(String serviceName, String groupName, List<Instance> instances)
164-
throws NacosException {
160+
public void batchDeregisterService(String serviceName, String groupName, List<Instance> instances) {
165161
throw new UnsupportedOperationException(
166162
"Do not support persistent instances to perform batch de registration methods.");
167163
}
168164

169165
@Override
170166
public void deregisterService(String serviceName, String groupName, Instance instance) throws NacosException {
171-
NAMING_LOGGER
172-
.info("[DEREGISTER-SERVICE] {} deregistering service {} with instance: {}", namespaceId, serviceName,
173-
instance);
167+
NAMING_LOGGER.info("[DEREGISTER-SERVICE] {} deregistering service {} with instance: {}", namespaceId,
168+
serviceName, instance);
174169
if (instance.isEphemeral()) {
175170
return;
176171
}
@@ -187,8 +182,8 @@ public void deregisterService(String serviceName, String groupName, Instance ins
187182

188183
@Override
189184
public void updateInstance(String serviceName, String groupName, Instance instance) throws NacosException {
190-
NAMING_LOGGER
191-
.info("[UPDATE-SERVICE] {} update service {} with instance: {}", namespaceId, serviceName, instance);
185+
NAMING_LOGGER.info("[UPDATE-SERVICE] {} update service {} with instance: {}", namespaceId, serviceName,
186+
instance);
192187

193188
final Map<String, String> params = new HashMap<>(32);
194189
params.put(CommonParams.NAMESPACE_ID, namespaceId);
@@ -206,20 +201,10 @@ public void updateInstance(String serviceName, String groupName, Instance instan
206201
}
207202

208203
@Override
209-
public ServiceInfo queryInstancesOfService(String serviceName, String groupName, String clusters, int udpPort,
210-
boolean healthyOnly) throws NacosException {
211-
final Map<String, String> params = new HashMap<>(16);
212-
params.put(CommonParams.NAMESPACE_ID, namespaceId);
213-
params.put(CommonParams.SERVICE_NAME, NamingUtils.getGroupedName(serviceName, groupName));
214-
params.put(CLUSTERS_PARAM, clusters);
215-
params.put(UDP_PORT_PARAM, String.valueOf(udpPort));
216-
params.put(CLIENT_IP_PARAM, NetUtils.localIP());
217-
params.put(HEALTHY_ONLY_PARAM, String.valueOf(healthyOnly));
218-
String result = reqApi(UtilAndComs.nacosUrlBase + "/instance/list", params, HttpMethod.GET);
219-
if (StringUtils.isNotEmpty(result)) {
220-
return JacksonUtils.toObj(result, ServiceInfo.class);
221-
}
222-
return new ServiceInfo(NamingUtils.getGroupedName(serviceName, groupName), clusters);
204+
public ServiceInfo queryInstancesOfService(String serviceName, String groupName, String clusters,
205+
boolean healthyOnly) {
206+
throw new UnsupportedOperationException(
207+
"Do not support query instance by http client,please use gRPC replaced.");
223208
}
224209

225210
@Override
@@ -442,8 +427,8 @@ public String callServer(String api, Map<String, String> params, Map<String, Str
442427
url = NamingHttpClientManager.getInstance().getPrefix() + curServer + api;
443428
}
444429
try {
445-
HttpRestResult<String> restResult = nacosRestTemplate
446-
.exchangeForm(url, header, Query.newInstance().initParams(params), body, method, String.class);
430+
HttpRestResult<String> restResult = nacosRestTemplate.exchangeForm(url, header,
431+
Query.newInstance().initParams(params), body, method, String.class);
447432
end = System.currentTimeMillis();
448433

449434
MetricsMonitor.getNamingRequestMonitor(method, url, String.valueOf(restResult.getCode()))

0 commit comments

Comments
 (0)