Skip to content

Commit 2741875

Browse files
committed
fix:fix report state failed bug when port is 0 in some scenarios.
1 parent e1c9e28 commit 2741875

File tree

1 file changed

+29
-16
lines changed
  • polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/util

1 file changed

+29
-16
lines changed

polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/util/Validator.java

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,13 @@
2424
import com.tencent.polaris.api.pojo.RetStatus;
2525
import com.tencent.polaris.api.pojo.ServiceEventKey;
2626
import com.tencent.polaris.api.pojo.ServiceKey;
27-
import com.tencent.polaris.api.rpc.BaseEntity;
28-
import com.tencent.polaris.api.rpc.GetAllInstancesRequest;
29-
import com.tencent.polaris.api.rpc.GetHealthyInstancesRequest;
30-
import com.tencent.polaris.api.rpc.GetInstancesRequest;
31-
import com.tencent.polaris.api.rpc.GetOneInstanceRequest;
32-
import com.tencent.polaris.api.rpc.GetResourcesRequest;
33-
import com.tencent.polaris.api.rpc.GetServiceContractRequest;
34-
import com.tencent.polaris.api.rpc.GetServiceRuleRequest;
35-
import com.tencent.polaris.api.rpc.InstanceDeregisterRequest;
36-
import com.tencent.polaris.api.rpc.InstanceHeartbeatRequest;
37-
import com.tencent.polaris.api.rpc.InstanceRegisterRequest;
38-
import com.tencent.polaris.api.rpc.ServiceCallResult;
39-
import com.tencent.polaris.api.rpc.UnWatchServiceRequest;
40-
import com.tencent.polaris.api.rpc.WatchServiceRequest;
27+
import com.tencent.polaris.api.rpc.*;
4128
import com.tencent.polaris.api.utils.CollectionUtils;
4229
import com.tencent.polaris.api.utils.StringUtils;
4330
import com.tencent.polaris.client.util.CommonValidator;
31+
import com.tencent.polaris.logging.LoggerFactory;
32+
import org.slf4j.Logger;
4433

45-
import java.util.Objects;
4634
import java.util.Set;
4735

4836
/**
@@ -53,6 +41,8 @@
5341
*/
5442
public class Validator {
5543

44+
private static final Logger LOG = LoggerFactory.getLogger(Validator.class);
45+
5646
private static final int MAX_PORT = 65536;
5747

5848
/**
@@ -164,7 +154,7 @@ public static void validateServiceCallResult(ServiceCallResult serviceCallResult
164154
throw new PolarisException(ErrorCode.API_INVALID_ARGUMENT, "delay can not be less than 0");
165155
}
166156
if (!RetStatus.RetReject.equals(serviceCallResult.getRetStatus())) {
167-
validateHostPort(serviceCallResult.getHost(), serviceCallResult.getPort());
157+
validateServiceCallResultHostPort(serviceCallResult.getHost(), serviceCallResult.getPort());
168158
}
169159
}
170160

@@ -187,6 +177,29 @@ private static void validateHostPort(String host, Integer port) throws PolarisEx
187177
}
188178
}
189179

180+
/**
181+
* 校验服务请求端口信息。某些场景下端口号为0,例如Dubbo的本地调用。
182+
*
183+
* @param host
184+
* @param port
185+
* @throws PolarisException
186+
*/
187+
private static void validateServiceCallResultHostPort(String host, Integer port) throws PolarisException {
188+
if (StringUtils.isBlank(host)) {
189+
throw new PolarisException(ErrorCode.API_INVALID_ARGUMENT, "host can not be blank");
190+
}
191+
if (port == null) {
192+
throw new PolarisException(ErrorCode.API_INVALID_ARGUMENT, "port can not be null");
193+
}
194+
if (port == 0) {
195+
LOG.warn("port is 0 with host {}. Please check if it meets expectations.", host);
196+
}
197+
if (port < 0 || port >= MAX_PORT) {
198+
throw new PolarisException(
199+
ErrorCode.API_INVALID_ARGUMENT, "port value should be in range [0, 65536).");
200+
}
201+
}
202+
190203
/**
191204
* 校验实例注册请求
192205
*

0 commit comments

Comments
 (0)