Skip to content

fix: 补齐initService方法,修复TraceReporterConfig类型错误问题 #518

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jun 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,20 @@
import java.util.List;

import com.tencent.polaris.api.pojo.Instance;
import com.tencent.polaris.api.pojo.ServiceKey;
import com.tencent.polaris.api.rpc.ServiceCallResult;
import com.tencent.polaris.assembly.api.pojo.GetOneInstanceRequest;
import com.tencent.polaris.assembly.api.pojo.GetReachableInstancesRequest;
import com.tencent.polaris.assembly.api.pojo.TraceAttributes;

public interface AssemblyAPI extends AutoCloseable, Closeable {

/**
* 初始化服务实例列表,避免在服务调用的时候进行拉取,可有效减少调用时延。
* @param serviceKey 服务名和命名空间
*/
void initService(ServiceKey serviceKey);

/**
* 获取路由后的服务实例列表,贯穿服务发现、服务路由的逻辑
* @param request 多个符合路由条件的服务实例
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.tencent.polaris.api.exception.ErrorCode;
import com.tencent.polaris.api.exception.PolarisException;
import com.tencent.polaris.api.pojo.RetStatus;
import com.tencent.polaris.api.pojo.ServiceKey;
import com.tencent.polaris.api.rpc.ServiceCallResult;
import com.tencent.polaris.api.utils.StringUtils;
import com.tencent.polaris.client.util.CommonValidator;
Expand All @@ -36,6 +37,16 @@ public static void validateGetOneInstanceRequest(GetOneInstanceRequest request)
CommonValidator.validateNamespaceService(request.getNamespace(), request.getService());
}

/**
* 校验服务名和命名空间
*
* @param serviceKey 请求对象
* @throws PolarisException 校验失败会抛出异常
*/
public static void validateServiceKey(ServiceKey serviceKey) throws PolarisException {
CommonValidator.validateNamespaceService(serviceKey.getNamespace(), serviceKey.getService());
}

/**
* 校验获取批量服务实例的请求
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import com.tencent.polaris.api.exception.PolarisException;
import com.tencent.polaris.api.pojo.Instance;
import com.tencent.polaris.api.pojo.ServiceKey;
import com.tencent.polaris.api.rpc.ServiceCallResult;
import com.tencent.polaris.api.utils.CollectionUtils;
import com.tencent.polaris.assembly.api.AssemblyAPI;
Expand All @@ -45,6 +46,13 @@ protected void subInit() throws PolarisException {
assemblyFlow = sdkContext.getOrInitFlow(AssemblyFlow.class);
}

@Override
public void initService(ServiceKey serviceKey) {
checkAvailable("AssemblyAPI");
Validator.validateServiceKey(serviceKey);
assemblyFlow.initService(serviceKey);
}

@Override
public List<Instance> getReachableInstances(GetReachableInstancesRequest request) {
checkAvailable("AssemblyAPI");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import com.tencent.polaris.api.pojo.ServiceInstances;
import com.tencent.polaris.api.pojo.ServiceKey;
import com.tencent.polaris.api.pojo.SourceService;
import com.tencent.polaris.api.rpc.RequestBaseEntity;
import com.tencent.polaris.api.rpc.ServiceCallResult;
import com.tencent.polaris.api.utils.CollectionUtils;
import com.tencent.polaris.api.utils.StringUtils;
Expand Down Expand Up @@ -65,6 +66,27 @@ public void setSDKContext(SDKContext sdkContext) {
serviceCallResultListeners = ServiceCallResultListener.getServiceCallResultListeners(sdkContext);
}

@Override
public void initService(ServiceKey serviceKey) {
CommonInstancesRequest commonInstancesRequest = buildCommonInstancesRequest(serviceKey, sdkContext.getConfig());
BaseFlow.syncGetResources(extensions, false, commonInstancesRequest, commonInstancesRequest);
}

private static CommonInstancesRequest buildCommonInstancesRequest(ServiceKey serviceKey, Configuration configuration) {
ServiceKey dstSvcKey = new ServiceKey(serviceKey.getNamespace(), serviceKey.getService());
ServiceEventKey dstInstanceEventKey = new ServiceEventKey(dstSvcKey, ServiceEventKey.EventType.INSTANCE);
ServiceEventKey dstRuleEventKey = new ServiceEventKey(dstSvcKey, ServiceEventKey.EventType.ROUTING);
ServiceInfo dstServiceInfo = new ServiceInfo();
dstServiceInfo.setNamespace(serviceKey.getNamespace());
dstServiceInfo.setService(serviceKey.getService());
RequestBaseEntity requestBaseEntity = new RequestBaseEntity();
requestBaseEntity.setService(serviceKey.getService());
requestBaseEntity.setNamespace(serviceKey.getNamespace());
RouteInfo routeInfo = new RouteInfo(null, dstServiceInfo, "", configuration.getProvider().getService());
return new CommonInstancesRequest(dstInstanceEventKey, dstRuleEventKey, null, routeInfo,
null, requestBaseEntity, configuration);
}

@Override
public List<Instance> getReachableInstances(GetReachableInstancesRequest request) {
CommonInstancesRequest commonInstancesRequest = buildCommonInstancesRequest(request, sdkContext.getConfig());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,20 @@ public void testSyncGetReachableInstancesAbnormal() {
commonTestSyncGetReachableInstances(Operation.HAS_UNHEALTHY);
}

@Test
public void testInitService() {
ValidParam validParam = validParams.get(Operation.ALL_HEALTHY);
Configuration configuration = TestUtils.configWithEnvAddress();
try (AssemblyAPI assemblyAPI = AssemblyAPIFactory.createAssemblyAPIByConfig(configuration)) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
LOG.error("test fail: testInitService", e);
}
assemblyAPI.initService(new ServiceKey(NAMESPACE_TEST, validParam.getServiceName()));
}
}

private void commonTestSyncGetOneInstance(Operation operation) {
ValidParam validParam = validParams.get(operation);
Configuration configuration = TestUtils.configWithEnvAddress();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public StatReporterConfigImpl getStatReporter() {
}

@Override
public TraceReporterConfig getTraceReporter() {
public TraceReporterConfigImpl getTraceReporter() {
return traceReporter;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@ public String getReporter() {
return reporter;
}

void setEnable(Boolean enable) {
public void setEnable(Boolean enable) {
this.enable = enable;
}

void setReporter(String reporter) {
public void setReporter(String reporter) {
this.reporter = reporter;
}

Expand Down
Loading