This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- FlexNet Publisher
- :
- FlexNet Publisher Forum
- :
- Re: Setting License Client connect timeout.
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 18, 2007
02:01 AM
Setting License Client connect timeout.
Hi All,
If there is no License server running or if we try to connect to dummy ip, the subsequent checkout didn't return and at times the checkout method taking more time get time out( >20 minutes ). Please let me know, how can i specify the timeout for the license client.
Thanks in advance.
Krish.
If there is no License server running or if we try to connect to dummy ip, the subsequent checkout didn't return and at times the checkout method taking more time get time out( >20 minutes ). Please let me know, how can i specify the timeout for the license client.
Thanks in advance.
Krish.
(14) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 18, 2007
10:14 AM
Could you provide a bit more detail about your setup? For example, it appears you're using the Java FLEXnet API---is that correct? How are you specifying the invalid server IP information?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 18, 2007
11:02 AM
Hi ,
Thanks for your response on this. Yes, i am using the Java FlexNet API. Here is flow which i have followed.
1.During the License client initialization the, LicenseSource object is created using the LicenseSource.createLicenseSource(String licenseServerName,VendorInfo vendorInfo,ConnectionData connData) method.
2. Then will create the FeatureSpecifier object using FeatureSpecifier(String featureName,String version).
3. Then create the License object using License(FeatureSpecifier fs, LicenseSource ls).
Please let me know if you need more deatils.
Thanks agin for your quick response.
Regards,
Krish.
Thanks for your response on this. Yes, i am using the Java FlexNet API. Here is flow which i have followed.
1.During the License client initialization the, LicenseSource object is created using the LicenseSource.createLicenseSource(String licenseServerName,VendorInfo vendorInfo,ConnectionData connData) method.
2. Then will create the FeatureSpecifier object using FeatureSpecifier(String featureName,String version).
3. Then create the License object using License(FeatureSpecifier fs, LicenseSource ls).
Please let me know if you need more deatils.
Thanks agin for your quick response.
Regards,
Krish.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 18, 2007
01:31 PM
If you look at the sample ConnDataExample.java source file in the toolkit, the getServerTimeout method is implemented to return a hard-coded 20-minute timeout value; perhaps change to a smaller value in your implementation class that sets up ConnectionData behavior?
(Presumably that timeout is for the server side, but the 20-minute figure is quite a coincidence. As a test, does it make any difference if you don't use a ConnectionData object?)
(Presumably that timeout is for the server side, but the 20-minute figure is quite a coincidence. As a test, does it make any difference if you don't use a ConnectionData object?)
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 20, 2007
12:04 AM
Hi Robert,
I have overrided the getServerTimeout() method as to return the timeout value as 1 minute. After this also the license client connect didn't timeout and it is taking time.
Also i tried without the ConnectionData object, but the result is same.
Please help me in over coming this issue.
Thanks,
Krish.
I have overrided the getServerTimeout() method as to return the timeout value as 1 minute. After this also the license client connect didn't timeout and it is taking time.
Also i tried without the ConnectionData object, but the result is same.
Please help me in over coming this issue.
Thanks,
Krish.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 20, 2007
08:52 AM
What is the error message when the connection finally times out? For my example (which returns very quickly, 10 or 15 seconds), the message is:
Can't Connect to License Server (-15,3002) (fakehost)
Can't Connect to License Server (-15,3002) (fakehost)
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 20, 2007
11:18 AM
Hi Robert ,
Yes, i do get the same error after the time out. Given below is the exception trace.
Can't Connect to License Server (-15,3002) (Connection timed out)
com.macrovision.flexlm.FlexlmException: Can't Connect to License Server (-15,3002) (Connection timed out).
Regards,
Krish.
Yes, i do get the same error after the time out. Given below is the exception trace.
Can't Connect to License Server (-15,3002) (Connection timed out)
com.macrovision.flexlm.FlexlmException: Can't Connect to License Server (-15,3002) (Connection timed out).
Regards,
Krish.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 20, 2007
12:42 PM
A couple of the usual questions: does this happen on multiple systems? Does it happen with a simple application (my example is a modified version of BasicExample.java from the toolkit)? I'm not aware of any attribute settings that affect the client-timeout interval, only the server-timeout interval...
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 22, 2007
06:14 AM
Hi Robert,
I have tried in 3 different machines but the result is same. Also, the it is taking time with modified version of BasicExample to get timeout. I just want to know whether is there is any way available in License client api to set the timeout for the Socket created from the License client to License Server.
prio=1 tid=0x086f4d18 nid=0x68fd runnable [0x79302000..0x79303470]
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
- locked <0x60d02bf8> (a java.net.SocksSocketImpl)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.(Socket.java:365)
at java.net.Socket.(Socket.java:178)
at com.macrovision.flexlm.licsource.LicenseServer.connect(LicenseServer.java:378)
at com.macrovision.flexlm.licsource.LicenseServer.sendMessage(LicenseServer.java:2080)
- locked <0x602e1b88> (a com.macrovision.flexlm.licsource.LicenseServer)
at com.macrovision.flexlm.licsource.LicenseServer.tryCheckout(LicenseServer.java:931)
- locked <0x602e1b88> (a com.macrovision.flexlm.licsource.LicenseServer)
at com.macrovision.flexlm.licsource.LicenseServer.checkout(LicenseServer.java:874)
at com.macrovision.flexlm.License.reconnect(License.java:324)
at com.macrovision.flexlm.License.checkout(License.java:284)
The above thread dump is taken when the problem occured. From the above trace I believe the Socket object creation taking time with the invalid ipadress . Please help me if we can set a time out with the flexlm api for this Socket creation.
Thanks for your continued support on this.
Regards,
Krish.
I have tried in 3 different machines but the result is same. Also, the it is taking time with modified version of BasicExample to get timeout. I just want to know whether is there is any way available in License client api to set the timeout for the Socket created from the License client to License Server.
prio=1 tid=0x086f4d18 nid=0x68fd runnable [0x79302000..0x79303470]
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
- locked <0x60d02bf8> (a java.net.SocksSocketImpl)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.
at java.net.Socket.
at com.macrovision.flexlm.licsource.LicenseServer.connect(LicenseServer.java:378)
at com.macrovision.flexlm.licsource.LicenseServer.sendMessage(LicenseServer.java:2080)
- locked <0x602e1b88> (a com.macrovision.flexlm.licsource.LicenseServer)
at com.macrovision.flexlm.licsource.LicenseServer.tryCheckout(LicenseServer.java:931)
- locked <0x602e1b88> (a com.macrovision.flexlm.licsource.LicenseServer)
at com.macrovision.flexlm.licsource.LicenseServer.checkout(LicenseServer.java:874)
at com.macrovision.flexlm.License.reconnect(License.java:324)
at com.macrovision.flexlm.License.checkout(License.java:284)
The above thread dump is taken when the problem occured. From the above trace I believe the Socket object creation taking time with the invalid ipadress . Please help me if we can set a time out with the flexlm api for this Socket creation.
Thanks for your continued support on this.
Regards,
Krish.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 22, 2007
09:26 AM
Hello, Krish,
Looking through the Javadoc help for the FLEXnet Java API, I see no setting to control the client's TCP timeout; since the BasicExample code behaves differently on your system from mine, I'm led to believe it's a network-specific issue. Does any other socket-based Java program behave similarly?
I think Sun's Java Tutorial has a simple client example, or below is one that might work as a quick test.
Or if possible, could you try the application on a system on a different network?
Robert
[code]// FakeClient.java
// usage: java FakeClient localhost 27000
import java.io.*;
import java.net.*;
public class FakeClient {
public static void main(String[] args) throws IOException {
Socket testSocket = null;
if (args.length != 2)
{
System.out.println("Usage: java FakeClient ");
System.exit(0);
}
try {
testSocket = new Socket(args[0], Integer.parseInt(args[1]));
} catch (UnknownHostException e) {
System.err.println("Unknown host " + args[0] + ".");
e.printStackTrace( );
System.exit(1);
} catch (IOException e) {
System.err.println("I/O problems with " +
"the connection to: " + args[0] + ".");
e.printStackTrace( );
System.exit(1);
}
System.out.println("Host and port seem okay.");
testSocket.close( );
}
}[/code]
Looking through the Javadoc help for the FLEXnet Java API, I see no setting to control the client's TCP timeout; since the BasicExample code behaves differently on your system from mine, I'm led to believe it's a network-specific issue. Does any other socket-based Java program behave similarly?
I think Sun's Java Tutorial has a simple client example, or below is one that might work as a quick test.
Or if possible, could you try the application on a system on a different network?
Robert
[code]// FakeClient.java
// usage: java FakeClient localhost 27000
import java.io.*;
import java.net.*;
public class FakeClient {
public static void main(String[] args) throws IOException {
Socket testSocket = null;
if (args.length != 2)
{
System.out.println("Usage: java FakeClient
System.exit(0);
}
try {
testSocket = new Socket(args[0], Integer.parseInt(args[1]));
} catch (UnknownHostException e) {
System.err.println("Unknown host " + args[0] + ".");
e.printStackTrace( );
System.exit(1);
} catch (IOException e) {
System.err.println("I/O problems with " +
"the connection to: " + args[0] + ".");
e.printStackTrace( );
System.exit(1);
}
System.out.println("Host and port seem okay.");
testSocket.close( );
}
}[/code]
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 28, 2007
08:52 AM
Hi Robert,
I have tried with the modified verison(just added the start time and end time) of the given fake client example and here is the output.
I was in the 192.168.118.0 network . i have tried this example with non-existent ips in the same subnet(192.168.118.5) and in a different subnet(192.168.113.241 & 192.168.114.241).
Out put from same subnet ::
----------------------------------------
java test.FakeClient 192.168.118.5 27000
Start time Thu, 28 Jun 2007 19:11:32 +0000
I/O problems with the connection to: 192.168.118.5.
java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.(Socket.java:365)
at java.net.Socket.(Socket.java:178)
at test.FakeClient.main(FakeClient.java:25)
End time Thu, 28 Jun 2007 19:11:35 +0000
Out put from different subnet ::
-----------------------------------------------------------------
java test.FakeClient 192.168.113.241 27000
Start time Thu, 28 Jun 2007 17:28:49 +0000
I/O problems with the connection to: 192.168.113.241.
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.(Socket.java:365)
at java.net.Socket.(Socket.java:178)
at test.FakeClient.main(FakeClient.java:25)
End time Thu, 28 Jun 2007 17:31:58 +0000
------------------------------------------------------------------
java test.FakeClient 192.168.114.241 27000
Start time Thu, 28 Jun 2007 17:32:18 +0000
I/O problems with the connection to: 192.168.114.241.
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.(Socket.java:365)
at java.net.Socket.(Socket.java:178)
at test.FakeClient.main(FakeClient.java:25)
End time Thu, 28 Jun 2007 17:35:27 +0000
---------------------------------------------------------------------
It is taking time when we tried with the non-exitent ip in a different subnet . Is it possible for to you test the this example in your envoronment for a non-existent ip in a different subnet.
Thanks,
Krish.
I have tried with the modified verison(just added the start time and end time) of the given fake client example and here is the output.
I was in the 192.168.118.0 network . i have tried this example with non-existent ips in the same subnet(192.168.118.5) and in a different subnet(192.168.113.241 & 192.168.114.241).
Out put from same subnet ::
----------------------------------------
java test.FakeClient 192.168.118.5 27000
Start time Thu, 28 Jun 2007 19:11:32 +0000
I/O problems with the connection to: 192.168.118.5.
java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.
at java.net.Socket.
at test.FakeClient.main(FakeClient.java:25)
End time Thu, 28 Jun 2007 19:11:35 +0000
Out put from different subnet ::
-----------------------------------------------------------------
java test.FakeClient 192.168.113.241 27000
Start time Thu, 28 Jun 2007 17:28:49 +0000
I/O problems with the connection to: 192.168.113.241.
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.
at java.net.Socket.
at test.FakeClient.main(FakeClient.java:25)
End time Thu, 28 Jun 2007 17:31:58 +0000
------------------------------------------------------------------
java test.FakeClient 192.168.114.241 27000
Start time Thu, 28 Jun 2007 17:32:18 +0000
I/O problems with the connection to: 192.168.114.241.
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.
at java.net.Socket.
at test.FakeClient.main(FakeClient.java:25)
End time Thu, 28 Jun 2007 17:35:27 +0000
---------------------------------------------------------------------
It is taking time when we tried with the non-exitent ip in a different subnet . Is it possible for to you test the this example in your envoronment for a non-existent ip in a different subnet.
Thanks,
Krish.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jun 28, 2007
01:48 PM
Krish,
I can verify similar behavior when running the sample program to try to connect to a nonexistent server on a different subnet: on one test Linux system, there's about a 10-minute delay between the socket creation and the message "java.net.ConnectException: Connect timed out". Trying the same test on a Windows client system seems to return very quickly (the same 10-15 seconds I mentioned before).
From memory, I don't know enough about socket-handing in Java to see how to control the timeout; but since it seems independent of the FLEXnet library, perhaps there is a way to quickly test the connection with plain Java before making the FLEXnet checkout request...
Robert
I can verify similar behavior when running the sample program to try to connect to a nonexistent server on a different subnet: on one test Linux system, there's about a 10-minute delay between the socket creation and the message "java.net.ConnectException: Connect timed out". Trying the same test on a Windows client system seems to return very quickly (the same 10-15 seconds I mentioned before).
From memory, I don't know enough about socket-handing in Java to see how to control the timeout; but since it seems independent of the FLEXnet library, perhaps there is a way to quickly test the connection with plain Java before making the FLEXnet checkout request...
Robert
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 02, 2007
09:42 AM
Hi Robert,
Thanks for the test in your environment.
I believe you mean that, before the checkout request, the application need to check if the given license server ip reachable or not by creating a Socket object. In that case if we try to create a Socket before every checkout request it will turnout to be a costly opertaion if the the license server is running.
Moreover, in our application we may need to checkout > 2000 licenses. So checking the license server avilablity before every checkout request will take time and costly.
So it will be helpful if we have some option to set timeout thru flexlm api for the socket creation.
Thanks,
Krish.
Thanks for the test in your environment.
I believe you mean that, before the checkout request, the application need to check if the given license server ip reachable or not by creating a Socket object. In that case if we try to create a Socket before every checkout request it will turnout to be a costly opertaion if the the license server is running.
Moreover, in our application we may need to checkout > 2000 licenses. So checking the license server avilablity before every checkout request will take time and costly.
So it will be helpful if we have some option to set timeout thru flexlm api for the socket creation.
Thanks,
Krish.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 02, 2007
12:56 PM
Hi, Krish,
Actually, I would hope that a single socket-existence-test before the first checkout would be sufficient, as opposed to before each checkout.
I agree that a timeout setting would be useful to have, if possible. The reason I posted the socket-test code is to investigate if Java is capable of expressing a timeout that would speed up the process. (In that sample code I posted, even if I add testSocket.setSoTimeout(1000) to specify a short timeout, the long delay occurs on the Linux system. Perhaps a different constructor would make a difference?)
In any case, I'll see if I can get this into the investigation queue at this end, and you might consider submitting a feature request through your support plan, or otherwise providing feedback here: http://www.macrovision.com/feedback/index.shtml.
Thanks,
Robert
Actually, I would hope that a single socket-existence-test before the first checkout would be sufficient, as opposed to before each checkout.
I agree that a timeout setting would be useful to have, if possible. The reason I posted the socket-test code is to investigate if Java is capable of expressing a timeout that would speed up the process. (In that sample code I posted, even if I add testSocket.setSoTimeout(1000) to specify a short timeout, the long delay occurs on the Linux system. Perhaps a different constructor would make a difference?)
In any case, I'll see if I can get this into the investigation queue at this end, and you might consider submitting a feature request through your support plan, or otherwise providing feedback here: http://www.macrovision.com/feedback/index.shtml.
Thanks,
Robert
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 09, 2007
06:52 AM
Hi Robert,
Thanks for all your help on this. Really appreciate it.
Regards,
Krish.
Thanks for all your help on this. Really appreciate it.
Regards,
Krish.