Bug 1805030
| Summary: | Java SDK connection.timeout is in milliseconds | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Virtualization Manager | Reporter: | Germano Veit Michel <gveitmic> |
| Component: | ovirt-engine-sdk-java | Assignee: | Ori Liel <oliel> |
| Status: | CLOSED NEXTRELEASE | QA Contact: | Guilherme Santos <gdeolive> |
| Severity: | low | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 4.3.8 | CC: | ddacosta, gdeolive, lsurette, mperina, srevivo |
| Target Milestone: | ovirt-4.4.5 | Keywords: | ZStream |
| Target Release: | 4.4.5 | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | 4.4.4 | Doc Type: | No Doc Update |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2021-03-22 10:22:23 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | Infra | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
Description of problem: The SDK documentation[1] and the code comments[2] state that the connection.timeout parameter is in seconds. However, at least on the latest versions, it seems to be in milliseconds. Setting it to 30000 results in 30s timeout: ~~~ import static org.ovirt.engine.sdk4.ConnectionBuilder.connection; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; import org.ovirt.engine.sdk4.Connection; import org.ovirt.engine.sdk4.services.SystemService; import org.ovirt.engine.sdk4.types.Property; import org.ovirt.engine.sdk4.types.SchedulingPolicy; public class Sample { public static void main(String[] args) throws Exception { DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); System.out.println("Attempting connection at "+dtf.format(now)); Connection connection = null; try { connection = connection() .url("https://engine.kvm/ovirt-engine/api") .user("admin@internal") .password("redhat") .timeout(30000) <------------------------ .insecure(true) .build(); connection.systemService().get().send(); }catch(Exception e) { e.printStackTrace(); } now = LocalDateTime.now(); System.out.println("Connection method returned at "+dtf.format(now)+""); connection.close(); } } ~~~ Output: Attempting connection at 2020/02/20 16:20:11 org.ovirt.engine.sdk4.Error: Failed to send request at org.ovirt.engine.sdk4.internal.HttpConnection.send(HttpConnection.java:261) at org.ovirt.engine.sdk4.internal.HttpConnection.send(HttpConnection.java:233) at org.ovirt.engine.sdk4.internal.services.SystemServiceImpl$GetRequestImpl.send(SystemServiceImpl.java:117) at org.ovirt.engine.sdk4.internal.services.SystemServiceImpl$GetRequestImpl.send(SystemServiceImpl.java:86) at Sample.main(Sample.java:26) Caused by: org.ovirt.engine.sdk4.Error: Failed to parse JSON response at org.ovirt.engine.sdk4.internal.HttpConnection.getSsoResponse(HttpConnection.java:430) at org.ovirt.engine.sdk4.internal.HttpConnection.getAccessToken(HttpConnection.java:370) at org.ovirt.engine.sdk4.internal.HttpConnection.injectHeaders(HttpConnection.java:334) at org.ovirt.engine.sdk4.internal.HttpConnection.send(HttpConnection.java:238) ... 4 more Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to engine.kvm:443 [engine.kvm/192.168.150.253] failed: connect timed out at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:150) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107) at org.ovirt.engine.sdk4.internal.HttpClient45.execute(HttpClient45.java:21) at org.ovirt.engine.sdk4.internal.HttpConnection.getSsoResponse(HttpConnection.java:424) ... 7 more Caused by: java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:607) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:337) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) ... 18 more Connection method returned at 2020/02/20 16:20:42 real 0m31.257s user 0m1.254s sys 0m0.501s Version-Release number of selected component (if applicable): java-ovirt-engine-sdk4-4.3.1-1.el7ev.noarch How reproducible: 100% Steps to Reproduce: As above Additional info: [1] https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.3/html-single/java_sdk_guide/index#ConnectionBuilder_Methods [2] https://github.com/oVirt/ovirt-engine-sdk-java/blob/master/sdk/src/main/java/org/ovirt/engine/sdk4/ConnectionBuilder.java#L156