Bug 1805030 - Java SDK connection.timeout is in milliseconds
Summary: Java SDK connection.timeout is in milliseconds
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Red Hat Enterprise Virtualization Manager
Classification: Red Hat
Component: ovirt-engine-sdk-java
Version: 4.3.8
Hardware: x86_64
OS: Linux
unspecified
low
Target Milestone: ovirt-4.4.5
: 4.4.5
Assignee: Ori Liel
QA Contact: Guilherme Santos
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-02-20 06:25 UTC by Germano Veit Michel
Modified: 2021-04-13 07:42 UTC (History)
5 users (show)

Fixed In Version: 4.4.4
Doc Type: No Doc Update
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-03-22 10:22:23 UTC
oVirt Team: Infra
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
oVirt gerrit 112791 0 master MERGED Connection Timeout should be in seconds 2021-02-16 08:34:13 UTC

Description Germano Veit Michel 2020-02-20 06:25:47 UTC
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


Note You need to log in before you can comment on or make changes to this bug.