This is an automated email from the ASF dual-hosted git repository.
jackxu2011 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/linkis.git
The following commit(s) were added to refs/heads/master by this push:
new f876a73264 Spring cloud version upgraded, loadBalancer replaced ribbon
(#4958)
f876a73264 is described below
commit f876a73264fb88e82be0d811529b69b187ed7b4b
Author: ChengJie1053 <[email protected]>
AuthorDate: Fri Mar 15 10:34:34 2024 +0800
Spring cloud version upgraded, loadBalancer replaced ribbon (#4958)
* Spring cloud version upgraded and loadBalancer replaced ribbon
* Modifying the spring cloud gateway
* optimize code
* Modifying linkis rpc
* Optimized code linkis rpc module
* Modify known-dependencies.txt
* Modify RPCReceiveRemote
* Add EurekaClientCacheManualRefresher
* Move the loadbalancer module
* optimize ServiceInstancePriorityLoadBalancer
* Modify application-engineconn.yml
* Temporarily hide the gateway test case
* Unhide test cases
* Modify application.yml
* Modify configmap-linkis-config.yaml
* add application.yml
* Merge the latest code and resolve conflicts
* using commons-lang3 ExceptionUtils instead of commons-lang and remove
useless code
* Eureka refresh is called via reflection instead
* common-lang relies on eureka-client, replacing common-lang with
common-lang3
* Compatible with nacos
* add nacos refresher
---------
Co-authored-by: peacewong <[email protected]>
---
linkis-commons/linkis-module/pom.xml | 4 +
.../apache/linkis/DataWorkCloudApplication.java | 2 +
.../linkis/swagger/SwaggerBeanPostProcessor.java | 65 ++++++++
linkis-commons/linkis-rpc/pom.xml | 9 ++
.../linkis/rpc/conf/CacheManualRefresher.java} | 18 +--
.../apache/linkis/rpc/conf/DynamicFeignClient.java | 126 +++++++++++++++
.../rpc/conf/EurekaClientCacheManualRefresher.java | 118 ++++++++++++++
.../linkis/rpc/conf/FeignRequestInterceptor.java | 64 ++++++++
.../rpc/conf/NacosClientCacheManualRefresher.java} | 34 ++--
.../apache/linkis/rpc/constant/RpcConstant.java} | 18 +--
.../rpc/errorcode/LinkisRpcErrorCodeSummary.java | 2 +
.../GatewayLoadBalancerConfiguration.java} | 19 +--
.../LinkisLoadBalancerClientConfiguration.java | 39 +++++
.../ServiceInstancePriorityLoadBalancer.java | 171 +++++++++++++++++++++
.../message/utils/LoadBalancerOptionsUtils.java | 44 ------
.../org/apache/linkis/rpc/BaseRPCSender.scala | 49 ++++--
.../org/apache/linkis/rpc/RPCReceiveRemote.scala | 15 +-
.../org/apache/linkis/rpc/RPCSpringBeanCache.scala | 23 ++-
.../linkis/rpc/interceptor/RPCServerLoader.scala | 23 +--
.../common/SingleInstanceRPCLoadBalancer.scala | 55 -------
.../SpringCloudFeignConfigurationCache.scala | 12 +-
.../linkis/rpc/sender/SpringMVCRPCSender.scala | 120 ++-------------
.../org/apache/linkis/rpc/utils/RPCUtils.scala | 12 +-
.../ecm/server/operator/EngineConnLogOperator.java | 2 +-
.../service/engine/DefaultEngineReuseService.java | 2 +-
.../rm/service/impl/UserResourceService.java | 2 +-
.../src/test/resources/application.properties | 5 +-
.../src/test/resources/application.properties | 5 +-
.../linkis/templates/configmap-linkis-config.yaml | 91 ++++++++++-
.../package/conf/application-engineconn.yml | 13 +-
linkis-dist/package/conf/application-linkis.yml | 9 ++
linkis-dist/package/conf/linkis.properties | 4 +-
.../client/impl/ElasticSearchExecutorImpl.java | 2 +-
.../impala/client/thrift/ImpalaThriftClient.java | 2 +-
.../src/test/resources/application.properties | 5 +-
.../restful/api/TenantConfigrationRestfulApi.java | 2 +-
.../restful/api/UserIpConfigrationRestfulApi.java | 2 +-
.../service/impl/TenantConfigServiceImpl.java | 2 +-
.../service/impl/UserIpConfigServiceImpl.java | 2 +-
.../src/test/resources/application.properties | 5 +-
.../src/test/resources/application.properties | 5 +-
.../src/test/resources/application.yml | 13 ++
.../src/test/resources/application.properties | 5 +-
.../src/test/resources/application.properties | 5 +-
.../src/test/resources/application.properties | 5 +-
.../src/test/resources/application.properties | 5 +-
.../src/test/resources/application.properties | 5 +-
.../src/test/resources/application.properties | 5 +-
.../src/test/resources/application.properties | 5 +-
.../linkis-service-discovery/linkis-eureka/pom.xml | 22 +++
.../gateway/authentication/dao/TokenDaoTest.java | 3 +-
.../src/test/resources/application.properties | 5 +-
.../linkis-gateway-core/pom.xml | 10 ++
.../config/GatewaySpringConfiguration.scala | 15 +-
.../linkis-spring-cloud-gateway/pom.xml | 4 -
.../http/GatewayAuthorizationFilter.java | 24 ++-
.../SpringCloudGatewayConfiguration.scala | 76 ++-------
pom.xml | 19 +--
tool/dependencies/known-dependencies.txt | 157 +++++++++++++++++++
59 files changed, 1126 insertions(+), 459 deletions(-)
diff --git a/linkis-commons/linkis-module/pom.xml
b/linkis-commons/linkis-module/pom.xml
index f92edb8216..328480f25b 100644
--- a/linkis-commons/linkis-module/pom.xml
+++ b/linkis-commons/linkis-module/pom.xml
@@ -262,6 +262,10 @@
<artifactId>jedis</artifactId>
<version>${jedis.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-openfeign-core</artifactId>
+ </dependency>
</dependencies>
<build>
diff --git
a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/DataWorkCloudApplication.java
b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/DataWorkCloudApplication.java
index 6f0256fdfa..5610ded412 100644
---
a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/DataWorkCloudApplication.java
+++
b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/DataWorkCloudApplication.java
@@ -41,6 +41,7 @@ import
org.springframework.boot.web.servlet.support.SpringBootServletInitializer
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import
org.springframework.cloud.context.scope.refresh.RefreshScopeRefreshedEvent;
+import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.ConfigurableApplicationContext;
@@ -66,6 +67,7 @@ import org.eclipse.jetty.webapp.WebAppContext;
@SpringBootApplication(scanBasePackages = {"org.apache.linkis",
"com.webank.wedatasphere"})
@EnableDiscoveryClient
@RefreshScope
+@EnableFeignClients
public class DataWorkCloudApplication extends SpringBootServletInitializer {
private static final Log logger =
LogFactory.getLog(DataWorkCloudApplication.class);
diff --git
a/linkis-commons/linkis-module/src/main/java/org/apache/linkis/swagger/SwaggerBeanPostProcessor.java
b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/swagger/SwaggerBeanPostProcessor.java
new file mode 100644
index 0000000000..f07b7ed0a6
--- /dev/null
+++
b/linkis-commons/linkis-module/src/main/java/org/apache/linkis/swagger/SwaggerBeanPostProcessor.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.swagger;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.ReflectionUtils;
+import
org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
+
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import
springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
+import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
+
+@Configuration
+public class SwaggerBeanPostProcessor implements BeanPostProcessor {
+ @Override
+ public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
+ if (bean instanceof WebMvcRequestHandlerProvider
+ || bean instanceof WebFluxRequestHandlerProvider) {
+ List<RequestMappingInfoHandlerMapping> handlerMappings =
getHandlerMappings(bean);
+ customizeSpringfoxHandlerMappings(handlerMappings);
+ }
+ return bean;
+ }
+
+ private <T extends RequestMappingInfoHandlerMapping> void
customizeSpringfoxHandlerMappings(
+ List<T> mappings) {
+ List<T> copy =
+ mappings.stream()
+ .filter(mapping -> mapping.getPatternParser() == null)
+ .collect(Collectors.toList());
+ mappings.clear();
+ mappings.addAll(copy);
+ }
+
+ @SuppressWarnings("unchecked")
+ private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object
bean) {
+ try {
+ Field field = ReflectionUtils.findField(bean.getClass(),
"handlerMappings");
+ field.setAccessible(true);
+ return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+}
diff --git a/linkis-commons/linkis-rpc/pom.xml
b/linkis-commons/linkis-rpc/pom.xml
index 70ef8e6bc7..a3354e0e0e 100644
--- a/linkis-commons/linkis-rpc/pom.xml
+++ b/linkis-commons/linkis-rpc/pom.xml
@@ -40,8 +40,17 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-loadbalancer</artifactId>
+ </exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-loadbalancer</artifactId>
+ <version>${spring-cloud-common.version}</version>
+ </dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
diff --git
a/linkis-commons/linkis-rpc/src/test/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtilsTest.java
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/CacheManualRefresher.java
similarity index 61%
rename from
linkis-commons/linkis-rpc/src/test/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtilsTest.java
rename to
linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/CacheManualRefresher.java
index d265371d60..dbdf52a1fc 100644
---
a/linkis-commons/linkis-rpc/src/test/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtilsTest.java
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/CacheManualRefresher.java
@@ -15,20 +15,8 @@
* limitations under the License.
*/
-package org.apache.linkis.rpc.message.utils;
+package org.apache.linkis.rpc.conf;
-import feign.Request;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-
-public class LoadBalancerOptionsUtilsTest {
-
- @Test
- @DisplayName("getDefaultOptionsTest")
- public void getDefaultOptionsTest() throws NoSuchFieldException,
IllegalAccessException {
-
- Request.Options defaultOptions =
LoadBalancerOptionsUtils.getDefaultOptions();
- Assertions.assertNotNull(defaultOptions);
- }
+public interface CacheManualRefresher {
+ void refresh();
}
diff --git
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/DynamicFeignClient.java
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/DynamicFeignClient.java
new file mode 100644
index 0000000000..dd1f6a7dc9
--- /dev/null
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/DynamicFeignClient.java
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.conf;
+
+import org.apache.linkis.DataWorkCloudApplication;
+
+import org.apache.commons.lang3.StringUtils;
+
+import org.springframework.cloud.openfeign.FeignClientBuilder;
+import org.springframework.cloud.openfeign.FeignClientFactoryBean;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+@Component
+public class DynamicFeignClient<T> {
+
+ private FeignClientBuilder feignClientBuilder;
+
+ private final ConcurrentHashMap<String, T> CACHE_BEAN = new
ConcurrentHashMap();
+
+ public DynamicFeignClient() {
+ this.feignClientBuilder =
+ new
FeignClientBuilder(DataWorkCloudApplication.getApplicationContext());
+ }
+
+ public T getFeignClient(final Class<T> type, final String serviceName) {
+ return getFeignClient(type, serviceName, null);
+ }
+
+ public T getFeignClient(
+ final Class<T> type, final Class<?> fallbackFactory, final String
serviceName) {
+ return getFeignClient(type, fallbackFactory, serviceName, null);
+ }
+
+ public T getFeignClient(
+ final Class<T> type,
+ final FeignClientFactoryBean clientFactoryBean,
+ final String serviceName) {
+ return getFeignClient(type, clientFactoryBean, serviceName, null);
+ }
+
+ public T getFeignClient(final Class<T> type, String serviceName, final
String serviceUrl) {
+ String k = serviceName;
+ if (StringUtils.isNotEmpty(serviceUrl)) {
+ k = serviceUrl;
+ }
+ return CACHE_BEAN.computeIfAbsent(
+ k,
+ (t) -> {
+ FeignClientBuilder.Builder<T> builder =
+ this.feignClientBuilder.forType(type, serviceName);
+ if (StringUtils.isNotEmpty(serviceUrl)) {
+ builder.url(serviceUrl);
+ }
+ return builder.build();
+ });
+ }
+
+ public T getFeignClient(
+ final Class<T> type,
+ final Class<?> fallbackFactory,
+ final String serviceName,
+ final String serviceUrl) {
+ String k = serviceName;
+ if (StringUtils.isNotEmpty(serviceUrl)) {
+ k = serviceUrl;
+ }
+ return CACHE_BEAN.computeIfAbsent(
+ k,
+ (t) -> {
+ FeignClientFactoryBean feignClientFactoryBean = new
FeignClientFactoryBean();
+ feignClientFactoryBean.setFallbackFactory(fallbackFactory);
+ FeignClientBuilder.Builder<T> builder =
+ this.feignClientBuilder.forType(type, feignClientFactoryBean,
serviceName);
+ if (StringUtils.isNotEmpty(serviceUrl)) {
+ builder.url(serviceUrl);
+ }
+ return builder.build();
+ });
+ }
+
+ public T getFeignClient(
+ final Class<T> type,
+ final FeignClientFactoryBean clientFactoryBean,
+ final String serviceName,
+ final String serviceUrl) {
+ String k = serviceName;
+ if (StringUtils.isNotEmpty(serviceUrl)) {
+ k = serviceUrl;
+ }
+ return CACHE_BEAN.computeIfAbsent(
+ k,
+ (t) -> {
+ FeignClientBuilder.Builder<T> builder =
+ this.feignClientBuilder.forType(type, clientFactoryBean,
serviceName);
+ if (StringUtils.isNotEmpty(serviceUrl)) {
+ builder.url(serviceUrl);
+ }
+ return builder.build();
+ });
+ }
+
+ private T getFromCache(final String serviceName, final String serviceUrl) {
+ if (StringUtils.isNotEmpty(serviceUrl)) {
+ return CACHE_BEAN.get(serviceUrl);
+ } else {
+ return CACHE_BEAN.get(serviceName);
+ }
+ }
+}
diff --git
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/EurekaClientCacheManualRefresher.java
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/EurekaClientCacheManualRefresher.java
new file mode 100644
index 0000000000..7394698672
--- /dev/null
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/EurekaClientCacheManualRefresher.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.conf;
+
+import org.apache.commons.lang3.exception.ExceptionUtils;
+
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ReflectionUtils;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.time.Duration;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component
+@ConditionalOnClass(name =
"org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration")
+public class EurekaClientCacheManualRefresher implements CacheManualRefresher {
+ private static final Logger logger =
+ LoggerFactory.getLogger(EurekaClientCacheManualRefresher.class);
+ private final AtomicBoolean isRefreshing = new AtomicBoolean(false);
+ private final ExecutorService refreshExecutor =
Executors.newSingleThreadExecutor();
+ private final String cacheRefreshTaskField = "cacheRefreshTask";
+ private Object cacheRefreshTask;
+
+ private long lastRefreshMillis = 0;
+ private final Duration refreshIntervalDuration = Duration.ofSeconds(3);
+
+ @Autowired private BeanFactory beanFactory;
+
+ public void refreshOnExceptions(Exception e, List<Class<? extends
Exception>> clazzs) {
+ if (null == clazzs || clazzs.size() == 0) {
+ throw new IllegalArgumentException();
+ }
+
+ if (clazzs.stream()
+ .anyMatch(
+ clazz -> clazz.isInstance(e) ||
clazz.isInstance(ExceptionUtils.getRootCause(e)))) {
+ refresh();
+ }
+ }
+
+ public void refresh() {
+ if (isRefreshing.compareAndSet(false, true)) {
+ refreshExecutor.execute(
+ () -> {
+ try {
+ if (System.currentTimeMillis()
+ <= lastRefreshMillis + refreshIntervalDuration.toMillis()) {
+ logger.warn(
+ "Not manually refresh eureka client cache as refresh
interval was not exceeded:{}",
+ refreshIntervalDuration.getSeconds());
+ return;
+ }
+
+ String discoveryClientClassName =
"com.netflix.discovery.DiscoveryClient";
+ if (null == cacheRefreshTask) {
+ Class<?> discoveryClientClass =
Class.forName(discoveryClientClassName);
+ Field field =
+ ReflectionUtils.findField(discoveryClientClass,
cacheRefreshTaskField);
+ if (null != field) {
+ ReflectionUtils.makeAccessible(field);
+ Object discoveryClient =
beanFactory.getBean(discoveryClientClass);
+ cacheRefreshTask = ReflectionUtils.getField(field,
discoveryClient);
+ }
+ }
+
+ if (null == cacheRefreshTask) {
+ logger.error(
+ "Field ({}) not found in class '{}'",
+ cacheRefreshTaskField,
+ discoveryClientClassName);
+ return;
+ }
+
+ lastRefreshMillis = System.currentTimeMillis();
+ Class<?> timedSupervisorTaskClass =
+ Class.forName("com.netflix.discovery.TimedSupervisorTask");
+ Method method =
timedSupervisorTaskClass.getDeclaredMethod("run");
+ method.setAccessible(true);
+ method.invoke(cacheRefreshTask);
+ logger.info(
+ "Manually refresh eureka client cache
completed(DiscoveryClient.cacheRefreshTask#run())");
+ } catch (Exception e) {
+ logger.error("An exception occurred when manually refresh eureka
client cache", e);
+ } finally {
+ isRefreshing.set(false);
+ }
+ });
+ } else {
+ logger.warn(
+ "Not manually refresh eureka client cache as another thread is
refreshing it already");
+ }
+ }
+}
diff --git
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/FeignRequestInterceptor.java
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/FeignRequestInterceptor.java
new file mode 100644
index 0000000000..ef1c2dd095
--- /dev/null
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/FeignRequestInterceptor.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.conf;
+
+import org.apache.linkis.rpc.BaseRPCSender;
+import org.apache.linkis.rpc.constant.RpcConstant;
+import org.apache.linkis.server.BDPJettyServerHelper;
+import org.apache.linkis.server.Message;
+import org.apache.linkis.server.security.SSOUtils$;
+import org.apache.linkis.server.security.SecurityFilter$;
+
+import org.springframework.stereotype.Component;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import scala.Tuple2;
+
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+
+@Component
+public class FeignRequestInterceptor implements RequestInterceptor {
+
+ @Override
+ public void apply(RequestTemplate requestTemplate) {
+ Map<String, Collection<String>> headers = new
HashMap<>(requestTemplate.headers());
+ headers.put(
+ RpcConstant.LINKIS_LOAD_BALANCER_TYPE,
+ Arrays.asList(RpcConstant.LINKIS_LOAD_BALANCER_TYPE_RPC));
+ Tuple2<String, String> userTicketKV =
+
SSOUtils$.MODULE$.getUserTicketKV(SecurityFilter$.MODULE$.OTHER_SYSTEM_IGNORE_UM_USER());
+ headers.put(userTicketKV._1, Arrays.asList(userTicketKV._2));
+ try {
+ String body =
+ new String(
+ requestTemplate.body(),
+
org.apache.linkis.common.conf.Configuration.BDP_ENCODING().getValue());
+ Message message = BDPJettyServerHelper.gson().fromJson(body,
Message.class);
+ headers.put(
+ RpcConstant.FIXED_INSTANCE,
Arrays.asList(BaseRPCSender.getFixedInstanceInfo(message)));
+ requestTemplate.headers(headers);
+ } catch (UnsupportedEncodingException e) {
+ }
+ }
+}
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/InstanceRPCLoadBalancer.scala
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/NacosClientCacheManualRefresher.java
similarity index 53%
rename from
linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/InstanceRPCLoadBalancer.scala
rename to
linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/NacosClientCacheManualRefresher.java
index 6cdac0df9f..db26cd0f2c 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/InstanceRPCLoadBalancer.scala
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/conf/NacosClientCacheManualRefresher.java
@@ -15,28 +15,26 @@
* limitations under the License.
*/
-package org.apache.linkis.rpc.interceptor.common
+package org.apache.linkis.rpc.conf;
-import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.protocol.{InstanceProtocol, Protocol}
-import org.apache.linkis.rpc.interceptor.RPCLoadBalancer
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Component
-
-import com.netflix.loadbalancer.ILoadBalancer
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
@Component
-class InstanceRPCLoadBalancer extends RPCLoadBalancer {
- override val order: Int = 10
+@ConditionalOnClass(name =
"com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration")
+public class NacosClientCacheManualRefresher implements CacheManualRefresher {
+ private static final Logger logger =
+ LoggerFactory.getLogger(NacosClientCacheManualRefresher.class);
- override def choose(
- protocol: Protocol,
- originService: ServiceInstance,
- lb: ILoadBalancer
- ): Option[ServiceInstance] = protocol match {
- case instance: InstanceProtocol =>
-
instance.choseInstance.map(ServiceInstance(originService.getApplicationName, _))
- case _ => None
- }
+ public void refresh() {
+ try {
+ logger.warn("Failed to obtain nacos metadata. Wait 100 milliseconds");
+ Thread.sleep(100L);
+ } catch (InterruptedException e) {
+ }
+ }
}
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/constant/RpcConstant.java
similarity index 69%
copy from
linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
copy to
linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/constant/RpcConstant.java
index 7ae331265b..3d46661de2 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/constant/RpcConstant.java
@@ -15,21 +15,13 @@
* limitations under the License.
*/
-package org.apache.linkis.rpc.interceptor
+package org.apache.linkis.rpc.constant;
-import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.protocol.Protocol
+public class RpcConstant {
-import com.netflix.loadbalancer.ILoadBalancer
+ public static final String LINKIS_LOAD_BALANCER_TYPE =
"LinkisLoadBalancerType";
-trait RPCLoadBalancer {
-
- val order: Int
-
- def choose(
- protocol: Protocol,
- originService: ServiceInstance,
- lb: ILoadBalancer
- ): Option[ServiceInstance]
+ public static final String LINKIS_LOAD_BALANCER_TYPE_RPC = "RPC";
+ public static final String FIXED_INSTANCE = "client-ip";
}
diff --git
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/errorcode/LinkisRpcErrorCodeSummary.java
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/errorcode/LinkisRpcErrorCodeSummary.java
index 3723ca145d..b87e730994 100644
---
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/errorcode/LinkisRpcErrorCodeSummary.java
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/errorcode/LinkisRpcErrorCodeSummary.java
@@ -30,6 +30,8 @@ public enum LinkisRpcErrorCodeSummary implements
LinkisErrorCode {
10004, "The corresponding anti-sequence class:{0} failed to
initialize(对应的反序列类:{0} 初始化失败)"),
APPLICATION_IS_NOT_EXISTS(
10051, "The instance:{0} of application {1} does not exist(应用程序:{0}
的实例:{1} 不存在)."),
+
+ INSTANCE_ERROR(10052, "The instance:{0} is error should ip:port."),
RPC_INIT_ERROR(10054, "Asyn RPC Consumer Thread has stopped!(Asyn RPC
Consumer 线程已停止!)");
/** 错误码 */
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/GatewayLoadBalancerConfiguration.java
similarity index 69%
rename from
linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
rename to
linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/GatewayLoadBalancerConfiguration.java
index 7ae331265b..0c9aecf177 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCLoadBalancer.scala
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/GatewayLoadBalancerConfiguration.java
@@ -15,21 +15,6 @@
* limitations under the License.
*/
-package org.apache.linkis.rpc.interceptor
+package org.apache.linkis.rpc.loadbalancer;
-import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.protocol.Protocol
-
-import com.netflix.loadbalancer.ILoadBalancer
-
-trait RPCLoadBalancer {
-
- val order: Int
-
- def choose(
- protocol: Protocol,
- originService: ServiceInstance,
- lb: ILoadBalancer
- ): Option[ServiceInstance]
-
-}
+public class GatewayLoadBalancerConfiguration {}
diff --git
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/LinkisLoadBalancerClientConfiguration.java
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/LinkisLoadBalancerClientConfiguration.java
new file mode 100644
index 0000000000..f4d501dfe4
--- /dev/null
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/LinkisLoadBalancerClientConfiguration.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.loadbalancer;
+
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients;
+import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
+import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
+import
org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+
+@Configuration
+@LoadBalancerClients(defaultConfiguration =
{LinkisLoadBalancerClientConfiguration.class})
+public class LinkisLoadBalancerClientConfiguration {
+ @Bean
+ public ReactorLoadBalancer<ServiceInstance> customLoadBalancer(
+ Environment environment, LoadBalancerClientFactory
loadBalancerClientFactory) {
+ String name =
environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
+ return new ServiceInstancePriorityLoadBalancer(
+ loadBalancerClientFactory.getLazyProvider(name,
ServiceInstanceListSupplier.class), name);
+ }
+}
diff --git
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/ServiceInstancePriorityLoadBalancer.java
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/ServiceInstancePriorityLoadBalancer.java
new file mode 100644
index 0000000000..2f81ba84d5
--- /dev/null
+++
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/loadbalancer/ServiceInstancePriorityLoadBalancer.java
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.rpc.loadbalancer;
+
+import org.apache.linkis.rpc.conf.CacheManualRefresher;
+import org.apache.linkis.rpc.constant.RpcConstant;
+import org.apache.linkis.rpc.errorcode.LinkisRpcErrorCodeSummary;
+import org.apache.linkis.rpc.exception.NoInstanceExistsException;
+import org.apache.linkis.rpc.sender.SpringCloudFeignConfigurationCache$;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.loadbalancer.*;
+import
org.springframework.cloud.loadbalancer.core.NoopServiceInstanceListSupplier;
+import
org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer;
+import org.springframework.cloud.loadbalancer.core.SelectedInstanceCallback;
+import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
+
+import java.text.MessageFormat;
+import java.util.List;
+import java.util.Objects;
+import java.util.Random;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import reactor.core.publisher.Mono;
+
+public class ServiceInstancePriorityLoadBalancer implements
ReactorServiceInstanceLoadBalancer {
+
+ private static final Log log =
LogFactory.getLog(ServiceInstancePriorityLoadBalancer.class);
+
+ @Autowired private CacheManualRefresher cacheManualRefresher;
+
+ private final String serviceId;
+
+ final AtomicInteger position;
+ private final ObjectProvider<ServiceInstanceListSupplier>
serviceInstanceListSupplierProvider;
+
+ public ServiceInstancePriorityLoadBalancer(
+ ObjectProvider<ServiceInstanceListSupplier>
serviceInstanceListSupplierProvider,
+ String serviceId) {
+ this(serviceInstanceListSupplierProvider, serviceId, (new
Random()).nextInt(1000));
+ }
+
+ public ServiceInstancePriorityLoadBalancer(
+ ObjectProvider<ServiceInstanceListSupplier>
serviceInstanceListSupplierProvider,
+ String serviceId,
+ int seedPosition) {
+ this.serviceId = serviceId;
+ this.serviceInstanceListSupplierProvider =
serviceInstanceListSupplierProvider;
+ this.position = new AtomicInteger(seedPosition);
+ }
+
+ @Override
+ public Mono<Response<ServiceInstance>> choose(Request request) {
+ List<String> clientIpList =
+ ((RequestDataContext) request.getContext())
+ .getClientRequest()
+ .getHeaders()
+ .get(RpcConstant.FIXED_INSTANCE);
+ String clientIp = CollectionUtils.isNotEmpty(clientIpList) ?
clientIpList.get(0) : null;
+ ServiceInstanceListSupplier supplier =
+
serviceInstanceListSupplierProvider.getIfAvailable(NoopServiceInstanceListSupplier::new);
+ return supplier
+ .get(request)
+ .next()
+ .map(
+ serviceInstances ->
+ processInstanceResponse(request, supplier, serviceInstances,
clientIp));
+ }
+
+ private Response<ServiceInstance> processInstanceResponse(
+ Request request,
+ ServiceInstanceListSupplier supplier,
+ List<ServiceInstance> serviceInstances,
+ String clientIp) {
+ Response<ServiceInstance> serviceInstanceResponse =
+ getInstanceResponse(serviceInstances, clientIp);
+ Long endTtime = System.currentTimeMillis() + 2 * 60 * 1000;
+
+ List<String> linkisLoadBalancerTypeList =
+ ((RequestDataContext) request.getContext())
+ .getClientRequest()
+ .getHeaders()
+ .get(RpcConstant.LINKIS_LOAD_BALANCER_TYPE);
+ String linkisLoadBalancerType =
+ CollectionUtils.isNotEmpty(linkisLoadBalancerTypeList)
+ ? linkisLoadBalancerTypeList.get(0)
+ : null;
+
+ while (null == serviceInstanceResponse
+ && StringUtils.isNoneBlank(clientIp)
+ && isRPC(linkisLoadBalancerType)
+ && System.currentTimeMillis() < endTtime) {
+ cacheManualRefresher.refresh();
+ List<ServiceInstance> instances =
+
SpringCloudFeignConfigurationCache$.MODULE$.discoveryClient().getInstances(serviceId);
+ serviceInstanceResponse = getInstanceResponse(instances, clientIp);
+ if (null == serviceInstanceResponse) {
+ try {
+ Thread.sleep(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ if (supplier instanceof SelectedInstanceCallback &&
serviceInstanceResponse.hasServer()) {
+ ((SelectedInstanceCallback) supplier)
+ .selectedServiceInstance(serviceInstanceResponse.getServer());
+ }
+ return serviceInstanceResponse;
+ }
+
+ private boolean isRPC(String linkisLoadBalancerType) {
+ return StringUtils.isNotBlank(linkisLoadBalancerType)
+ &&
linkisLoadBalancerType.equalsIgnoreCase(RpcConstant.LINKIS_LOAD_BALANCER_TYPE_RPC);
+ }
+
+ private Response<ServiceInstance> getInstanceResponse(
+ List<ServiceInstance> instances, String clientIp) {
+ if (instances.isEmpty()) {
+ log.warn("No servers available for service: " + serviceId);
+ return null;
+ }
+ int pos = this.position.incrementAndGet() & Integer.MAX_VALUE;
+
+ if (StringUtils.isBlank(clientIp)) {
+ return new DefaultResponse(instances.get(pos % instances.size()));
+ }
+ String[] ipAndPort = clientIp.split(":");
+ if (ipAndPort.length != 2) {
+ throw new NoInstanceExistsException(
+ LinkisRpcErrorCodeSummary.INSTANCE_ERROR.getErrorCode(),
+
MessageFormat.format(LinkisRpcErrorCodeSummary.INSTANCE_ERROR.getErrorDesc(),
clientIp));
+ }
+ ServiceInstance chooseInstance = null;
+ for (ServiceInstance instance : instances) {
+ if (Objects.equals(ipAndPort[0], instance.getHost())
+ && Objects.equals(ipAndPort[1], String.valueOf(instance.getPort())))
{
+ chooseInstance = instance;
+ break;
+ }
+ }
+ if (null == chooseInstance) {
+ return null;
+ } else {
+ return new DefaultResponse(chooseInstance);
+ }
+ }
+}
diff --git
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtils.java
b/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtils.java
deleted file mode 100644
index f022fc8c7f..0000000000
---
a/linkis-commons/linkis-rpc/src/main/java/org/apache/linkis/rpc/message/utils/LoadBalancerOptionsUtils.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.linkis.rpc.message.utils;
-
-import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient;
-
-import java.lang.reflect.Field;
-
-import feign.Request.Options;
-
-public class LoadBalancerOptionsUtils {
-
- private static Options DEFAULT_OPTIONS = null;
-
- private static Object locker = new Object();
-
- public static Options getDefaultOptions() throws NoSuchFieldException,
IllegalAccessException {
- if (null == DEFAULT_OPTIONS) {
- synchronized (locker) {
- Class<?> clazz = LoadBalancerFeignClient.class;
- Field optionField = clazz.getDeclaredField("DEFAULT_OPTIONS");
- optionField.setAccessible(true);
- Object o = optionField.get(clazz);
- DEFAULT_OPTIONS = (Options) o;
- }
- }
- return DEFAULT_OPTIONS;
- }
-}
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/BaseRPCSender.scala
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/BaseRPCSender.scala
index 149179f8b1..1c4e43b3cc 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/BaseRPCSender.scala
+++
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/BaseRPCSender.scala
@@ -22,27 +22,28 @@ import org.apache.linkis.common.ServiceInstance
import org.apache.linkis.common.exception.WarnException
import org.apache.linkis.common.utils.Logging
import org.apache.linkis.protocol.Protocol
+import org.apache.linkis.rpc.conf.DynamicFeignClient
import org.apache.linkis.rpc.conf.RPCConfiguration.{
BDP_RPC_SENDER_ASYN_CONSUMER_THREAD_FREE_TIME_MAX,
BDP_RPC_SENDER_ASYN_CONSUMER_THREAD_MAX,
BDP_RPC_SENDER_ASYN_QUEUE_CAPACITY
}
+import org.apache.linkis.rpc.constant.RpcConstant
import org.apache.linkis.rpc.interceptor._
import org.apache.linkis.rpc.transform.{RPCConsumer, RPCProduct}
import org.apache.linkis.server.Message
-import org.apache.linkis.server.conf.ServerConfiguration
+
+import org.apache.commons.lang3.StringUtils
import java.util
import scala.concurrent.duration.Duration
import scala.runtime.BoxedUnit
-import feign.{Feign, Retryer}
-import feign.slf4j.Slf4jLogger
-
private[rpc] class BaseRPCSender extends Sender with Logging {
private var name: String = _
private var rpc: RPCReceiveRemote = _
+ private var dynamicFeignClient: DynamicFeignClient[RPCReceiveRemote] = _
protected def getRPCInterceptors: Array[RPCInterceptor] = Array.empty
@@ -67,18 +68,21 @@ private[rpc] class BaseRPCSender extends Sender with
Logging {
rpc
}
+ private def getDynamicFeignClient: DynamicFeignClient[RPCReceiveRemote] = {
+ if (dynamicFeignClient == null) this synchronized {
+ if (dynamicFeignClient == null) dynamicFeignClient = new
DynamicFeignClient()
+ }
+ dynamicFeignClient
+ }
+
private[rpc] def getApplicationName = name
- protected def doBuilder(builder: Feign.Builder): Unit =
- builder.retryer(Retryer.NEVER_RETRY)
+ def getSenderInstance(): String = {
+ null
+ }
protected def newRPC: RPCReceiveRemote = {
- val builder = Feign.builder.logger(new
Slf4jLogger()).logLevel(feign.Logger.Level.FULL)
- doBuilder(builder)
- var url = if (name.startsWith("http://")) name else "http://" + name
- if (url.endsWith("/")) url = url.substring(0, url.length - 1)
- url += ServerConfiguration.BDP_SERVER_RESTFUL_URI.getValue
- builder.target(classOf[RPCReceiveRemote], url)
+ getDynamicFeignClient.getFeignClient(classOf[RPCReceiveRemote], name)
}
private def execute(message: Any)(op: => Any): Any = message match {
@@ -90,6 +94,9 @@ private[rpc] class BaseRPCSender extends Sender with Logging {
override def ask(message: Any): Any = execute(message) {
val msg = RPCProduct.getRPCProduct.toMessage(message)
+ if (StringUtils.isNotBlank(getSenderInstance())) {
+ BaseRPCSender.addFixedInstanceInfo(msg.getData, getSenderInstance())
+ }
BaseRPCSender.addInstanceInfo(msg.getData)
val response = getRPC.receiveAndReply(msg)
RPCConsumer.getRPCConsumer.toObject(response)
@@ -98,6 +105,9 @@ private[rpc] class BaseRPCSender extends Sender with Logging
{
override def ask(message: Any, timeout: Duration): Any = execute(message) {
val msg = RPCProduct.getRPCProduct.toMessage(message)
msg.data("duration", timeout.toMillis)
+ if (StringUtils.isNotBlank(getSenderInstance())) {
+ BaseRPCSender.addFixedInstanceInfo(msg.getData, getSenderInstance())
+ }
BaseRPCSender.addInstanceInfo(msg.getData)
val response = getRPC.receiveAndReplyInMills(msg)
RPCConsumer.getRPCConsumer.toObject(response)
@@ -105,6 +115,9 @@ private[rpc] class BaseRPCSender extends Sender with
Logging {
private def sendIt(message: Any, op: Message => Message): Unit =
execute(message) {
val msg = RPCProduct.getRPCProduct.toMessage(message)
+ if (StringUtils.isNotBlank(getSenderInstance())) {
+ BaseRPCSender.addFixedInstanceInfo(msg.getData, getSenderInstance())
+ }
BaseRPCSender.addInstanceInfo(msg.getData)
RPCConsumer.getRPCConsumer.toObject(op(msg)) match {
case w: WarnException => logger.warn("RPC requests an
alarm!(RPC请求出现告警!)", w)
@@ -175,4 +188,16 @@ private[rpc] object BaseRPCSender extends Logging {
ServiceInstance(name, instance)
}
+ def addFixedInstanceInfo(map: util.Map[String, Object], fixedInstance:
String): Unit = {
+ map.put(RpcConstant.FIXED_INSTANCE, fixedInstance)
+ }
+
+ def getFixedInstanceInfo(message: Message): String = {
+ if (null != message && null != message.getData) {
+ message.getData.getOrDefault(RpcConstant.FIXED_INSTANCE,
null).asInstanceOf[String]
+ } else {
+ null
+ }
+ }
+
}
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRemote.scala
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRemote.scala
index c539652d31..458ada9308 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRemote.scala
+++
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCReceiveRemote.scala
@@ -23,13 +23,22 @@ import
org.springframework.web.bind.annotation.{RequestBody, RequestMapping, Req
private[rpc] trait RPCReceiveRemote {
- @RequestMapping(value = Array("/rpc/receive"), method =
Array(RequestMethod.POST))
+ @RequestMapping(
+ value = Array("${spring.mvc.servlet.path}/rpc/receive"),
+ method = Array(RequestMethod.POST)
+ )
def receive(@RequestBody message: Message): Message
- @RequestMapping(value = Array("/rpc/receiveAndReply"), method =
Array(RequestMethod.POST))
+ @RequestMapping(
+ value = Array("${spring.mvc.servlet.path}/rpc/receiveAndReply"),
+ method = Array(RequestMethod.POST)
+ )
def receiveAndReply(@RequestBody message: Message): Message
- @RequestMapping(value = Array("/rpc/replyInMills"), method =
Array(RequestMethod.POST))
+ @RequestMapping(
+ value = Array("${spring.mvc.servlet.path}/rpc/replyInMills"),
+ method = Array(RequestMethod.POST)
+ )
def receiveAndReplyInMills(@RequestBody message: Message): Message
}
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCSpringBeanCache.scala
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCSpringBeanCache.scala
index aa92605f9b..ff542aaad5 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCSpringBeanCache.scala
+++
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/RPCSpringBeanCache.scala
@@ -19,7 +19,7 @@ package org.apache.linkis.rpc
import org.apache.linkis.DataWorkCloudApplication
import org.apache.linkis.common.utils.Logging
-import org.apache.linkis.rpc.interceptor.{RPCInterceptor, RPCLoadBalancer,
RPCServerLoader}
+import org.apache.linkis.rpc.interceptor.{RPCInterceptor, RPCServerLoader}
import org.apache.linkis.rpc.interceptor.common.BroadcastSenderBuilder
import java.util
@@ -30,10 +30,10 @@ private[rpc] object RPCSpringBeanCache extends Logging {
import DataWorkCloudApplication.getApplicationContext
private var beanNameToReceivers: util.Map[String, Receiver] = _
private var rpcInterceptors: Array[RPCInterceptor] = _
- private var rpcLoadBalancers: Array[RPCLoadBalancer] = _
private var rpcServerLoader: RPCServerLoader = _
private var senderBuilders: Array[BroadcastSenderBuilder] = _
private var rpcReceiveRestful: RPCReceiveRestful = _
+ private var rpcReceiveRemote: RPCReceiveRemote = _
def registerReceiver(receiverName: String, receiver: Receiver): Unit = {
if (beanNameToReceivers == null) {
@@ -64,6 +64,13 @@ private[rpc] object RPCSpringBeanCache extends Logging {
rpcReceiveRestful
}
+ def getRPCReceiveRemote: RPCReceiveRemote = {
+ if (rpcReceiveRemote == null) {
+ rpcReceiveRemote =
getApplicationContext.getBean(classOf[RPCReceiveRemote])
+ }
+ rpcReceiveRemote
+ }
+
private[rpc] def getReceivers: util.Map[String, Receiver] = {
if (beanNameToReceivers == null) {
beanNameToReceivers =
getApplicationContext.getBeansOfType(classOf[Receiver])
@@ -83,18 +90,6 @@ private[rpc] object RPCSpringBeanCache extends Logging {
rpcInterceptors
}
- private[rpc] def getRPCLoadBalancers: Array[RPCLoadBalancer] = {
- if (rpcLoadBalancers == null) {
- rpcLoadBalancers = getApplicationContext
- .getBeansOfType(classOf[RPCLoadBalancer])
- .asScala
- .map(_._2)
- .toArray
- .sortBy(_.order)
- }
- rpcLoadBalancers
- }
-
private[rpc] def getRPCServerLoader: RPCServerLoader = {
if (rpcServerLoader == null) {
rpcServerLoader = getApplicationContext.getBean(classOf[RPCServerLoader])
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCServerLoader.scala
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCServerLoader.scala
index 8cab6d7d0f..e4259466b1 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCServerLoader.scala
+++
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/RPCServerLoader.scala
@@ -28,16 +28,11 @@ import java.text.MessageFormat
import scala.collection.JavaConverters._
import scala.concurrent.duration.Duration
-import com.netflix.loadbalancer.{DynamicServerListLoadBalancer, ILoadBalancer,
Server}
-
trait RPCServerLoader {
@throws[NoInstanceExistsException]
def getOrRefreshServiceInstance(serviceInstance: ServiceInstance): Unit
- @throws[NoInstanceExistsException]
- def getServer(lb: ILoadBalancer, serviceInstance: ServiceInstance): Server
-
def getServiceInstances(applicationName: String): Array[ServiceInstance]
}
@@ -50,19 +45,12 @@ abstract class AbstractRPCServerLoader extends
RPCServerLoader with Logging {
def refreshAllServers(): Unit
- protected def refreshServerList(lb: ILoadBalancer): Unit = {
- refreshAllServers()
- lb match {
- case d: DynamicServerListLoadBalancer[_] => d.updateListOfServers()
- case _ =>
- }
- }
-
private def getOrRefresh(
refresh: => Unit,
refreshed: => Boolean,
serviceInstance: ServiceInstance
): Unit = {
+
val instanceNotExists = new NoInstanceExistsException(
APPLICATION_IS_NOT_EXISTS.getErrorCode,
MessageFormat.format(
@@ -101,15 +89,6 @@ abstract class AbstractRPCServerLoader extends
RPCServerLoader with Logging {
serviceInstance
)
- override def getServer(lb: ILoadBalancer, serviceInstance: ServiceInstance):
Server = {
- getOrRefresh(
- refreshServerList(lb),
- lb.getAllServers.asScala.exists(_.getHostPort ==
serviceInstance.getInstance),
- serviceInstance
- )
- lb.getAllServers.asScala.find(_.getHostPort ==
serviceInstance.getInstance).get
- }
-
def getDWCServiceInstance(serviceInstance: SpringCloudServiceInstance):
ServiceInstance
override def getServiceInstances(applicationName: String):
Array[ServiceInstance] =
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/SingleInstanceRPCLoadBalancer.scala
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/SingleInstanceRPCLoadBalancer.scala
deleted file mode 100644
index b007838ea6..0000000000
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/interceptor/common/SingleInstanceRPCLoadBalancer.scala
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.linkis.rpc.interceptor.common
-
-import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.common.utils.Logging
-import org.apache.linkis.protocol.{Protocol, SingleInstanceProtocol}
-import org.apache.linkis.rpc.interceptor.RPCLoadBalancer
-
-import org.apache.commons.lang3.StringUtils
-
-import org.springframework.stereotype.Component
-
-import com.netflix.loadbalancer.ILoadBalancer
-
-@Component
-class SingleInstanceRPCLoadBalancer extends RPCLoadBalancer with Logging {
- override val order: Int = 20
-
- override def choose(
- protocol: Protocol,
- originService: ServiceInstance,
- lb: ILoadBalancer
- ): Option[ServiceInstance] = protocol match {
- case _: SingleInstanceProtocol =>
- if (StringUtils.isEmpty(originService.getInstance)) synchronized {
- if (StringUtils.isEmpty(originService.getInstance)) {
- val servers = lb.getAllServers
- val server = servers.get((math.random * servers.size()).toInt)
- originService.setInstance(server.getHostPort)
- logger.warn(
- originService.getApplicationName + " choose " + server.getHostPort
+ " to build a single instance connection."
- )
- }
- }
- Some(originService)
- case _ => None
- }
-
-}
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringCloudFeignConfigurationCache.scala
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringCloudFeignConfigurationCache.scala
index 06f13c70a9..b8b41524d5 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringCloudFeignConfigurationCache.scala
+++
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringCloudFeignConfigurationCache.scala
@@ -24,7 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.AutoConfigureBefore
import org.springframework.cloud.client.discovery.DiscoveryClient
import org.springframework.cloud.client.loadbalancer.LoadBalancedRetryFactory
-import org.springframework.cloud.netflix.ribbon.SpringClientFactory
+import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory
import org.springframework.cloud.openfeign.FeignClientsConfiguration
import org.springframework.context.annotation.{Configuration, Import}
@@ -48,7 +48,7 @@ class SpringCloudFeignConfigurationCache(
private var discoveryClient: DiscoveryClient = _
@Autowired
- private var clientFactory: SpringClientFactory = _
+ private var loadBalancerClientFactory: LoadBalancerClientFactory = _
@Autowired(required = false)
private var loadBalancedRetryFactory: LoadBalancedRetryFactory = _
@@ -56,7 +56,7 @@ class SpringCloudFeignConfigurationCache(
@PostConstruct
def storeFeignConfiguration(): Unit = {
SpringCloudFeignConfigurationCache.client = client
- SpringCloudFeignConfigurationCache.clientFactory = clientFactory
+ SpringCloudFeignConfigurationCache.loadBalancerClientFactory =
loadBalancerClientFactory
SpringCloudFeignConfigurationCache.loadBalancedRetryFactory =
loadBalancedRetryFactory
SpringCloudFeignConfigurationCache.contract = contract
SpringCloudFeignConfigurationCache.decoder = decoder
@@ -71,7 +71,9 @@ private[linkis] object SpringCloudFeignConfigurationCache {
private[SpringCloudFeignConfigurationCache] var decoder: Decoder = _
private[SpringCloudFeignConfigurationCache] var contract: Contract = _
private[SpringCloudFeignConfigurationCache] var client: Client = _
- private[SpringCloudFeignConfigurationCache] var clientFactory:
SpringClientFactory = _
+
+ private[SpringCloudFeignConfigurationCache] var loadBalancerClientFactory
+ : LoadBalancerClientFactory = _
private[SpringCloudFeignConfigurationCache] var loadBalancedRetryFactory
: LoadBalancedRetryFactory = _
@@ -92,7 +94,7 @@ private[linkis] object SpringCloudFeignConfigurationCache {
client
}
- private[rpc] def getClientFactory = clientFactory
+ private[rpc] def getLoadloadBalancerClientFactory = loadBalancerClientFactory
private[rpc] def getLoadBalancedRetryFactory = loadBalancedRetryFactory
private[linkis] def getDiscoveryClient = {
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringMVCRPCSender.scala
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringMVCRPCSender.scala
index ab4f2d7fe3..1aae1f0cf3 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringMVCRPCSender.scala
+++
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/sender/SpringMVCRPCSender.scala
@@ -18,119 +18,26 @@
package org.apache.linkis.rpc.sender
import org.apache.linkis.common.ServiceInstance
-import org.apache.linkis.common.conf.{Configuration => DWCConfiguration}
-import org.apache.linkis.protocol.Protocol
import org.apache.linkis.rpc.{BaseRPCSender, RPCMessageEvent,
RPCSpringBeanCache}
-import org.apache.linkis.rpc.conf.RPCConfiguration
-import org.apache.linkis.rpc.interceptor.{
- RPCInterceptor,
- RPCLoadBalancer,
- ServiceInstanceRPCInterceptorChain
-}
-import org.apache.linkis.rpc.message.utils.LoadBalancerOptionsUtils
-import org.apache.linkis.rpc.transform.RPCConsumer
-import org.apache.linkis.server.{BDPJettyServerHelper, Message}
+import org.apache.linkis.rpc.interceptor.{RPCInterceptor,
ServiceInstanceRPCInterceptorChain}
import org.apache.commons.lang3.StringUtils
-import org.springframework.cloud.netflix.ribbon.ServerIntrospector
-import org.springframework.cloud.openfeign.ribbon.{
- CachingSpringLoadBalancerFactory,
- FeignLoadBalancer,
- LoadBalancerFeignClient
-}
-
-import java.lang.reflect.Field
-
-import com.netflix.client.ClientRequest
-import com.netflix.client.config.IClientConfig
-import com.netflix.loadbalancer.reactive.LoadBalancerCommand
-import feign._
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.core.env.Environment
private[rpc] class SpringMVCRPCSender private[rpc] (
private[rpc] val serviceInstance: ServiceInstance
) extends BaseRPCSender(serviceInstance.getApplicationName) {
- import SpringCloudFeignConfigurationCache._
-
override protected def getRPCInterceptors: Array[RPCInterceptor] =
RPCSpringBeanCache.getRPCInterceptors
override protected def createRPCInterceptorChain() =
new ServiceInstanceRPCInterceptorChain(0, getRPCInterceptors,
serviceInstance)
- protected def getRPCLoadBalancers: Array[RPCLoadBalancer] =
- RPCSpringBeanCache.getRPCLoadBalancers
-
- override protected def doBuilder(builder: Feign.Builder): Unit = {
- val client = getClient.asInstanceOf[LoadBalancerFeignClient]
- val newClient = new LoadBalancerFeignClient(
- client.getDelegate,
- new CachingSpringLoadBalancerFactory(getClientFactory) {
- override def create(clientName: String): FeignLoadBalancer = {
- val serverIntrospector =
- getClientFactory.getInstance(clientName,
classOf[ServerIntrospector])
- new FeignLoadBalancer(
- getClientFactory.getLoadBalancer(clientName),
- getClientFactory.getClientConfig(clientName),
- serverIntrospector
- ) {
- override def customizeLoadBalancerCommandBuilder(
- request: FeignLoadBalancer.RibbonRequest,
- config: IClientConfig,
- builder:
LoadBalancerCommand.Builder[FeignLoadBalancer.RibbonResponse]
- ): Unit = {
- val instance =
- if (getRPCLoadBalancers.isEmpty) None
- else {
- val requestBody =
SpringMVCRPCSender.getRequest(request).body()
- val requestStr = new String(requestBody,
DWCConfiguration.BDP_ENCODING.getValue)
- val obj = RPCConsumer.getRPCConsumer.toObject(
- BDPJettyServerHelper.gson.fromJson(requestStr,
classOf[Message])
- )
- obj match {
- case protocol: Protocol =>
- var serviceInstance: Option[ServiceInstance] = None
- for (lb <- getRPCLoadBalancers if
serviceInstance.isEmpty)
- serviceInstance = lb.choose(
- protocol,
- SpringMVCRPCSender.this.serviceInstance,
- getLoadBalancer
- )
- serviceInstance.foreach(f =>
- logger.info(
- "origin serviceInstance: " +
SpringMVCRPCSender.this.serviceInstance + ", chose serviceInstance: " + f
- )
- ) // TODO just for test
- serviceInstance
- case _ => None
- }
- }
- instance
- .orElse(Option(SpringMVCRPCSender.this.serviceInstance))
- .filter(s => StringUtils.isNotBlank(s.getInstance))
- .foreach { serviceInstance =>
- val server = RPCSpringBeanCache.getRPCServerLoader
- .getServer(getLoadBalancer, serviceInstance)
- builder.withServer(server)
- }
- }
- }
- }
- },
- getClientFactory
- )
- if (RPCConfiguration.ENABLE_SPRING_PARAMS) {
- builder.options(LoadBalancerOptionsUtils.getDefaultOptions)
- }
- super.doBuilder(builder)
- builder
- .contract(getContract)
- .encoder(getEncoder)
- .decoder(getDecoder)
- .client(newClient)
- .requestInterceptor(getRPCTicketIdRequestInterceptor)
- }
+ @Autowired
+ private var env: Environment = _
/**
* Deliver is an asynchronous method that requests the target microservice
asynchronously,
@@ -159,19 +66,12 @@ private[rpc] class SpringMVCRPCSender private[rpc] (
s"RPCSender(${serviceInstance.getApplicationName})"
} else s"RPCSender($getApplicationName, ${serviceInstance.getInstance})"
-}
-
-private object SpringMVCRPCSender {
- private var requestField: Field = _
-
- def getRequest(req: ClientRequest): Request = {
- if (requestField == null) synchronized {
- if (requestField == null) {
- requestField = req.getClass.getDeclaredField("request")
- requestField.setAccessible(true)
- }
+ override def getSenderInstance(): String = {
+ if (null != serviceInstance) {
+ serviceInstance.getInstance
+ } else {
+ null
}
- requestField.get(req).asInstanceOf[Request]
}
}
diff --git
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/utils/RPCUtils.scala
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/utils/RPCUtils.scala
index e7d48305ac..5ee3b1ca48 100644
---
a/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/utils/RPCUtils.scala
+++
b/linkis-commons/linkis-rpc/src/main/scala/org/apache/linkis/rpc/utils/RPCUtils.scala
@@ -25,13 +25,14 @@ import
org.apache.linkis.rpc.sender.{SpringCloudFeignConfigurationCache, SpringM
import org.apache.commons.lang3.StringUtils
+import
org.springframework.cloud.client.loadbalancer.RetryableStatusCodeException
+
import java.lang.reflect.UndeclaredThrowableException
import java.net.ConnectException
import java.util.Locale
import scala.collection.JavaConverters._
-import com.netflix.client.ClientException
import feign.RetryableException
object RPCUtils {
@@ -53,11 +54,10 @@ object RPCUtils {
}
case t: RuntimeException =>
t.getCause match {
- case client: ClientException =>
- StringUtils.isNotBlank(client.getErrorMessage) &&
- client.getErrorMessage.contains(
- "Load balancer does not have available server for client"
- )
+ // case client: ClientException =>
+ case client: RetryableStatusCodeException =>
+ StringUtils.isNotBlank(client.getMessage) &&
+ client.getMessage.contains("Load balancer does not have available
server for client")
case _ => false
}
case _ => false
diff --git
a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-server/src/main/java/org/apache/linkis/ecm/server/operator/EngineConnLogOperator.java
b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-server/src/main/java/org/apache/linkis/ecm/server/operator/EngineConnLogOperator.java
index c6f8368a1c..3d62df5c90 100644
---
a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-server/src/main/java/org/apache/linkis/ecm/server/operator/EngineConnLogOperator.java
+++
b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-server/src/main/java/org/apache/linkis/ecm/server/operator/EngineConnLogOperator.java
@@ -25,7 +25,7 @@ import org.apache.linkis.manager.common.operator.Operator;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.input.ReversedLinesFileReader;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Triple;
import java.io.File;
diff --git
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/engine/DefaultEngineReuseService.java
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/engine/DefaultEngineReuseService.java
index 5f372cae62..c1427b3068 100644
---
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/engine/DefaultEngineReuseService.java
+++
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/engine/DefaultEngineReuseService.java
@@ -47,7 +47,7 @@ import org.apache.linkis.rpc.message.annotation.Receiver;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
-import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.commons.lang3.tuple.MutablePair;
import org.springframework.beans.factory.annotation.Autowired;
diff --git
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/rm/service/impl/UserResourceService.java
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/rm/service/impl/UserResourceService.java
index 8ef4bf7689..4092e24f8f 100644
---
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/rm/service/impl/UserResourceService.java
+++
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/rm/service/impl/UserResourceService.java
@@ -38,7 +38,7 @@ import org.apache.linkis.manager.rm.utils.UserConfiguration;
import org.apache.linkis.server.BDPJettyServerHelper;
import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
diff --git
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/test/resources/application.properties
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/test/resources/application.properties
index 0e4fe8035f..57c5445637 100644
---
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/test/resources/application.properties
+++
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/test/resources/application.properties
@@ -22,7 +22,10 @@
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
spring.datasource.username=sa
spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#spring.datasource.schema=classpath:create_pg.sql
diff --git
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/test/resources/application.properties
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/test/resources/application.properties
index 0e4fe8035f..57c5445637 100644
---
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/test/resources/application.properties
+++
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/test/resources/application.properties
@@ -22,7 +22,10 @@
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
spring.datasource.username=sa
spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#spring.datasource.schema=classpath:create_pg.sql
diff --git
a/linkis-dist/helm/charts/linkis/templates/configmap-linkis-config.yaml
b/linkis-dist/helm/charts/linkis/templates/configmap-linkis-config.yaml
index 6437188298..90eeaed44b 100644
--- a/linkis-dist/helm/charts/linkis/templates/configmap-linkis-config.yaml
+++ b/linkis-dist/helm/charts/linkis/templates/configmap-linkis-config.yaml
@@ -94,12 +94,28 @@ data:
include: refresh,info
logging:
config: classpath:log4j2.xml
+ springfox:
+ documentation:
+ enabled: false
+ auto-startup: false
+ swagger-ui:
+ enabled: false
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: countSql
+ spring:
+ cloud:
+ loadbalancer:
+ cache:
+ enabled: false
+ main:
+ allow-circular-references: true
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher
#ribbon:
# ReadTimeout: 10000
@@ -107,19 +123,34 @@ data:
##disable kinif4j.production when you want to use apidoc during
development
knife4j:
- enable: true
- production: true
+ enable: false
+ production: false
application-eureka.yml: |
spring:
application:
name: linkis-mg-eureka
profiles: eureka
+ cloud:
+ loadbalancer:
+ cache:
+ enabled: false
+ main:
+ allow-circular-references: true
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher
freemarker:
cache: false
prefer-file-system-access: false
server:
port: {{ .Values.mgEureka.port }}
+ springfox:
+ documentation:
+ enabled: false
+ auto-startup: false
+ swagger-ui:
+ enabled: false
eureka:
instance:
preferIpAddress: true
@@ -140,6 +171,15 @@ data:
spring:
application:
name: linkis-cg-engineconn
+ cloud:
+ loadbalancer:
+ cache:
+ enabled: false
+ main:
+ allow-circular-references: true
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher
servlet:
multipart:
max-file-size: 500MB
@@ -156,6 +196,12 @@ data:
defaultZone: {{- include "linkis.registration.url" . | quote |
indent 1 }}
registry-fetch-interval-seconds: 8
initial-instance-info-replication-interval-seconds: 10
+ springfox:
+ documentation:
+ enabled: false
+ auto-startup: false
+ swagger-ui:
+ enabled: false
management:
endpoints:
web:
@@ -171,6 +217,11 @@ data:
wds.linkis.client.common.authStrategy=token
wds.linkis.client.common.tokenKey=Validation-Code
wds.linkis.client.common.tokenValue=BML-AUTH
+ spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+ spring.spring.cloud.loadbalancer.cache.enabled=false
+ springfox.documentation.enabled=false
+ springfox.documentation.auto-startup=false
+ springfox.documentation.swagger-ui.enabled=false
#wds.linkis.client.noncustomizable.enable.user.specification=true
#wds.linkis.client.noncustomizable.enable.proxy.user=true
@@ -230,6 +281,11 @@ data:
spring.spring.servlet.multipart.max-request-size=500MB
# note:value of zero means Jetty will never write to disk.
spring.spring.servlet.multipart.file-size-threshold=50MB
+ spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+ spring.spring.cloud.loadbalancer.cache.enabled=false
+ springfox.documentation.enabled=false
+ springfox.documentation.auto-startup=false
+ springfox.documentation.swagger-ui.enabled=false
linkis-mg-gateway.properties: |
#wds.linkis.server.restful.uri=/
@@ -255,6 +311,11 @@ data:
spring.server.port={{ .Values.mgGateway.port }}
## you may set service version if you want to distinguish different
configuration version
spring.eureka.instance.metadata-map.linkis.conf.version=v1
+ spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+ spring.spring.cloud.loadbalancer.cache.enabled=false
+ springfox.documentation.enabled=false
+ springfox.documentation.auto-startup=false
+ springfox.documentation.swagger-ui.enabled=false
linkis-cg-linkismanager.properties: |
##restful
@@ -271,6 +332,12 @@ data:
## you may set service version if you want to distinguish different
configuration version
spring.eureka.instance.metadata-map.linkis.conf.version=v1
+ spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+ spring.spring.cloud.loadbalancer.cache.enabled=false
+ springfox.documentation.enabled=false
+ springfox.documentation.auto-startup=false
+ springfox.documentation.swagger-ui.enabled=false
+
##Spring
spring.server.port={{ .Values.cgLinkisManager.port }}
@@ -287,6 +354,11 @@ data:
#wds.linkis.engineconn.env.keys=SPARK3_HOME,
spring.eureka.instance.metadata-map.linkis.conf.version=v1
+ spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+ spring.spring.cloud.loadbalancer.cache.enabled=false
+ springfox.documentation.enabled=false
+ springfox.documentation.auto-startup=false
+ springfox.documentation.swagger-ui.enabled=false
linkis-cg-engineplugin.properties: |
@@ -304,6 +376,11 @@ data:
##Spring
spring.server.port={{ .Values.cgEnginePlugin.port }}
+ spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+ spring.spring.cloud.loadbalancer.cache.enabled=false
+ springfox.documentation.enabled=false
+ springfox.documentation.auto-startup=false
+ springfox.documentation.swagger-ui.enabled=false
linkis-cg-entrance.properties: |
##restful
@@ -329,6 +406,11 @@ data:
## you may set service version if you want to distinguish different
configuration version
spring.eureka.instance.metadata-map.linkis.conf.version=v1
+ spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+ spring.spring.cloud.loadbalancer.cache.enabled=false
+ springfox.documentation.enabled=false
+ springfox.documentation.auto-startup=false
+ springfox.documentation.swagger-ui.enabled=false
linkis-ps-publicservice.properties: |
wds.linkis.server.mdm.service.instance.expire-in-seconds=1800
@@ -364,6 +446,11 @@ data:
spring.server.port={{ .Values.psPublicService.port }}
spring.spring.main.allow-bean-definition-overriding=true
spring.spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false
+ spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+ spring.spring.cloud.loadbalancer.cache.enabled=false
+ springfox.documentation.enabled=false
+ springfox.documentation.auto-startup=false
+ springfox.documentation.swagger-ui.enabled=false
# ps-cs prefix must be started with 'cs_'
spring.eureka.instance.metadata-map.route=cs_1_dev
diff --git a/linkis-dist/package/conf/application-engineconn.yml
b/linkis-dist/package/conf/application-engineconn.yml
index 4f9610513c..174ddd2305 100644
--- a/linkis-dist/package/conf/application-engineconn.yml
+++ b/linkis-dist/package/conf/application-engineconn.yml
@@ -13,6 +13,17 @@
# limitations under the License.
#
spring:
+ cloud:
+ loadbalancer:
+ cache:
+ enabled: false
+ main:
+ allow-circular-references: true
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher
+ servlet:
+ path: /api/rest_j/v1
application:
name: linkis-cg-engineconn
servlet:
@@ -41,4 +52,4 @@ management:
include: refresh,info,health,metrics
logging:
- config: classpath:log4j2.xml
+ config: classpath:log4j2.xml
\ No newline at end of file
diff --git a/linkis-dist/package/conf/application-linkis.yml
b/linkis-dist/package/conf/application-linkis.yml
index 868a942946..82fb281211 100644
--- a/linkis-dist/package/conf/application-linkis.yml
+++ b/linkis-dist/package/conf/application-linkis.yml
@@ -42,6 +42,15 @@ pagehelper:
params: countSql
spring:
+ cloud:
+ loadbalancer:
+ cache:
+ enabled: false
+ main:
+ allow-circular-references: true
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher
servlet:
multipart:
max-file-size: 500MB
diff --git a/linkis-dist/package/conf/linkis.properties
b/linkis-dist/package/conf/linkis.properties
index c04294c1b0..30904622b2 100644
--- a/linkis-dist/package/conf/linkis.properties
+++ b/linkis-dist/package/conf/linkis.properties
@@ -1,4 +1,4 @@
-#
+#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
@@ -84,6 +84,8 @@
wds.linkis.gateway.conf.metadataquery.list=metadatamanager,metadataquery
# note:
org.springframework.cloud.config.client.ConfigServiceBootstrapConfiguration.configServicePropertySource
need to disable
spring.spring.cloud.config.enabled=false
+spring.spring.mvc.pathmatch.matching-strategy=ant_path_matcher
+spring.spring.cloud.loadbalancer.cache.enabled=false
# linkis user ticket sso
# redis stand-alone
diff --git
a/linkis-engineconn-plugins/elasticsearch/src/main/java/org/apache/linkis/engineplugin/elasticsearch/executor/client/impl/ElasticSearchExecutorImpl.java
b/linkis-engineconn-plugins/elasticsearch/src/main/java/org/apache/linkis/engineplugin/elasticsearch/executor/client/impl/ElasticSearchExecutorImpl.java
index 14f96357fc..bb0b35222b 100644
---
a/linkis-engineconn-plugins/elasticsearch/src/main/java/org/apache/linkis/engineplugin/elasticsearch/executor/client/impl/ElasticSearchExecutorImpl.java
+++
b/linkis-engineconn-plugins/elasticsearch/src/main/java/org/apache/linkis/engineplugin/elasticsearch/executor/client/impl/ElasticSearchExecutorImpl.java
@@ -22,7 +22,7 @@ import
org.apache.linkis.engineplugin.elasticsearch.executor.client.*;
import org.apache.linkis.protocol.constants.TaskConstant;
import org.apache.linkis.storage.utils.StorageUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import java.util.Locale;
import java.util.Map;
diff --git
a/linkis-engineconn-plugins/impala/src/main/java/org/apache/linkis/engineplugin/impala/client/thrift/ImpalaThriftClient.java
b/linkis-engineconn-plugins/impala/src/main/java/org/apache/linkis/engineplugin/impala/client/thrift/ImpalaThriftClient.java
index 63d363fa9d..5cbbec4132 100644
---
a/linkis-engineconn-plugins/impala/src/main/java/org/apache/linkis/engineplugin/impala/client/thrift/ImpalaThriftClient.java
+++
b/linkis-engineconn-plugins/impala/src/main/java/org/apache/linkis/engineplugin/impala/client/thrift/ImpalaThriftClient.java
@@ -26,7 +26,7 @@ import
org.apache.linkis.engineplugin.impala.client.protocol.ExecStatus;
import org.apache.linkis.engineplugin.impala.client.protocol.ExecSummary;
import org.apache.linkis.engineplugin.impala.client.util.ThriftUtil;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.hive.service.rpc.thrift.TExecuteStatementReq;
import org.apache.hive.service.rpc.thrift.TExecuteStatementResp;
import org.apache.hive.service.rpc.thrift.TOperationHandle;
diff --git
a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/test/resources/application.properties
index 970208fe9e..089719f0d4 100644
---
a/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-bml/linkis-bml-server/src/test/resources/application.properties
@@ -21,7 +21,10 @@ spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
spring.datasource.username=sa
spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#pgtest
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
#spring.datasource.schema=classpath:create_pg.sql
diff --git
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/TenantConfigrationRestfulApi.java
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/TenantConfigrationRestfulApi.java
index 9a41fe67cc..3bd5b80834 100644
---
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/TenantConfigrationRestfulApi.java
+++
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/TenantConfigrationRestfulApi.java
@@ -25,7 +25,7 @@ import
org.apache.linkis.governance.common.constant.job.JobRequestConstants;
import org.apache.linkis.server.Message;
import org.apache.linkis.server.utils.ModuleUserUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
diff --git
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/UserIpConfigrationRestfulApi.java
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/UserIpConfigrationRestfulApi.java
index 78e7003d49..ad692703f3 100644
---
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/UserIpConfigrationRestfulApi.java
+++
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/restful/api/UserIpConfigrationRestfulApi.java
@@ -25,7 +25,7 @@ import
org.apache.linkis.governance.common.constant.job.JobRequestConstants;
import org.apache.linkis.server.Message;
import org.apache.linkis.server.utils.ModuleUserUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
diff --git
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/TenantConfigServiceImpl.java
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/TenantConfigServiceImpl.java
index df64521ad4..a5eb4c1098 100644
---
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/TenantConfigServiceImpl.java
+++
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/TenantConfigServiceImpl.java
@@ -25,7 +25,7 @@ import org.apache.linkis.configuration.util.HttpsUtil;
import org.apache.linkis.governance.common.constant.job.JobRequestConstants;
import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
diff --git
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/UserIpConfigServiceImpl.java
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/UserIpConfigServiceImpl.java
index 9c96121156..66f900b2a3 100644
---
a/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/UserIpConfigServiceImpl.java
+++
b/linkis-public-enhancements/linkis-configuration/src/main/java/org/apache/linkis/configuration/service/impl/UserIpConfigServiceImpl.java
@@ -24,7 +24,7 @@ import
org.apache.linkis.configuration.service.UserIpConfigService;
import org.apache.linkis.configuration.util.CommonUtils;
import org.apache.linkis.governance.common.constant.job.JobRequestConstants;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
diff --git
a/linkis-public-enhancements/linkis-configuration/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-configuration/src/test/resources/application.properties
index 1dd49b9917..1cbe3a21d5 100644
---
a/linkis-public-enhancements/linkis-configuration/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-configuration/src/test/resources/application.properties
@@ -36,7 +36,10 @@
wds.linkis.gateway.conf.publicservice.list=query,jobhistory,application,configur
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
spring.datasource.username=sa
spring.datasource.password=
#pgtest
diff --git
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.properties
index 737087ebf0..757cc7b0c6 100644
---
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.properties
@@ -35,7 +35,10 @@
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
spring.datasource.username=sa
spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#spring.datasource.schema=classpath:create_pg.sql
spring.main.web-application-type=servlet
diff --git
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.yml
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.yml
index e1290d6d79..c1b1cc0732 100644
---
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.yml
+++
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/test/resources/application.yml
@@ -16,6 +16,15 @@
server:
port: 9010
spring:
+ cloud:
+ loadbalancer:
+ cache:
+ enabled: false
+ main:
+ allow-circular-references: true
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher
application:
name: linkis-ps-cs
@@ -33,3 +42,7 @@ management:
web:
exposure:
include: refresh,info
+
+knife4j:
+ enable: false
+ production: false
diff --git
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/resources/application.properties
index 54525ee00b..2adc4e001b 100644
---
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/resources/application.properties
@@ -22,7 +22,10 @@
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
spring.datasource.username=sa
spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#spring.datasource.schema=classpath:create_pg.sql
diff --git
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/test/resources/application.properties
index a91269b96b..6071e0acce 100644
---
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/test/resources/application.properties
@@ -34,7 +34,10 @@ spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
spring.datasource.username=sa
spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#pgtest
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
#spring.datasource.schema=classpath:create_pg.sql
diff --git
a/linkis-public-enhancements/linkis-instance-label/linkis-instance-label-server/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-instance-label/linkis-instance-label-server/src/test/resources/application.properties
index b8b65f39b6..86a03a279d 100644
---
a/linkis-public-enhancements/linkis-instance-label/linkis-instance-label-server/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-instance-label/linkis-instance-label-server/src/test/resources/application.properties
@@ -22,7 +22,10 @@
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
spring.datasource.username=sa
spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#spring.datasource.schema=classpath:create_pg.sql
mybatis-plus.mapper-locations=classpath*:mapper/common/*.xml,classpath*:mapper/mysql/*.xml
diff --git
a/linkis-public-enhancements/linkis-jobhistory/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-jobhistory/src/test/resources/application.properties
index 66d529424d..5555d84e1d 100644
---
a/linkis-public-enhancements/linkis-jobhistory/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-jobhistory/src/test/resources/application.properties
@@ -35,7 +35,10 @@
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
spring.datasource.username=sa
spring.datasource.password=
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#spring.datasource.schema=classpath:create_pg.sql
diff --git
a/linkis-public-enhancements/linkis-pes-publicservice/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-pes-publicservice/src/test/resources/application.properties
index f997dc0727..a7fe5fb166 100644
---
a/linkis-public-enhancements/linkis-pes-publicservice/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-pes-publicservice/src/test/resources/application.properties
@@ -41,9 +41,12 @@ logging.level.org.springframework.web=trace
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
-spring.datasource.schema=classpath:basedata_manager_create.sql,classpath:error_code_create.sql,classpath:variable_create.sql
+spring.sql.init.schema-locations=classpath:basedata_manager_create.sql,classpath:error_code_create.sql,classpath:variable_create.sql
spring.datasource.username=sa
spring.datasource.password=
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#pgtest
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
#spring.datasource.schema=classpath:basedata_manager_create_pg.sql,classpath:error_code_create_pg.sql,classpath:variable_create_pg.sql
diff --git
a/linkis-public-enhancements/linkis-ps-common-lock/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-ps-common-lock/src/test/resources/application.properties
index f7fa3b6aae..53488b6678 100644
---
a/linkis-public-enhancements/linkis-ps-common-lock/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-ps-common-lock/src/test/resources/application.properties
@@ -32,7 +32,10 @@
wds.linkis.gateway.conf.publicservice.list=query,jobhistory,application,configur
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
spring.datasource.username=sa
spring.datasource.password=
#pgtest
diff --git
a/linkis-public-enhancements/linkis-udf/linkis-udf-service/src/test/resources/application.properties
b/linkis-public-enhancements/linkis-udf/linkis-udf-service/src/test/resources/application.properties
index 6a95e9a1e8..4a547a1b58 100644
---
a/linkis-public-enhancements/linkis-udf/linkis-udf-service/src/test/resources/application.properties
+++
b/linkis-public-enhancements/linkis-udf/linkis-udf-service/src/test/resources/application.properties
@@ -33,7 +33,10 @@ wds.linkis.login_encrypt.enable=false
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#spring.datasource.schema=classpath:create_pg.sql
spring.datasource.username=sa
spring.datasource.password=
diff --git
a/linkis-spring-cloud-services/linkis-service-discovery/linkis-eureka/pom.xml
b/linkis-spring-cloud-services/linkis-service-discovery/linkis-eureka/pom.xml
index 355864379e..3780541468 100644
---
a/linkis-spring-cloud-services/linkis-service-discovery/linkis-eureka/pom.xml
+++
b/linkis-spring-cloud-services/linkis-service-discovery/linkis-eureka/pom.xml
@@ -36,6 +36,28 @@
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-module</artifactId>
<scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.github.xiaoymin</groupId>
+ <artifactId>knife4j-spring-boot-starter</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-schema</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-spring-web</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-spring-webflux</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-spring-webmvc</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
diff --git
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/java/org/apache/linkis/gateway/authentication/dao/TokenDaoTest.java
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/java/org/apache/linkis/gateway/authentication/dao/TokenDaoTest.java
index 2c95230233..d9ccad7e3c 100644
---
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/java/org/apache/linkis/gateway/authentication/dao/TokenDaoTest.java
+++
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/java/org/apache/linkis/gateway/authentication/dao/TokenDaoTest.java
@@ -28,7 +28,8 @@ import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
class TokenDaoTest extends BaseDaoTest {
diff --git
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/resources/application.properties
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/resources/application.properties
index b012930d58..82b0cc6314 100644
---
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/resources/application.properties
+++
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-authentication/src/test/resources/application.properties
@@ -32,7 +32,10 @@ wds.linkis.login_encrypt.enable=false
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=true
-spring.datasource.schema=classpath:create.sql
+spring.sql.init.schema-locations=classpath:create.sql
+springfox.documentation.enabled=false
+springfox.documentation.auto-startup=false
+springfox.documentation.swagger-ui.enabled=false
#pgtest
#spring.datasource.url=jdbc:h2:mem:testPgDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_LOWER=TRUE;
#spring.datasource.schema=classpath:create_pg.sql
diff --git
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/pom.xml
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/pom.xml
index 37f15698ad..322c2c61b7 100644
---
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/pom.xml
+++
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/pom.xml
@@ -80,6 +80,16 @@
<artifactId>springfox-schema</artifactId>
<version>${springfox.version}</version>
</dependency>
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-spring-webmvc</artifactId>
+ <version>${springfox.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-spring-webflux</artifactId>
+ <version>${springfox.version}</version>
+ </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
diff --git
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewaySpringConfiguration.scala
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewaySpringConfiguration.scala
index 046edea0c9..2c57084278 100644
---
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewaySpringConfiguration.scala
+++
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/config/GatewaySpringConfiguration.scala
@@ -40,34 +40,21 @@ import java.util.stream.Collectors
@Configuration
class GatewaySpringConfiguration {
- @Autowired
- private var userRestful: UserRestful = _
-
@Autowired
private var tokenService: TokenService = _
@PostConstruct
def init(): Unit = {
- SecurityFilter.setUserRestful(userRestful)
TokenAuthentication.setTokenService(tokenService)
}
-// @Bean(Array("defaultGatewayParser"))
-// @ConditionalOnMissingBean
-// @Autowired(required = false)
-// def createGatewayParser(gatewayParsers: Array[GatewayParser]):
DefaultGatewayParser =
-// new DefaultGatewayParser(gatewayParsers)
-//
-// @Bean(Array("defaultGatewayRouter"))
-// @ConditionalOnMissingBean
-// def createGatewayRouter(): DefaultGatewayParser = new DefaultGatewayRouter
-
@Bean(Array("userRestful"))
@ConditionalOnMissingBean
@Autowired(required = false)
def createUserRestful(securityHooks: Array[SecurityHook]): UserRestful = {
val userRestful = new LDAPUserRestful
if (securityHooks != null) userRestful.setSecurityHooks(securityHooks)
+ SecurityFilter.setUserRestful(userRestful)
userRestful
}
diff --git
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/pom.xml
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/pom.xml
index 6dec0ef829..ce3e4f8091 100644
---
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/pom.xml
+++
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/pom.xml
@@ -80,10 +80,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-gateway-core</artifactId>
- </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-reactor-netty</artifactId>
diff --git
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/java/org/apache/linkis/gateway/springcloud/http/GatewayAuthorizationFilter.java
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/java/org/apache/linkis/gateway/springcloud/http/GatewayAuthorizationFilter.java
index 71e53fb2b6..c09aed0e8a 100644
---
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/java/org/apache/linkis/gateway/springcloud/http/GatewayAuthorizationFilter.java
+++
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/java/org/apache/linkis/gateway/springcloud/http/GatewayAuthorizationFilter.java
@@ -27,6 +27,7 @@ import org.apache.linkis.gateway.security.LinkisPreFilter;
import org.apache.linkis.gateway.security.LinkisPreFilter$;
import org.apache.linkis.gateway.security.SecurityFilter;
import org.apache.linkis.gateway.springcloud.SpringCloudGatewayConfiguration;
+import org.apache.linkis.rpc.constant.RpcConstant;
import org.apache.linkis.server.Message;
import org.apache.commons.lang3.StringUtils;
@@ -36,7 +37,6 @@ import
org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.cloud.gateway.route.Route;
import org.springframework.cloud.gateway.route.RouteDefinition;
-import org.springframework.cloud.gateway.support.DefaultServerRequest;
import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
import org.springframework.core.Ordered;
import org.springframework.core.codec.AbstractDataBufferDecoder;
@@ -47,6 +47,8 @@ import
org.springframework.http.server.reactive.AbstractServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.reactive.function.server.HandlerStrategies;
+import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.server.ServerWebExchange;
import java.nio.charset.StandardCharsets;
@@ -79,11 +81,12 @@ public class GatewayAuthorizationFilter implements
GlobalFilter, Ordered {
}
private String getRequestBody(ServerWebExchange exchange) {
- // StringBuilder requestBody = new StringBuilder();
- DefaultServerRequest serverRequest = new DefaultServerRequest(exchange);
+ ServerRequest defaultServerRequest =
+ ServerRequest.create(exchange,
HandlerStrategies.withDefaults().messageReaders());
+
String requestBody = null;
try {
- requestBody = serverRequest.bodyToMono(String.class).toFuture().get();
+ requestBody =
defaultServerRequest.bodyToMono(String.class).toFuture().get();
} catch (Exception e) {
GatewayWarnException exception =
new GatewayWarnException(
@@ -116,7 +119,8 @@ public class GatewayAuthorizationFilter implements
GlobalFilter, Ordered {
return gatewayContext;
}
- private Route getRealRoute(Route route, ServiceInstance serviceInstance) {
+ private Route getRealRoute(
+ Route route, ServiceInstance serviceInstance, ServerWebExchange
exchange) {
String routeUri = route.getUri().toString();
String scheme = route.getUri().getScheme();
if
(routeUri.startsWith(SpringCloudGatewayConfiguration.ROUTE_URI_FOR_WEB_SOCKET_HEADER()))
{
@@ -128,7 +132,10 @@ public class GatewayAuthorizationFilter implements
GlobalFilter, Ordered {
}
String uri = scheme + serviceInstance.getApplicationName();
if (StringUtils.isNotBlank(serviceInstance.getInstance())) {
- uri = scheme +
SpringCloudGatewayConfiguration.mergeServiceInstance(serviceInstance);
+ exchange
+ .getRequest()
+ .mutate()
+ .header(RpcConstant.FIXED_INSTANCE, serviceInstance.getInstance());
}
return Route.async()
.id(route.getId())
@@ -194,7 +201,7 @@ public class GatewayAuthorizationFilter implements
GlobalFilter, Ordered {
}
Route route =
exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
if (serviceInstance != null) {
- Route realRoute = getRealRoute(route, serviceInstance);
+ Route realRoute = getRealRoute(route, serviceInstance, exchange);
exchange.getAttributes().put(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR,
realRoute);
} else {
RouteDefinition realRd = null;
@@ -246,7 +253,8 @@ public class GatewayAuthorizationFilter implements
GlobalFilter, Ordered {
Route route =
exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
BaseGatewayContext gatewayContext = getBaseGatewayContext(exchange, route);
if (!gatewayContext.isWebSocketRequest() &&
parser.shouldContainRequestBody(gatewayContext)) {
- DefaultServerRequest defaultServerRequest = new
DefaultServerRequest(exchange);
+ ServerRequest defaultServerRequest =
+ ServerRequest.create(exchange,
HandlerStrategies.withDefaults().messageReaders());
defaultServerRequest.messageReaders().stream()
.filter(reader -> reader instanceof DecoderHttpMessageReader)
.filter(
diff --git
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/scala/org/apache/linkis/gateway/springcloud/SpringCloudGatewayConfiguration.scala
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/scala/org/apache/linkis/gateway/springcloud/SpringCloudGatewayConfiguration.scala
index dd1cf6c038..6049bc3c3f 100644
---
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/scala/org/apache/linkis/gateway/springcloud/SpringCloudGatewayConfiguration.scala
+++
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-spring-cloud-gateway/src/main/scala/org/apache/linkis/gateway/springcloud/SpringCloudGatewayConfiguration.scala
@@ -32,20 +32,19 @@ import org.apache.linkis.server.conf.ServerConfiguration
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.AutoConfigureAfter
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
-import org.springframework.cloud.client
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient
import org.springframework.cloud.gateway.config.{GatewayAutoConfiguration,
GatewayProperties}
import org.springframework.cloud.gateway.filter._
import org.springframework.cloud.gateway.route.{Route, RouteLocator}
-import org.springframework.cloud.gateway.route.builder.{PredicateSpec,
RouteLocatorBuilder}
-import org.springframework.cloud.netflix.ribbon._
+import org.springframework.cloud.gateway.route.builder.{
+ Buildable,
+ PredicateSpec,
+ RouteLocatorBuilder
+}
import org.springframework.context.annotation.{Bean, Configuration}
import org.springframework.web.reactive.socket.client.WebSocketClient
import org.springframework.web.reactive.socket.server.WebSocketService
-import scala.collection.JavaConverters._
-
-import com.netflix.loadbalancer.Server
import org.slf4j.{Logger, LoggerFactory}
@Configuration
@@ -89,9 +88,9 @@ class SpringCloudGatewayConfiguration {
.routes()
.route(
"api",
- new java.util.function.Function[PredicateSpec, Route.AsyncBuilder] {
+ new java.util.function.Function[PredicateSpec, Buildable[Route]] {
- override def apply(t: PredicateSpec): Route.AsyncBuilder = t
+ override def apply(t: PredicateSpec): Buildable[Route] = t
.path(API_URL_PREFIX + "**")
.uri(ROUTE_URI_FOR_HTTP_HEADER +
Sender.getThisServiceInstance.getApplicationName)
@@ -99,9 +98,9 @@ class SpringCloudGatewayConfiguration {
)
.route(
"dws",
- new java.util.function.Function[PredicateSpec, Route.AsyncBuilder] {
+ new java.util.function.Function[PredicateSpec, Buildable[Route]] {
- override def apply(t: PredicateSpec): Route.AsyncBuilder = t
+ override def apply(t: PredicateSpec): Buildable[Route] = t
.path(PROXY_URL_PREFIX + "**")
.uri(ROUTE_URI_FOR_HTTP_HEADER +
Sender.getThisServiceInstance.getApplicationName)
@@ -109,9 +108,9 @@ class SpringCloudGatewayConfiguration {
)
.route(
"ws_http",
- new java.util.function.Function[PredicateSpec, Route.AsyncBuilder] {
+ new java.util.function.Function[PredicateSpec, Buildable[Route]] {
- override def apply(t: PredicateSpec): Route.AsyncBuilder = t
+ override def apply(t: PredicateSpec): Buildable[Route] = t
.path(SpringCloudGatewayConfiguration.WEBSOCKET_URI + "info/**")
.uri(ROUTE_URI_FOR_HTTP_HEADER +
Sender.getThisServiceInstance.getApplicationName)
@@ -119,9 +118,9 @@ class SpringCloudGatewayConfiguration {
)
.route(
"ws",
- new java.util.function.Function[PredicateSpec, Route.AsyncBuilder] {
+ new java.util.function.Function[PredicateSpec, Buildable[Route]] {
- override def apply(t: PredicateSpec): Route.AsyncBuilder = t
+ override def apply(t: PredicateSpec): Buildable[Route] = t
.path(SpringCloudGatewayConfiguration.WEBSOCKET_URI + "**")
.uri(ROUTE_URI_FOR_WEB_SOCKET_HEADER +
Sender.getThisServiceInstance.getApplicationName)
@@ -129,55 +128,6 @@ class SpringCloudGatewayConfiguration {
)
.build()
- @Bean
- def createLoadBalancerClient(springClientFactory: SpringClientFactory):
RibbonLoadBalancerClient =
- new RibbonLoadBalancerClient(springClientFactory) {
-
- override def getServer(serviceId: String): Server = if
(isMergeModuleInstance(serviceId)) {
- val serviceInstance = getServiceInstance(serviceId)
- logger.info("redirect to " + serviceInstance)
- val lb = this.getLoadBalancer(serviceInstance.getApplicationName)
- lb.getAllServers.asScala.find(_.getHostPort ==
serviceInstance.getInstance).get
- } else super.getServer(serviceId)
-
- def isSecure(server: Server, serviceId: String) = {
- val config = springClientFactory.getClientConfig(serviceId)
- val serverIntrospector = serverIntrospectorFun(serviceId)
- RibbonUtils.isSecure(config, serverIntrospector, server)
- }
-
- def serverIntrospectorFun(serviceId: String) = {
- var serverIntrospector =
- springClientFactory.getInstance(serviceId,
classOf[ServerIntrospector])
- if (serverIntrospector == null) serverIntrospector = new
DefaultServerIntrospector
- serverIntrospector
- }
-
- override def choose(serviceId: String, hint: Any):
client.ServiceInstance =
- if (isMergeModuleInstance(serviceId)) {
- val serviceInstance = getServiceInstance(serviceId)
- logger.info("redirect to " + serviceInstance)
- val lb = this.getLoadBalancer(serviceInstance.getApplicationName)
- val serverOption =
- lb.getAllServers.asScala.find(_.getHostPort ==
serviceInstance.getInstance)
- if (serverOption.isDefined) {
- val server = serverOption.get
- new RibbonLoadBalancerClient.RibbonServer(
- serviceId,
- server,
- isSecure(server, serviceId),
- serverIntrospectorFun(serviceId).getMetadata(server)
- )
- } else {
- logger.warn(
- "RibbonLoadBalancer not have Server, execute default super
choose method" + serviceInstance
- )
- super.choose(serviceInstance.getApplicationName, hint)
- }
- } else super.choose(serviceId, hint)
-
- }
-
@Bean
@ConditionalOnProperty(name = Array("spring.cloud.gateway.url.enabled"),
matchIfMissing = true)
def linkisGatewayHttpHeadersFilter(): LinkisGatewayHttpHeadersFilter = {
diff --git a/pom.xml b/pom.xml
index d27ef8f9a8..05691218ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -167,8 +167,8 @@
<httpclient.version>4.5.13</httpclient.version>
<httpmime.version>${httpclient.version}</httpmime.version>
- <knife4j.version>2.0.9</knife4j.version>
- <springfox.version>2.10.5</springfox.version>
+ <knife4j.version>3.0.3</knife4j.version>
+ <springfox.version>3.0.0</springfox.version>
<poi.version>5.2.3</poi.version>
<reflections.version>0.9.12</reflections.version>
@@ -219,12 +219,13 @@
<h2.version>2.2.220</h2.version>
<!-- spring -->
- <spring-framework.version>5.2.23.RELEASE</spring-framework.version>
- <spring-security.version>5.7.5</spring-security.version>
- <spring.boot.version>2.3.12.RELEASE</spring.boot.version>
- <spring-netflix.version>2.2.9.RELEASE</spring-netflix.version>
- <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
- <spring.cloud.nacos.version>2.2.9.RELEASE</spring.cloud.nacos.version>
+ <spring-framework.version>5.3.27</spring-framework.version>
+ <spring-security.version>5.7.8</spring-security.version>
+ <spring.boot.version>2.7.11</spring.boot.version>
+ <spring-netflix.version>3.1.7</spring-netflix.version>
+ <spring-cloud.version>2021.0.8</spring-cloud.version>
+ <spring-cloud-alibaba.version>2021.0.6.0</spring-cloud-alibaba.version>
+ <spring-cloud-common.version>3.1.7</spring-cloud-common.version>
<!-- platform encoding override -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -1366,7 +1367,7 @@
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
- <version>${spring.cloud.nacos.version}</version>
+ <version>${spring-cloud-alibaba.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
diff --git a/tool/dependencies/known-dependencies.txt
b/tool/dependencies/known-dependencies.txt
index d39673e6ff..5954d026a4 100644
--- a/tool/dependencies/known-dependencies.txt
+++ b/tool/dependencies/known-dependencies.txt
@@ -4,6 +4,7 @@ LatencyUtils-2.0.3.jar
ST4-4.0.4.jar
SparseBitSet-1.2.jar
accessors-smart-2.3.1.jar
+accessors-smart-2.4.9.jar
aircompressor-0.10.jar
akka-actor_2.12-2.5.21.jar
akka-protobuf_2.12-2.5.21.jar
@@ -18,6 +19,8 @@ ant-launcher-1.10.12.jar
antlr-2.7.7.jar
antlr-runtime-3.4.jar
antlr-runtime-3.5.2.jar
+annotations-13.0.jar
+annotations-17.0.0.jar
aopalliance-1.0.jar
aopalliance-repackaged-2.4.0-b34.jar
archaius-core-0.7.7.jar
@@ -29,6 +32,7 @@ asm-analysis-9.3.jar
asm-commons-9.3.jar
asm-tree-9.3.jar
aspectjweaver-1.9.6.jar
+aspectjweaver-1.9.7.jar
audience-annotations-0.5.0.jar
automaton-1.11-8.jar
avatica-1.11.0.jar
@@ -37,7 +41,9 @@ avro-1.8.2.jar
avro-1.10.1.jar
avro-1.10.2.jar
aws-java-sdk-core-1.11.792.jar
+aws-java-sdk-core-1.12.261.jar
aws-java-sdk-kms-1.11.792.jar
+aws-java-sdk-kms-1.12.261.jar
aws-java-sdk-s3-1.11.792.jar
aws-java-sdk-s3-1.12.261.jar
automaton-1.11-8.jar
@@ -48,8 +54,12 @@ bonecp-0.8.0.RELEASE.jar
bootstrap-0.191.jar
bval-jsr-2.0.0.jar
byte-buddy-1.10.22.jar
+brave-5.13.9.jar
+brave-instrumentation-http-5.13.9.jar
+byte-buddy-1.12.23.jar
caffeine-2.8.4.jar
caffeine-2.8.8.jar
+caffeine-2.9.3.jar
calcite-core-1.16.0.jar
calcite-druid-1.16.0.jar
calcite-linq4j-1.16.0.jar
@@ -60,6 +70,7 @@ checker-qual-3.5.0.jar
chill-java-0.7.6.jar
chill_2.12-0.7.6.jar
classgraph-4.1.7.jar
+classgraph-4.8.83.jar
classmate-1.5.1.jar
clickhouse-jdbc-0.4.6.jar
client-3.0.0.jar
@@ -69,9 +80,11 @@ commons-crypto-1.0.0.jar
commons-el-1.0.jar
commons-codec-1.10.jar
commons-codec-1.14.jar
+commons-codec-1.15.jar
commons-collections-3.2.2.jar
commons-collections4-4.4.jar
commons-compiler-3.1.4.jar
+commons-compiler-3.1.9.jar
commons-compress-1.21.jar
commons-configuration-1.10.jar
commons-configuration2-2.1.1.jar
@@ -90,6 +103,7 @@ commons-math3-3.6.1.jar
commons-net-3.9.0.jar
commons-pool-1.6.jar
commons-pool2-2.8.1.jar
+commons-pool2-2.11.1.jar
commons-text-1.10.0.jar
concurrent-0.191.jar
config-1.3.3.jar
@@ -111,9 +125,12 @@ elasticsearch-rest-client-sniffer-7.6.2.jar
error_prone_annotations-2.18.0.jar
error_prone_annotations-2.3.4.jar
error_prone_annotations-2.4.0.jar
+error_prone_annotations-2.10.0.jar
esri-geometry-api-2.0.0.jar
eureka-client-1.10.14.jar
+eureka-client-1.10.17.jar
eureka-core-1.10.14.jar
+eureka-core-1.10.17.jar
evictor-1.0.0.jar
excel-streaming-reader-4.0.5.jar
expiringmap-0.5.6.jar
@@ -122,10 +139,12 @@ failureaccess-1.0.1.jar
fastutil-6.5.6.jar
fastutil-7.0.13.jar
feign-core-10.12.jar
+feign-core-11.10.jar
feign-form-3.8.0.jar
feign-form-spring-3.8.0.jar
feign-hystrix-10.12.jar
feign-slf4j-10.12.jar
+feign-slf4j-11.10.jar
flatbuffers-1.2.0-3f79e055.jar
flink-annotations-1.12.2.jar
flink-clients_2.12-1.12.2.jar
@@ -202,6 +221,7 @@ objenesis-3.2.jar
snappy-java-1.1.8.3.jar
force-shading-1.12.2.jar
freemarker-2.3.31.jar
+freemarker-2.3.32.jar
generex-1.0.2.jar
grizzled-slf4j_2.12-1.3.2.jar
gson-2.8.9.jar
@@ -236,6 +256,7 @@ hadoop-yarn-registry-3.3.4.jar
hazelcast-5.3.0.jar
hibernate-validator-5.1.2.Final.jar
hibernate-validator-6.1.7.Final.jar
+hibernate-validator-6.2.5.Final.jar
hive-classification-3.1.3.jar
hive-common-3.1.3.jar
hive-exec-3.1.3.jar
@@ -259,10 +280,15 @@ hk2-utils-2.4.0-b34.jar
hppc-0.7.2.jar
htrace-core-3.1.0-incubating.jar
httpasyncclient-4.1.4.jar
+httpasyncclient-4.1.5.jar
httpclient-4.5.13.jar
+httpclient-4.5.14.jar
httpcore-4.4.14.jar
+httpcore-4.4.16.jar
httpcore-nio-4.4.14.jar
+httpcore-nio-4.4.16.jar
httpmime-4.5.13.jar
+httpmime-4.5.14.jar
hystrix-core-1.5.18.jar
ini4j-0.5.4.jar
ion-java-1.0.2.jar
@@ -301,6 +327,7 @@ jakarta.websocket-api-1.1.2.jar
jakarta.xml.bind-api-2.3.3.jar
jamon-runtime-2.3.1.jar
janino-3.1.4.jar
+janino-3.1.9.jar
javassist-3.27.0-GA.jar
javax-websocket-client-impl-9.4.48.v20220622.jar
javax-websocket-server-impl-9.4.48.v20220622.jar
@@ -315,14 +342,18 @@ javax.ws.rs-api-2.0.1.jar
javolution-5.5.1.jar
jaxb-api-2.3.1.jar
jaxb-runtime-2.3.4.jar
+jaxb-runtime-2.3.8.jar
jboss-logging-3.4.2.Final.jar
+jboss-logging-3.4.3.Final.jar
jcip-annotations-1.0-1.jar
jcl-over-slf4j-1.7.30.jar
+jcl-over-slf4j-1.7.36.jar
jcommander-1.81.jar
jdbi3-core-3.4.0.jar
jdbi3-sqlobject-3.4.0.jar
jdo-api-3.0.1.jar
jdom2-2.0.6.jar
+jdom2-2.0.6.1.jar
jedis-3.9.0.jar
jersey-apache-client4-1.19.4.jar
jersey-client-1.19.4.jar
@@ -355,6 +386,7 @@ jetty-xml-9.4.48.v20220622.jar
jline-2.14.6.jar
jline-3.9.0.jar
jmespath-java-1.11.792.jar
+jmespath-java-1.12.261.jar
jmxutils-1.19.jar
jna-5.12.1.jar
jna-platform-5.12.1.jar
@@ -370,6 +402,7 @@ json-0.193.jar
json-1.8.jar
json-path-2.7.0.jar
json-smart-2.3.1.jar
+json-smart-2.4.10.jar
jsp-api-2.1.jar
jsqlparser-4.2.jar
jsr305-1.3.9.jar
@@ -379,8 +412,10 @@ jsr311-api-1.1.1.jar
jta-1.1.jar
jts-core-1.16.1.jar
jul-to-slf4j-1.7.30.jar
+jul-to-slf4j-1.7.36.jar
kafka-clients-2.5.1.jar
kafka-clients-2.7.0.jar
+kafka-clients-3.1.2.jar
kerb-admin-1.0.1.jar
kerb-client-1.0.1.jar
kerb-common-1.0.1.jar
@@ -396,35 +431,63 @@ kerby-pkix-1.0.1.jar
kerby-util-1.0.1.jar
kerby-xdr-1.0.1.jar
knife4j-annotations-2.0.9.jar
+knife4j-annotations-3.0.3.jar
knife4j-core-2.0.9.jar
+knife4j-core-3.0.3.jar
knife4j-spring-2.0.9.jar
+knife4j-spring-3.0.3.jar
knife4j-spring-boot-autoconfigure-2.0.9.jar
+knife4j-spring-boot-autoconfigure-3.0.3.jar
knife4j-spring-boot-starter-2.0.9.jar
+knife4j-spring-boot-starter-3.0.3.jar
knife4j-spring-ui-2.0.9.jar
+knife4j-spring-ui-3.0.3.jar
kotlin-stdlib-1.3.72.jar
+kotlin-stdlib-1.6.21.jar
kotlin-stdlib-common-1.3.72.jar
+kotlin-stdlib-common-1.6.21.jar
+kotlin-stdlib-jdk7-1.6.21.jar
+kotlin-stdlib-jdk8-1.6.21.jar
kryo-2.24.0.jar
kubernetes-client-5.4.1.jar
kubernetes-model-admissionregistration-4.13.2.jar
+kubernetes-model-admissionregistration-5.10.2.jar
kubernetes-model-apiextensions-4.13.2.jar
+kubernetes-model-apiextensions-5.10.2.jar
kubernetes-model-apps-4.13.2.jar
+kubernetes-model-apps-5.10.2.jar
kubernetes-model-autoscaling-4.13.2.jar
+kubernetes-model-autoscaling-5.10.2.jar
kubernetes-model-batch-4.13.2.jar
+kubernetes-model-batch-5.10.2.jar
kubernetes-model-certificates-4.13.2.jar
+kubernetes-model-certificates-5.10.2.jar
kubernetes-model-common-5.4.1.jar
+kubernetes-model-coordination-5.10.2.jar
kubernetes-model-coordination-4.13.2.jar
kubernetes-model-core-5.4.1.jar
kubernetes-model-discovery-4.13.2.jar
+kubernetes-model-discovery-5.10.2.jar
kubernetes-model-events-4.13.2.jar
+kubernetes-model-events-5.10.2.jar
kubernetes-model-extensions-4.13.2.jar
+kubernetes-model-extensions-5.10.2.jar
kubernetes-model-flowcontrol-5.4.1.jar
+kubernetes-model-flowcontrol-5.10.2.jar
kubernetes-model-metrics-4.13.2.jar
+kubernetes-model-metrics-5.10.2.jar
kubernetes-model-networking-4.13.2.jar
+kubernetes-model-networking-5.10.2.jar
kubernetes-model-node-4.13.2.jar
+kubernetes-model-node-5.10.2.jar
kubernetes-model-policy-4.13.2.jar
+kubernetes-model-policy-5.10.2.jar
kubernetes-model-rbac-4.13.2.jar
+kubernetes-model-rbac-5.10.2.jar
kubernetes-model-scheduling-4.13.2.jar
+kubernetes-model-scheduling-5.10.2.jar
kubernetes-model-storageclass-4.13.2.jar
+kubernetes-model-storageclass-5.10.2.jar
libfb303-0.9.3.jar
libthrift-0.15.0.pom
libthrift-0.9.3.jar
@@ -439,16 +502,22 @@ log4j-jul-2.17.2.jar
log4j-slf4j-impl-2.17.2.jar
log4j-web-2.17.2.jar
logging-interceptor-3.14.9.jar
+logging-interceptor-4.9.3.jar
lz4-java-1.6.0.jar
lz4-java-1.7.1.jar
mapstruct-1.3.1.Final.jar
mchange-commons-java-0.2.15.jar
memory-0.9.0.jar
metrics-core-4.1.22.jar
+metrics-core-4.2.18.jar
metrics-json-4.1.22.jar
+metrics-json-4.2.18.jar
metrics-jvm-4.1.22.jar
+metrics-jvm-4.2.18.jar
micrometer-core-1.5.14.jar
+micrometer-core-1.9.10.jar
micrometer-registry-prometheus-1.5.14.jar
+micrometer-registry-prometheus-1.9.10.jar
minlog-1.3.0.jar
mongo-java-driver-3.12.8.jar
mybatis-3.5.7.jar
@@ -497,13 +566,19 @@ netty-transport-native-unix-common-4.1.86.Final.jar
netty-transport-rxtx-4.1.86.Final.jar
netty-transport-sctp-4.1.86.Final.jar
netty-transport-udt-4.1.86.Final.jar
+netty-incubator-codec-classes-quic-0.0.39.Final.jar
+netty-incubator-codec-native-quic-0.0.39.Final-linux-x86_64.jar
nimbus-jose-jwt-8.19.jar
+nimbus-jose-jwt-9.8.1.jar
nio-multipart-parser-1.1.0.jar
nio-stream-storage-1.1.3.jar
objenesis-2.1.jar
okhttp-3.14.9.jar
+okhttp-4.9.3.jar
okhttp-urlconnection-3.14.9.jar
+okhttp-urlconnection-4.9.3.jar
okio-1.17.2.jar
+okio-2.8.0.jar
opencsv-2.3.jar
opentracing-api-0.33.0.jar
opentracing-noop-0.33.0.jar
@@ -548,10 +623,19 @@ py4j-0.10.4.jar
quartz-2.3.2.jar
re2j-1.1.jar
reactive-streams-1.0.3.jar
+reactive-streams-1.0.4.jar
reactor-core-3.3.17.RELEASE.jar
+reactor-core-3.4.29.jar
reactor-extra-3.3.6.RELEASE.jar
+reactor-extra-3.4.10.jar
reactor-netty-0.9.20.RELEASE.jar
reactor-netty-0.9.7.RELEASE.jar
+reactor-netty-1.0.31.jar
+reactor-netty-core-1.0.31.jar
+reactor-netty-http-1.0.31.jar
+reactor-netty-http-brave-1.0.31.jar
+reactor-netty-incubator-quic-0.0.20.jar
+reload4j-1.2.19.jar
reflections-0.9.12.jar
ribbon-2.3.0.jar
ribbon-core-2.3.0.jar
@@ -587,7 +671,13 @@ security-0.191.jar
security-0.193.jar
servo-core-0.12.21.jar
simpleclient-0.8.1.jar
+simpleclient-0.15.0.jar
simpleclient_common-0.8.1.jar
+simpleclient_common-0.15.0.jar
+simpleclient_tracer_common-0.15.0.jar
+simpleclient_tracer_otel-0.15.0.jar
+simpleclient_tracer_otel_agent-0.15.0.jar
+slf4j-reload4j-1.7.36.jar
sketches-core-0.9.0.jar
slf4j-api-1.7.30.jar
slice-0.38.jar
@@ -599,66 +689,124 @@ snappy-java-1.1.8.4.jar
spark-doris-connector-3.2_2.12-1.2.0.jar
spark-redis_2.12-2.6.0.jar
spring-aop-5.2.23.RELEASE.jar
+spring-aop-5.3.27.jar
spring-beans-5.2.23.RELEASE.jar
+spring-beans-5.3.27.jar
spring-boot-2.3.12.RELEASE.jar
+spring-boot-2.7.11.jar
spring-boot-actuator-2.3.12.RELEASE.jar
+spring-boot-actuator-2.7.11.jar
spring-boot-actuator-autoconfigure-2.3.12.RELEASE.jar
+spring-boot-actuator-autoconfigure-2.7.11.jar
spring-boot-autoconfigure-2.3.12.RELEASE.jar
+spring-boot-autoconfigure-2.7.11.jar
spring-boot-starter-2.3.12.RELEASE.jar
+spring-boot-starter-2.7.11.jar
spring-boot-starter-actuator-2.3.12.RELEASE.jar
+spring-boot-starter-actuator-2.7.11.jar
spring-boot-starter-aop-2.3.12.RELEASE.jar
+spring-boot-starter-aop-2.7.11.jar
spring-boot-starter-cache-2.3.12.RELEASE.jar
+spring-boot-starter-cache-2.7.11.jar
spring-boot-starter-freemarker-2.3.12.RELEASE.jar
+spring-boot-starter-freemarker-2.7.11.jar
spring-boot-starter-jdbc-2.3.12.RELEASE.jar
+spring-boot-starter-jdbc-2.7.11.jar
spring-boot-starter-jetty-2.3.12.RELEASE.jar
+spring-boot-starter-jetty-2.7.11.jar
spring-boot-starter-json-2.3.12.RELEASE.jar
+spring-boot-starter-json-2.7.11.jar
spring-boot-starter-log4j2-2.3.12.RELEASE.jar
+spring-boot-starter-log4j2-2.7.11.jar
spring-boot-starter-quartz-2.3.12.RELEASE.jar
+spring-boot-starter-quartz-2.7.11.jar
spring-boot-starter-reactor-netty-2.3.12.RELEASE.jar
+spring-boot-starter-reactor-netty-2.7.11.jar
spring-boot-starter-validation-2.3.12.RELEASE.jar
+spring-boot-starter-validation-2.7.11.jar
spring-boot-starter-web-2.3.12.RELEASE.jar
+spring-boot-starter-web-2.7.11.jar
spring-boot-starter-webflux-2.3.12.RELEASE.jar
+spring-boot-starter-webflux-2.7.11.jar
spring-cloud-commons-2.2.9.RELEASE.jar
+spring-cloud-commons-3.1.7.jar
spring-cloud-context-2.2.9.RELEASE.jar
+spring-cloud-context-3.1.7.jar
spring-cloud-gateway-core-2.2.9.RELEASE.jar
+spring-cloud-gateway-server-3.1.8.jar
spring-cloud-gateway-server-2.2.9.RELEASE.jar
spring-cloud-loadbalancer-2.2.9.RELEASE.jar
+spring-cloud-loadbalancer-3.1.7.jar
spring-cloud-netflix-archaius-2.2.9.RELEASE.jar
spring-cloud-netflix-eureka-client-2.2.9.RELEASE.jar
+spring-cloud-netflix-eureka-client-3.1.7.jar
spring-cloud-netflix-eureka-server-2.2.9.RELEASE.jar
+spring-cloud-netflix-eureka-server-3.1.7.jar
spring-cloud-netflix-hystrix-2.2.9.RELEASE.jar
spring-cloud-netflix-ribbon-2.2.9.RELEASE.jar
spring-cloud-openfeign-core-2.2.9.RELEASE.jar
+spring-cloud-openfeign-core-3.1.8.jar
spring-cloud-starter-2.2.9.RELEASE.jar
+spring-cloud-starter-3.1.7.jar
spring-cloud-starter-gateway-2.2.9.RELEASE.jar
+spring-cloud-starter-gateway-3.1.8.jar
spring-cloud-starter-loadbalancer-2.2.9.RELEASE.jar
+spring-cloud-starter-loadbalancer-3.1.7.jar
+spring-cloud-starter-gateway-3.1.8.jar
spring-cloud-starter-netflix-archaius-2.2.9.RELEASE.jar
+spring-cloud-starter-netflix-eureka-client-3.1.7.jar
spring-cloud-starter-netflix-eureka-client-2.2.9.RELEASE.jar
spring-cloud-starter-netflix-eureka-server-2.2.9.RELEASE.jar
+spring-cloud-starter-netflix-eureka-server-3.1.7.jar
spring-cloud-starter-netflix-ribbon-2.2.9.RELEASE.jar
spring-cloud-starter-openfeign-2.2.9.RELEASE.jar
+spring-cloud-starter-openfeign-3.1.8.jar
spring-context-5.2.23.RELEASE.jar
+spring-context-5.3.27.jar
spring-context-support-5.2.23.RELEASE.jar
+spring-context-support-5.3.27.jar
spring-core-5.2.23.RELEASE.jar
+spring-core-5.3.27.jar
spring-expression-5.2.23.RELEASE.jar
+spring-expression-5.3.27.jar
spring-jcl-5.2.23.RELEASE.jar
+spring-jcl-5.3.27.jar
spring-jdbc-5.2.23.RELEASE.jar
+spring-jdbc-5.3.27.jar
spring-plugin-core-2.0.0.RELEASE.jar
spring-plugin-metadata-2.0.0.RELEASE.jar
spring-security-crypto-5.7.5.jar
+spring-security-crypto-5.7.8.jar
spring-security-rsa-1.0.9.RELEASE.jar
+spring-security-rsa-1.0.11.RELEASE.jar
spring-tx-5.2.23.RELEASE.jar
+spring-tx-5.3.27.jar
spring-web-5.2.23.RELEASE.jar
+spring-web-5.3.27.jar
spring-webflux-5.2.23.RELEASE.jar
+spring-webflux-5.3.27.jar
spring-webmvc-5.2.23.RELEASE.jar
+spring-webmvc-5.3.27.jar
springfox-bean-validators-2.10.5.jar
+springfox-bean-validators-3.0.0.jar
+springfox-boot-starter-3.0.0.jar
springfox-core-2.10.5.jar
+springfox-core-3.0.0.jar
springfox-schema-2.10.5.jar
+springfox-schema-3.0.0.jar
springfox-spi-2.10.5.jar
+springfox-spi-3.0.0.jar
springfox-spring-web-2.10.5.jar
+springfox-spring-web-3.0.0.jar
springfox-spring-webmvc-2.10.5.jar
+springfox-spring-webmvc-3.0.0.jar
+springfox-spring-webflux-3.0.0.jar
springfox-swagger-common-2.10.5.jar
+springfox-swagger-common-3.0.0.jar
springfox-swagger2-2.10.5.jar
+springfox-swagger2-3.0.0.jar
+springfox-data-rest-3.0.0.jar
+springfox-oas-3.0.0.jar
sqlline-1.3.0.jar
sqoop-1.4.6-hadoop200.jar
ssl-config-core_2.12-0.3.7.jar
@@ -666,11 +814,15 @@ stats-0.191.jar
stax2-api-4.2.1.jar
stringtemplate-3.2.1.jar
swagger-annotations-1.5.22.jar
+swagger-annotations-2.1.2.jar
+swagger-core-1.5.22.jar
+swagger-models-2.1.2.jar
swagger-models-1.5.22.jar
tephra-api-0.6.0.jar
tephra-core-0.6.0.jar
tephra-hbase-compat-1.0-0.6.0.jar
token-provider-1.0.1.jar
+tomcat-embed-el-9.0.74.jar
transaction-api-1.1.jar
trino-client-371.jar
twill-api-0.6.0-incubating.jar
@@ -680,6 +832,7 @@ twill-discovery-api-0.6.0-incubating.jar
twill-discovery-core-0.6.0-incubating.jar
twill-zookeeper-0.6.0-incubating.jar
txw2-2.3.4.jar
+txw2-2.3.8.jar
units-1.3.jar
units-1.6.jar
validation-api-2.0.1.Final.jar
@@ -704,6 +857,10 @@ zstd-jni-1.4.5-6.jar
zstd-jni-1.4.9-1.jar
zstd-jni-1.5.0-4.jar
zjsonpatch-0.3.0.jar
+zipkin-2.23.2.jar
+zipkin-reporter-2.16.3.jar
+zipkin-reporter-brave-2.16.3.jar
+zstd-jni-1.5.0-4.jar
agrona-1.12.0.jar
audience-annotations-0.12.0.jar
audience-annotations-0.13.0.jar
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]