Skip to content

Commit

Permalink
fix grpc register center (apache#1204)
Browse files Browse the repository at this point in the history
Co-authored-by: zhanglei <zhanglei06469@hellobike.com>
Co-authored-by: dengliming <liming.d.pro@gmail.com>
  • Loading branch information
3 people authored Mar 27, 2021
1 parent f1d5276 commit 1590e5f
Show file tree
Hide file tree
Showing 15 changed files with 104 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
*/
@Service("soulClientRegisterService")
public class SoulClientRegisterServiceImpl implements SoulClientRegisterService {

private static final String CONTEXT_PATH_NAME_PREFIX = "/context-path";

private final MetaDataMapper metaDataMapper;
Expand Down Expand Up @@ -129,7 +129,7 @@ public synchronized String registerSpringMvc(final MetaDataRegisterDTO dto) {
saveSpringMvcMetaData(dto);
}
}
String selectorId = handlerSpringMvcSelector(dto);
String selectorId = handlerSelector(dto);
handlerSpringMvcRule(selectorId, dto);
String contextPath = dto.getContextPath();
if (StringUtils.isNotEmpty(contextPath)) {
Expand All @@ -155,7 +155,7 @@ public synchronized String registerSpringCloud(final MetaDataRegisterDTO dto) {
}
return SoulResultMessage.SUCCESS;
}

private void registerContextPathPlugin(final String contextPath) {
String name = CONTEXT_PATH_NAME_PREFIX + contextPath;
SelectorDO selectorDO = selectorService.findByName(name);
Expand Down Expand Up @@ -212,15 +212,15 @@ public synchronized String registerTars(final MetaDataRegisterDTO dto) {
public synchronized String registerGrpc(final MetaDataRegisterDTO dto) {
MetaDataDO exist = metaDataMapper.findByPath(dto.getPath());
saveOrUpdateMetaData(exist, dto);
String selectorId = handlerGrpcSelector(dto);
String selectorId = handlerSelector(dto);
handlerGrpcRule(selectorId, dto, exist);
return SoulResultMessage.SUCCESS;
}

private String handlerDubboSelector(final MetaDataRegisterDTO metaDataDTO) {
return getString(metaDataDTO);
}

private String getString(final MetaDataRegisterDTO metaDataDTO) {
SelectorDO selectorDO = selectorService.findByName(metaDataDTO.getContextPath());
String selectorId;
Expand All @@ -231,7 +231,7 @@ private String getString(final MetaDataRegisterDTO metaDataDTO) {
}
return selectorId;
}

private void handlerDubboRule(final String selectorId, final MetaDataRegisterDTO metaDataDTO) {
RuleDO existRule = ruleMapper.findByName(metaDataDTO.getPath());
if (Objects.isNull(existRule)) {
Expand Down Expand Up @@ -330,11 +330,11 @@ private void saveOrUpdateMetaData(final MetaDataDO exist, final MetaDataRegister
Collections.singletonList(MetaDataTransfer.INSTANCE.mapRegisterDTOToEntity(metaDataDTO))));
}

private String handlerSpringMvcSelector(final MetaDataRegisterDTO dto) {
private String handlerSelector(final MetaDataRegisterDTO dto) {
String contextPath = dto.getContextPath();
if (StringUtils.isEmpty(contextPath)) {
contextPath = buildContextPath(dto.getPath());
}
}
SelectorDO selectorDO = selectorService.findByName(contextPath);
String selectorId;
String uri = String.join(":", dto.getHost(), String.valueOf(dto.getPort()));
Expand Down Expand Up @@ -371,7 +371,7 @@ private String handlerSpringMvcSelector(final MetaDataRegisterDTO dto) {
}
return selectorId;
}

private String buildContextPath(final String path) {
String split = "/";
String[] splitList = StringUtils.split(path, split);
Expand Down Expand Up @@ -418,31 +418,29 @@ private String registerSelector(final String contextPath, final String rpcType,
} else if (RpcTypeEnum.SOFA.getName().equals(rpcType)) {
selectorDTO.setPluginId(getPluginId(PluginEnum.SOFA.getName()));
selectorDTO.setHandle(appName);
} else if (RpcTypeEnum.TARS.getName().equals(rpcType)) {
selectorDTO.setPluginId(getPluginId(PluginEnum.TARS.getName()));
selectorDTO.setHandle(appName);
} else if (RpcTypeEnum.GRPC.getName().equals(rpcType)) {
selectorDTO.setPluginId(getPluginId(PluginEnum.GRPC.getName()));
selectorDTO.setHandle(appName);
} else {
if (RpcTypeEnum.TARS.getName().equals(rpcType) || RpcTypeEnum.GRPC.getName().equals(rpcType)) {
selectorDTO.setPluginId(getPluginId(rpcType));
} else {
selectorDTO.setPluginId(getPluginId(PluginEnum.DIVIDE.getName()));
}
//is divide
DivideUpstream divideUpstream = buildDivideUpstream(uri);
String handler = GsonUtils.getInstance().toJson(Collections.singletonList(divideUpstream));
selectorDTO.setHandle(handler);
selectorDTO.setPluginId(getPluginId(PluginEnum.DIVIDE.getName()));
upstreamCheckService.submit(selectorDTO.getName(), divideUpstream);
}
selectorDTO.setSelectorConditions(buildDefaultSelectorConditionDTO(contextPath));
return selectorService.register(selectorDTO);
}

private String registerContextPathSelector(final String contextPath, final String name) {
SelectorDTO selectorDTO = buildDefaultSelectorDTO(name);
selectorDTO.setPluginId(getPluginId(PluginEnum.CONTEXTPATH_MAPPING.getName()));
selectorDTO.setSelectorConditions(buildDefaultSelectorConditionDTO(contextPath));
return selectorService.register(selectorDTO);
}

private SelectorDTO buildDefaultSelectorDTO(final String name) {
return SelectorDTO.builder()
.name(name)
Expand All @@ -454,7 +452,7 @@ private SelectorDTO buildDefaultSelectorDTO(final String name) {
.sort(1)
.build();
}

private List<SelectorConditionDTO> buildDefaultSelectorConditionDTO(final String contextPath) {
SelectorConditionDTO selectorConditionDTO = new SelectorConditionDTO();
selectorConditionDTO.setParamType(ParamTypeEnum.URI.getName());
Expand Down Expand Up @@ -521,8 +519,8 @@ public String registerURI(final String contextPath, final List<String> uriList)
private List<DivideUpstream> buildDivideUpstreamList(final List<String> uriList) {
return uriList.stream().map(this::buildDivideUpstream).collect(Collectors.toList());
}

private DivideUpstream buildDivideUpstream(final String uri) {
return DivideUpstream.builder().upstreamHost("localhost").protocol("http://") .upstreamUrl(uri).weight(50).build();
return DivideUpstream.builder().upstreamHost("localhost").protocol("http://").upstreamUrl(uri).weight(50).build();
}
}
8 changes: 1 addition & 7 deletions soul-admin/src/main/resources/META-INF/schema.h2.sql
Original file line number Diff line number Diff line change
Expand Up @@ -378,16 +378,10 @@ INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('67', '13', 'multiRuleHandle', 'multiRuleHandle', 3, 3, 1, null, '2021-03-08 13:37:12', '2021-03-09 10:32:51');

/*insert plugin_handle data for grpc*/
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('68', '15', 'upstreamHost', 'host', 2, 1, 0, null, '2021-03-06 21:23:41', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('69', '15', 'protocol', 'protocol', 2, 1, 2, '{"defaultValue":"","rule":""}', '2021-03-06 21:25:37', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('70', '15', 'upstreamUrl', 'ip:port', 2, 1, 1, '{"required":"1","placeholder":"","rule":""}', '2021-03-06 21:25:55', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('71', '15', 'weight', 'weight', 1, 1, 3, '{"defaultValue":"50","rule":""}', '2021-03-06 21:26:35', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('72', '15', 'timestamp', 'startupTime', 1, 1, 3, '{"defaultValue":"0","placeholder":"startup timestamp","rule":""}', '2021-03-06 21:27:11', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('73', '15', 'warmup', 'warmupTime', 1, 1, 5, '{"defaultValue":"0","placeholder":"warmup time (ms)","rule":""}', '2021-03-06 21:27:34', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('74', '15', 'status', 'status', 3, 1, 6, '{"defaultValue":"true","rule":""}', '2021-03-06 21:29:16', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('75', '15', 'loadBalance', 'loadStrategy', 3, 2, 0, null, '2021-03-06 21:30:32', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('76', '15', 'retry', 'retryCount', 1, 2, 1, null, '2021-03-06 21:31:00', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('77', '15', 'timeout', 'timeout', 1, 2, 2, '{"defaultValue":"3000","rule":""}', '2021-03-07 21:13:50', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('78', '15', 'multiSelectorHandle', 'multiSelectorHandle', 3, 3, 0, null, '2021-03-08 13:18:44', '2021-03-09 10:32:51');
INSERT INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('79', '15', 'multiRuleHandle', 'multiRuleHandle', 3, 3, 1, null, '2021-03-08 13:37:12', '2021-03-09 10:32:51');

Expand Down Expand Up @@ -770,4 +764,4 @@ INSERT INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `dat
INSERT INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900428', '1346358560427216896', '1347052839198928897', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
INSERT INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900427', '1346358560427216896', '1347052836300664833', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
INSERT INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900426', '1346358560427216896', '1347052833968631809', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
INSERT INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900433', '1346358560427216896', '1347027413357572097', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
INSERT INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900433', '1346358560427216896', '1347027413357572097', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
9 changes: 1 addition & 8 deletions soul-admin/src/main/resources/META-INF/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -381,16 +381,9 @@ INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('67', '13', 'multiRuleHandle', 'multiRuleHandle', 3, 3, 1, null, '2021-03-08 13:37:12', '2021-03-09 10:32:51');

/*insert plugin_handle data for grpc*/
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('68', '15', 'upstreamHost', 'host', 2, 1, 0, null, '2021-03-06 21:23:41', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('69', '15', 'protocol', 'protocol', 2, 1, 2, '{"defaultValue":"","rule":""}', '2021-03-06 21:25:37', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('70', '15', 'upstreamUrl', 'ip:port', 2, 1, 1, '{"required":"1","placeholder":"","rule":""}', '2021-03-06 21:25:55', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('71', '15', 'weight', 'weight', 1, 1, 3, '{"defaultValue":"50","rule":""}', '2021-03-06 21:26:35', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('72', '15', 'timestamp', 'startupTime', 1, 1, 3, '{"defaultValue":"0","placeholder":"startup timestamp","rule":""}', '2021-03-06 21:27:11', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('73', '15', 'warmup', 'warmupTime', 1, 1, 5, '{"defaultValue":"0","placeholder":"warmup time (ms)","rule":""}', '2021-03-06 21:27:34', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('74', '15', 'status', 'status', 3, 1, 6, '{"defaultValue":"true","rule":""}', '2021-03-06 21:29:16', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('75', '15', 'loadBalance', 'loadStrategy', 3, 2, 0, null, '2021-03-06 21:30:32', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('76', '15', 'retry', 'retryCount', 1, 2, 1, null, '2021-03-06 21:31:00', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('77', '15', 'timeout', 'timeout', 1, 2, 2, '{"defaultValue":"3000","rule":""}', '2021-03-07 21:13:50', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('78', '15', 'multiSelectorHandle', 'multiSelectorHandle', 3, 3, 0, null, '2021-03-08 13:18:44', '2021-03-09 10:32:51');
INSERT IGNORE INTO plugin_handle (`id`,`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`,`date_created`,`date_updated`) VALUES ('79', '15', 'multiRuleHandle', 'multiRuleHandle', 3, 3, 1, null, '2021-03-08 13:37:12', '2021-03-09 10:32:51');

Expand Down Expand Up @@ -773,4 +766,4 @@ INSERT IGNORE INTO `permission` (`id`, `object_id`, `resource_id`, `date_created
INSERT IGNORE INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900428', '1346358560427216896', '1347052839198928897', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
INSERT IGNORE INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900427', '1346358560427216896', '1347052836300664833', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
INSERT IGNORE INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900426', '1346358560427216896', '1347052833968631809', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
INSERT IGNORE INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900433', '1346358560427216896', '1347027413357572097', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
INSERT IGNORE INTO `permission` (`id`, `object_id`, `resource_id`, `date_created`, `date_updated`) VALUES ('1357977971827900433', '1346358560427216896', '1347027413357572097', '2021-02-06 17:02:33', '2021-02-06 17:02:33');
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,5 @@
*
* @return the timeout
*/
int timeout() default -1;
int timeout() default 5000;
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public static List<RpcTypeEnum> acquireSupports() {
return Arrays.stream(RpcTypeEnum.values())
.filter(e -> e.support).collect(Collectors.toList());
}

/**
* acquire operator support URI RPC type.
*
Expand All @@ -97,7 +97,7 @@ public static List<RpcTypeEnum> acquireSupports() {
public static List<RpcTypeEnum> acquireSupportURIs() {
return Arrays.asList(RpcTypeEnum.GRPC, RpcTypeEnum.HTTP, RpcTypeEnum.TARS);
}

/**
* acquire operator support Metadata RPC type.
*
Expand All @@ -106,13 +106,13 @@ public static List<RpcTypeEnum> acquireSupportURIs() {
public static List<RpcTypeEnum> acquireSupportMetadatas() {
return Arrays.asList(RpcTypeEnum.DUBBO, RpcTypeEnum.GRPC, RpcTypeEnum.HTTP, RpcTypeEnum.SPRING_CLOUD, RpcTypeEnum.SOFA, RpcTypeEnum.TARS);
}

/**
* acquireByName.
*
* @param name this is rpc type
* @return RpcTypeEnum rpc type enum
*/

public static RpcTypeEnum acquireByName(final String name) {
return Arrays.stream(RpcTypeEnum.values())
.filter(e -> e.support && e.name.equals(name)).findFirst()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package org.dromara.soul.plugin.grpc;

import io.grpc.CallOptions;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.dromara.soul.common.constant.Constants;
Expand All @@ -28,6 +29,7 @@
import org.dromara.soul.common.enums.ResultEnum;
import org.dromara.soul.common.enums.RpcTypeEnum;
import org.dromara.soul.common.exception.SoulException;
import org.dromara.soul.common.utils.GsonUtils;
import org.dromara.soul.plugin.api.SoulPluginChain;
import org.dromara.soul.plugin.api.context.SoulContext;
import org.dromara.soul.plugin.api.result.SoulResultEnum;
Expand All @@ -43,6 +45,7 @@

import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

/**
* The type grpc plugin.
Expand Down Expand Up @@ -70,14 +73,15 @@ protected Mono<Void> doExecute(final ServerWebExchange exchange, final SoulPlugi
Object error = SoulResultWrap.error(SoulResultEnum.GRPC_HAVE_BODY_PARAM.getCode(), SoulResultEnum.GRPC_HAVE_BODY_PARAM.getMsg(), null);
return WebFluxResultUtils.result(exchange, error);
}

final SoulGrpcClient client = GrpcClientCache.getGrpcClient(selector.getName());
if (Objects.isNull(client)) {
exchange.getResponse().setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR);
Object error = SoulResultWrap.error(SoulResultEnum.GRPC_CLIENT_NULL.getCode(), SoulResultEnum.GRPC_CLIENT_NULL.getMsg(), null);
return WebFluxResultUtils.result(exchange, error);
}
CompletableFuture<SoulGrpcResponse> result = client.call(metaData, CallOptions.DEFAULT, param);
GrpcExtInfo extInfo = GsonUtils.getGson().fromJson(metaData.getRpcExt(), GrpcExtInfo.class);
CallOptions callOptions = CallOptions.DEFAULT.withDeadlineAfter(extInfo.timeout, TimeUnit.MILLISECONDS);
CompletableFuture<SoulGrpcResponse> result = client.call(metaData, callOptions, param);
return Mono.fromFuture(result.thenApply(ret -> {
exchange.getAttributes().put(Constants.GRPC_RPC_RESULT, ret.getResult());
exchange.getAttributes().put(Constants.CLIENT_RESPONSE_RESULT_TYPE, ResultEnum.SUCCESS.getName());
Expand Down Expand Up @@ -116,4 +120,13 @@ public int getOrder() {
private boolean checkMetaData(final MetaData metaData) {
return null != metaData && !StringUtils.isBlank(metaData.getMethodName()) && !StringUtils.isBlank(metaData.getServiceName());
}

/**
* The GrpcExt.
*/
@Data
static class GrpcExtInfo {

private Integer timeout = 5000;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ private SoulServiceInstance build(final DivideUpstream divideUpstream) {
String[] ipAndPort = divideUpstream.getUpstreamUrl().split(":");
SoulServiceInstance instance = new SoulServiceInstance(ipAndPort[0], Integer.parseInt(ipAndPort[1]));
instance.setWeight(divideUpstream.getWeight());
instance.setStatus(divideUpstream.isStatus());
return instance;
}

Expand Down
Loading

0 comments on commit 1590e5f

Please sign in to comment.