diff --git a/core/src/main/java/tech/ydb/core/impl/YdbTransportImpl.java b/core/src/main/java/tech/ydb/core/impl/YdbTransportImpl.java index 43f4b8bc1..0233ea77b 100644 --- a/core/src/main/java/tech/ydb/core/impl/YdbTransportImpl.java +++ b/core/src/main/java/tech/ydb/core/impl/YdbTransportImpl.java @@ -126,6 +126,11 @@ static EndpointRecord getDiscoveryEndpoint(GrpcTransportBuilder builder) { + "endpoint " + builder.getEndpoint() + " and empty host " + builder.getHost()); } + if (endpointURI.getPort() < 0) { + throw new IllegalArgumentException("Can't create discovery rpc, port is not specified for " + + "endpoint " + builder.getEndpoint()); + } + return new EndpointRecord(endpointURI.getHost(), endpointURI.getPort()); } diff --git a/core/src/test/java/tech/ydb/core/grpc/GrpcTransportTest.java b/core/src/test/java/tech/ydb/core/grpc/GrpcTransportTest.java new file mode 100644 index 000000000..1acb3f82b --- /dev/null +++ b/core/src/test/java/tech/ydb/core/grpc/GrpcTransportTest.java @@ -0,0 +1,31 @@ +package tech.ydb.core.grpc; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Mikhail Firsov + */ +public class GrpcTransportTest { + + @Test + public void failFastOnMissingPort() { + String endpoint = "127.1.2.3"; + try { + GrpcTransport.forEndpoint(endpoint, "test").build().close(); + Assert.fail("Exception expected"); + } catch (IllegalArgumentException e) { + Assert.assertEquals("Can't create discovery rpc, port is not specified for endpoint 127.1.2.3", e.getMessage()); + } + } + + @Test + public void doNotFailIfEndpointHasPort() { + String endpoint = "127.1.2.3:12345"; + GrpcTransport + .forEndpoint(endpoint, "test") + .withInitMode(GrpcTransportBuilder.InitMode.ASYNC) + .build() + .close(); + } +}