moremind commented on code in PR #5659:
URL: https://github.com/apache/shenyu/pull/5659#discussion_r1809028133
##########
shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java:
##########
@@ -196,7 +200,43 @@ public String doRegisterURI(final String selectorName,
final List<URIRegisterDTO
}
return ShenyuResultMessage.SUCCESS;
}
-
+
+ @Override
+ public String doHeartbeat(final String selectorName, final
List<URIRegisterDTO> uriList) {
+ if (CollectionUtils.isEmpty(uriList)) {
+ return "";
+ }
+ String pluginName = PluginNameAdapter.rpcTypeAdapter(rpcType());
+ // todo:[To be refactored with namespace] Temporarily hardcode
+ SelectorDO selectorDO =
selectorService.findByNameAndPluginNameAndNamespaceId(selectorName, pluginName,
SYS_DEFAULT_NAMESPACE_ID);
+ if (Objects.isNull(selectorDO)) {
+ throw new ShenyuException("doHeartbeat Failed to execute,wait to
retry.");
+ }
+ // fetch UPSTREAM_MAP data from db
+ //upstreamCheckService.fetchUpstreamData();
+ //update upstream
+ List<URIRegisterDTO> validUriList = uriList.stream().filter(dto ->
Objects.nonNull(dto.getPort()) &&
StringUtils.isNotBlank(dto.getHost())).toList();
+ if (CollectionUtils.isEmpty(validUriList)) {
+ return null;
+ }
+ // discovery publish change event.
+ String selectorId = selectorDO.getId();
+ // change live node status to TRUE
+ validUriList.forEach(uriRegisterDTO -> {
+ DiscoveryUpstreamDTO discoveryUpstreamDTO =
CommonUpstreamUtils.buildDefaultDiscoveryUpstreamDTO(uriRegisterDTO.getHost(),
+ uriRegisterDTO.getPort(),
+ uriRegisterDTO.getProtocol(),
+ uriRegisterDTO.getNamespaceId());
+ LOG.info("change alive selectorId={}|url={}", selectorId,
discoveryUpstreamDTO.getUrl());
+
discoveryUpstreamService.changeStatusBySelectorIdAndUrl(selectorId,
discoveryUpstreamDTO.getUrl(), Boolean.TRUE);
+ });
+
+ DiscoverySyncData discoverySyncData = fetch(selectorId,
selectorDO.getName(), pluginName, SYS_DEFAULT_NAMESPACE_ID);
Review Comment:
same question
##########
shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java:
##########
@@ -196,7 +200,43 @@ public String doRegisterURI(final String selectorName,
final List<URIRegisterDTO
}
return ShenyuResultMessage.SUCCESS;
}
-
+
+ @Override
+ public String doHeartbeat(final String selectorName, final
List<URIRegisterDTO> uriList) {
+ if (CollectionUtils.isEmpty(uriList)) {
+ return "";
+ }
+ String pluginName = PluginNameAdapter.rpcTypeAdapter(rpcType());
+ // todo:[To be refactored with namespace] Temporarily hardcode
+ SelectorDO selectorDO =
selectorService.findByNameAndPluginNameAndNamespaceId(selectorName, pluginName,
SYS_DEFAULT_NAMESPACE_ID);
Review Comment:
use request namespaceId
##########
shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/FallbackShenyuClientRegisterServiceTest.java:
##########
@@ -72,7 +77,12 @@ static class
MockFallbackShenyuClientRegisterServiceException extends FallbackSh
String doRegisterURI(final String selectorName, final
List<URIRegisterDTO> uriList) {
throw new ShenyuException("Exception");
}
-
+
+ @Override
+ String doHeartbeat(final String selectorName, final
List<URIRegisterDTO> uriList) {
+ throw new ShenyuException("Exception");
Review Comment:
why exception?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]