Timeout in HttpsURLConnection
I am using the HttpsURLConnection class to post and retrieve reply from a HTTPS site through a proxy. My problem is, I can't seem to set the timeout value for the HttpsURLConnection. If there is no reply from the site, the program will hang there.
I'm using J2SDK 1.4.1_03 and I have tried specifying the option:
System.setProperty("sun.net.client.defaultReadTimeout","30000");
or during runtime:
-Dsun.net.client.defaultReadTimeout=30000
However, both options do not seem to work. Did I do something wrong here?
After looking around for some information, I gather that other people also face this problem. Generally, I think the suggestions seem to be pointing to two solutions:
1. Implemen a customized HttpsURLConnection, ie creating the socket with the timeout.
2. Create another thread to keep track of the https connection and to stop it after a timeout value.
Is there any other solutions? Which solution will be the best and simplest to implemen?
Hi,
there is a library called HTTPClient available for free on:
http://jakarta.apache.org/commons/httpclient/
It supports time out, besides a bunch of other features.
Also HTTPS is straight forward, as soon as the underlying JSSE
installation is done.
Similar Messages
-
URGENT: Timeout on HTTPSURLCONNECTION
I've scoured the web and these fora for a solution to my problem, and I can't seem to find a solution, so would really appreciate any help/pointers/examples to assist me.
I've managed to read from a secure web page, using JSSE to set up an httpsurlconnection called connect, and can read and post to it fine. My problem is that I want to set a timeout period if I don't receive a reply to my GET or POST methods. Everything I've found only applies to HTTPurlconnection, and it seems as if HTTPSurlconnection isn't able to handle user-defined timeouts. The closest I've got is setting up an SSLsocket and then using the inherited setSoTimeout, but my Java's not good enough to set that up correctly, and I'm not sure if it would work. Then maybe there are thread methods, which are even more complicated, and I don't want to use threads as I'll be running up to 60 instances of this URL reading/posting class at a time.
Does anyone have some example code which allows me to set a timeout period for my HTTPSurlconnection?
Many many thanks, I'm a relative newbie to Java and these fora, so appreciate any replies.
Claudelook at "sun.net.client.defaultConnectTimeout"
http://java.sun.com/j2se/1.4/docs/guide/net/properties.html
it might help you -
Wait for method that doesn't return
Hi,
I have a static method consisting of a few lines of code that create a response to the caller of the method.
My problem is that the method doesn't always use the same amount of time to execute. I don't ever want to keep the caller of the method waiting for more than a specified amount of time e.g. 30 seconds. If it hasn't returned after that I want to abort and return controll to the caller.
What's the best way to solve that problem?
I've been thinking about starting a Thread in the method and execute the code there. That way, if the Thread hasn't finished executing after 30 sec I can kill it and return controll to the caller. But I'm not sure how that will work since the method is static. I have little experiense working with threads and no experiense working with threads in a static method.
There are no static class variables involved. Two arguments are passed to the method, one URL and one String and it returns a String.
Any id�as or suggestions?
Kind regards,
MattiasThe method run in Worker looks like this:
public void run() {
try {
HttpURLConnection connection = HTTPSclient.getConnection(url, authorization);
// Other configuration
connection.setRequestMethod( "GET" );
connection.setRequestProperty( "Content-Type", "text/xml" );
connection.setUseCaches( false );
//Get the response from the server and write it to a String
BufferedReader br = new BufferedReader( new InputStreamReader( connection.getInputStream() ) );
String tempLine;
String str = "";
while( ( tempLine = br.readLine() ) != null ) {
str += tempLine + "\n";
result = URLDecoder.decode( str, "UTF-8" );
} catch (IOException e) {
System.err.println("caught");
exception = e;
}The static method getConnection looks like this:
HttpsURLConnection getConnection(URL url, String authorization) throws IOException {
// first ensure that at the very least a secure protocol has been specified.
HttpsURLConnection connection;
String protocol = url.getProtocol();
if (!"https".equals(protocol)) {
throw new IOException("The URL for the server must use the HTTPS protocol.");
// This HostnameVerifier is used to bypass SSL verification.
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
return true;
HttpsURLConnection.setDefaultHostnameVerifier(hv);
// Configure our connection to use the basic authentication details provided by the user
connection = (HttpsURLConnection) url.openConnection();
// Configure our connection to use the basic authentication details provided by the user
if(authorization != null) {
String auth = (new BASE64Encoder()).encode(authorization.getBytes());
connection.setRequestProperty("Authorization", "Basic ".concat(String.valueOf(auth)));
return connection;
}And it is this call that blocks:
BufferedReader br = new BufferedReader( new InputStreamReader( connection.getInputStream() ) );There is ( as far as I can see ) no support for setting timeouts in HttpsURLConnection or its super class URLConnection. In version 1.5 this support seem to exist but unfortunately I'm still forced to use version 1.4.2 :(
Any suggestions on how to break this block on connection.getInputSTream()? -
HTTP(S) Timeout while invoking WebService over HTTPS.
Hello,
I have some stress with my webservice client implementation.
I do the following (I can post source code if needed):
- As usual:
System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
- Install my TrustManager
- Install my DefaultHostnameVerifier
- Register a custom type
- Make a javax.xml.rpc.Call to access a webservice
My observations:
The code works well when using an HTTP URL, just changing the target URL to HTTPS causes the problem.
The HTTPS web service (on server) works well seeing a HTTPS client using the weblogic SSL implementation, or an AXIS client can easily connect.
When I use a simple and direct "Open HttpsURLConnection on URL("https://xxx.service?WSDL"); print-out-all-that's-coming-in", it works well. I think my SSL access is made correctly.
The client does not complain about not-installed SSL things, all certificates are accepted, etc. No problem at this part.
System.setProperty("javax.net.debug", "all") is set, but i dont see anything of interrest.
I use the packages contained in 'java_xml_pack-summer-02_01' of SUN (jaxm-1.1_01, jaxp-1.2_01,jaxr-1.0_02 etc and the jsse 1.0.3).
The server is weblogic 7.
Calling
call.setTargetEndpointAddress("http://arakis:7001/traces_ws/searchCertificate");
works well while
call.setTargetEndpointAddress("https://arakis:7002/traces_ws/searchCertificate");
causes (after 2 minutes):
HTTP transport error: java.net.SocketException: Unexpected end of file from server
at com.sun.xml.rpc.client.http.HttpClientTransport.invoke(HttpClientTransport.java:189)
at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:73)
at com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java:54)
at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:279)
at SSLSOAPClient.main(SSLSOAPClient.java:264)
CAUSE:
java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:699)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:604)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:697)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:604)
at com.sun.xml.rpc.client.http.handler.HttpURLConnection.getInputStream(HttpURLConnection.java:543)
at com.sun.xml.rpc.client.http.handler.HttpURLConnection.getResponseCode(HttpURLConnection.java:920)
at com.sun.xml.rpc.client.http.HttpClientTransport.invoke(HttpClientTransport.java:123)
at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:73)
at com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java:54)
at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:279)
at SSLSOAPClient.main(SSLSOAPClient.java:264)
Exception in thread "main"
What I note is that the call is using a HttpURLConnection object and NOT a HttpsURLConnection object (so problems are 'normal' i guess), but I dont have any clue what I have to do to instruct the client to use HTTPS other than specifying HTTPS in the target.
Hope someone has an idea
TashaHello,
The default timeout in Axis is 60 seconds, you can change it by your client code, and you can still keep the session to call many times
((org.apache.axis.client.Stub)service).setMaintainSession(true); //keep session
((org.apache.axis.client.Stub)service).setTimeout(60*1000*30); //half hour
Lixin -
JSP with URLConnection or HttpsURLConnection, please help!
Thanks in advance for looking at this post :)
I have to develop an application. This application consists of a JSP form that collects credit card information. The form using a java bean to validate user input.
Once the input has been validated I need to connect to a URL and transmit this collected data and receive a response from the remote server. My questions are:
1. My plan of action is to write the java code required to connect to the URL and transmit the data within that java bean itself. Is this an acceptable way to handle it? OR should I make a separate bean for this, OR should I embed the code directly into the JSP?
2. My server is set up with a secure certificate. I need to connect to URL using the https protocol. Do I use URLConnection or HttpsURLConnection? I already wrote the code using URLConnection, and I can connect and receive a response from the server. However the test I ran is just a system check (still connecting to https://). I am concerned about the security of data being transmitted via a URL Connection (obviously need to make sure this is encrypted going out as well as coming in since it will contain credit card info).
I appreciate the response, I need to get this figured out asap.
Thanks!By the way thanks for your input - sorry for the delay with the dukes... I got URLConnection working and from what I can tell all is good. Now posting to set a timeout feature on URLConnection:
http://forum.java.sun.com/thread.jsp?forum=31&thread=386270 -
HttpsURLConnection: Error in setting timout
Hi,
I want to set timeout for weblogic.net.http.HttpsURLConnection.
I am using this code,
objConn.getSSLSession().getSessionContext().setSessionTimeout(1);
I am getting an error as,
java.lang.AbstractMethodError: javax.net.ssl.impl.SSLSessionContextImpl.setSessionTimeout(1)
Is there any other way to set timeout?
Thanks in advance.wls connection has a method conn.setReadTimeout(int millsc).
BTW, can you connect to a secure site that port 80 is not allowed? I am using wls to connect a site only allow secure connection, but some time get 403 error, sometime get connection reset by peer error. I am wondering why it called weblogic.net.http.HttpURLConnection not weblogic.net.http.HttpsURLConnection?
java.io.FileNotFoundException: Response: '403: Forbidden' for url: 'https://someurl.com'
at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:394)
at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:29) -
Sso session timeout per partner application
Hello,
I was just wondering if it is possible to configure SSO session timeouts per partner application? I'm looking to log out users of a particular application after 15 minutes, but don't want this change to affect any of my other SSO enabled applications. Is this possible?
Thanks,Hi,
I do not think so, you can not specify specail parameter for one application in SSO.
Why because SSO is one component (within your Infra) through which you logon different apps.
Another solution may be it will expensive is that you 'll need to use different infra for this specific application.
Regards,
Hamdy -
I am using the mac QQ and when I login it said login timeout.
I am using the mac QQ and when I login it said login timeout.
If you are missing using google maps - try the Nokia map app called "here"
-
Dear all,
I inherit this configuration from my colleague,
The PC / host inside the network internet connection will timeout / disconnected after several minutes when not using.
How do i disable the config and I want the host to continously connect to internet.
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2011.08.11 11:01:19 =~=~=~=~=~=~=~=~=~=~=~=
kewpie-MLK-ASA# sh run
: Saved
ASA Version 8.0(3)
hostname kewpie-MLK-ASA
domain-name default.domain.invalid
enable password ym1CwmrLnc/fndsu encrypted
names
interface Ethernet0/0
nameif outside
security-level 0
ip address 60.a.a.54 255.255.255.252
interface Ethernet0/1
no nameif
no security-level
no ip address
interface Ethernet0/1.1
vlan 10
nameif Inside
security-level 80
ip address 192.168.0.1 255.255.255.0
interface Ethernet0/1.2
vlan 20
nameif visitor
security-level 100
ip address 192.168.1.1 255.255.255.0
interface Ethernet0/2
shutdown
no nameif
no security-level
no ip address
interface Ethernet0/3
shutdown
no nameif
no security-level
no ip address
interface Management0/0
shutdown
no nameif
no security-level
no ip address
passwd 2KFQnbNIdI.2KYOU encrypted
ftp mode passive
dns server-group DefaultDNS
domain-name default.domain.invalid
access-list 100 extended permit icmp any any
access-list 100 extended permit tcp any any
access-list 100 extended permit ip any any
access-list 101 extended permit icmp any any
access-list 101 extended permit tcp any any eq 2828
access-list 101 extended permit tcp any host 192.168.0.254 eq 2255
pager lines 24
mtu outside 1500
mtu Inside 1500
mtu visitor 1500
icmp unreachable rate-limit 1 burst-size 1
icmp permit any outside
icmp permit any Inside
icmp permit any visitor
asdm image disk0:/asdm-507.bin
no asdm history enable
arp timeout 14400
global (outside) 1 interface
nat (Inside) 1 192.168.0.0 255.255.255.0
nat (visitor) 1 192.168.1.0 255.255.255.0
static (Inside,outside) tcp interface 2828 192.168.0.254 telnet netmask 255.255.255.255
access-group 101 in interface outside
access-group 100 in interface Inside
access-group 100 in interface visitor
route outside 0.0.0.0 0.0.0.0 60.a.a.53 1
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout uauth 0:30:00 absolute uauth 0:30:00 inactivity
dynamic-access-policy-record DfltAccessPolicy
aaa authentication include tcp/0 Inside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 LOCAL
no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart
telnet 0.0.0.0 0.0.0.0 Inside
telnet 192.168.4.0 255.255.255.0 Inside
telnet timeout 5
ssh 0.0.0.0 0.0.0.0 outside
ssh 0.0.0.0 0.0.0.0 Inside
ssh timeout 5
console timeout 0
dhcpd dns 202.188.0.133 202.188.5.1
dhcpd address 192.168.0.2-192.168.0.253 Inside
dhcpd enable Inside
dhcpd address 192.168.1.2-192.168.1.253 visitor
dhcpd enable visitor
threat-detection basic-threat
threat-detection statistics access-list
username admin password bOnxO8/ZA7i5hOxq encrypted
username kpmsb password /LTd0pEXjM6Ht1Sp encrypted
class-map inspection_default
match default-inspection-traffic
policy-map type inspect dns preset_dns_map
parameters
message-length maximum 512
policy-map global_policy
class inspection_default
inspect dns preset_dns_map
inspect ftp
inspect h323 h225
inspect h323 ras
inspect netbios
inspect rsh
inspect rtsp
inspect skinny
inspect esmtp
inspect sqlnet
inspect sunrpc
inspect tftp
inspect sip
inspect xdmcp
service-policy global_policy global
prompt hostname context
Cryptochecksum:809895a4506cb7e47a57552c4a0e0a0f
: endHi Mohammad,
You have the following timeoutr values set:
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout uauth 0:30:00 absolute uauth 0:30:00 inactivity
If you do not want the connection to timeout, use the following:
timeout conn 0:00:00
This would never timeout the connection.
Thanks,
Varun -
Jackd + guitar: "timeouts and broken pipes"
Hi friends! I'm trying to pass my electric guitar via any rack/effects (like Guitarix or Creox) with no luck. I've got this sound card:
01:06.0 Multimedia audio controller: Creative Labs [SB Live! Value] EMU10k1X
01:06.1 Input device controller: Creative Labs [SB Live! Value] Input device controller
I try with QJackCtl and invoking jackd from the terminal with any luck.
jackd -d alsa -C -P
jackd 0.121.3
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
could not open driver .so '/usr/lib/jack/jack_net.so': libcelt0.so.2: cannot open shared object file: No such file or directory
could not open driver .so '/usr/lib/jack/jack_firewire.so': libffado.so.2: cannot open shared object file: No such file or directory
JACK compiled with System V SHM support.
loading driver ..
creating alsa driver ... hw:0|hw:0|1024|2|48000|0|0|nomon|swmeter|-|32bit
control device hw:0
configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 16bit little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 16bit little-endian
ALSA: use 2 periods for playback
jackd watchdog: timeout - killing jackd
[gabo@machina ~]$
This is the output from QJackCtl:
00:12:07.126 Client deactivated.
00:12:07.130 JACK is being forced...
cannot read server event (Success)
cannot continue execution of the processing graph (Bad file descriptor)
zombified - calling shutdown handler
cannot send request type 7 to server
cannot read result for request type 7 from server (Broken pipe)
cannot send request type 7 to server
cannot read result for request type 7 from server (Broken pipe)
00:12:07.339 JACK was stopped with exit status=1.
I can hear my guitar and record with Audacity, but when jackd enter into the escenario everything blows up. I read that nowadays almost any sound card will work with QJackCtl with the default options. I play with the parameters and sometimes jack refuse to start. With the default options on i can make it run, but i get no sound of the racks or guitar effects processors neither the guitar tuners that use jack takes the sound from the guitar. My line input is in capture via alsamixer, but still no luck. Any clue on this? I'm skipping steps?
Thanks in advance.
iamgaboHi!
groups && cat /proc/asound/cards && cat ~/.asoundrc && cat '/etc/security/limits.d/audio.conf' && jackd -v
adm disk lp wheel http network video audio optical storage power users polkitd vboxusers wireshark kismet
0 [Live ]: EMU10K1X - Dell Sound Blaster Live!
Dell Sound Blaster Live! at 0xcc00 irq 17
#pcm.upmix71 {
#type upmix
#slave.pcm "surround71"
#delay 15
#channels 8
pcm.!default {
type hw
card 0
ctl.!default {
type hw
card 0
# convert alsa API over jack API
# use it with
# % aplay foo.wav
# use this as default
pcm.!default {
type plug
slave { pcm "jack" }
ctl.mixer0 {
type hw
card 1
# pcm type jack
pcm.jack {
type jack
playback_ports {
0 system:playback_1
1 system:playback_2
capture_ports {
0 system:capture_1
1 system:capture_2
cat: /etc/security/limits.d/audio.conf: No such file or directory
I have a file called 99-audio.conf
cat /etc/security/limits.d/99-audio.conf
@audio - rtprio 99
@audio - memlock unlimited
Also i've seen some guys changing this file too:
cat /etc/security/limits.conf
# /etc/security/limits.conf
#Each line describes a limit for a user in the form:
#<domain> <type> <item> <value>
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
#<domain> <type> <item> <value>
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
* - rtprio 0
* - nice 0
@audio - rtprio 65
@audio - nice -10
@audio - memlock unlimited
jackd 0.121.3
There are the snaps for QJackCtl
Also, checkout this stuff that i've recorded with audacity, only from the line and nothing else
http://ompldr.org/vZ3A2eg
Thanks!
Last edited by iamgabo (2012-12-15 02:21:08) -
Database connection timeouts and datasource errors
Connections in the pool randomly die overnight. Stack traces show that for some reason, the evermind driver is being used even though the MySql connection pool is specified.
Also, the evermind connection pool is saying connections aren't being closed, and the stack trace shows they're being allocated by entity beans that are definitely not left hanging around.
Sometimes we get non-serializable errors when trying to retrieve the datasource (this is only after the other errors start). Some connections returned from the pool are still good, so the application limps along.
EJBs and DAOs both use jdbc/SQLServerDSCore.
Has anyone seen this problem?
<data-sources>
<data-source
class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"
name="SQLServerDSCore"
location="jdbc/SQLServerDSCore"
xa-location="jdbc/xa/SQLServerXACore"
ejb-location="jdbc/SQLServerDSCore"
connection-driver="com.mysql.jdbc.Driver"
min-connections="5"
username="xxx"
password="xxx"
staleness-timeout="3600"
alive-poll-query="SELECT 1 FROM medispan"
url="jdbc:mysql://1.2.3.4:3306/dbo?autoReconnect=true&autoReconnectForPools=true&cachePrepStmts=true&is-connection-validation-required=true"
inactivity-timeout="30"
>
<property name="autoReconnect" value="true"/>
<property name="autoReconnectForPools" value="true"/>
<property name="is-connection-validation-required" value="true"/>
<property name="cachePrepStmts" value="true"/>
</data-source>
</data-sources>Rick,
OC4J 9.0.4.0.0 - BTW, do you know of any patches?As far as I know, there are no patches for the 9.0.4
production version of OC4J stand-alone.
I'm using container managed persistence,It was not clear to me, from your previous post, that you
are using CMP entity beans.
I found staleness-timeout and alive-poll-query
somewhere on a website when trying to track this
down. Here's four sources:Those sources refer to OrionServer -- and an older version, too, it seems.
Like all other Oracle products that start out as somebody
else's -- including, for example, JBuilder (that became "JDeveloper"), Apache Web Server (that became "Oracle HTTP Server") and TopLink -- their development paths diverge, until, eventually, there is absolutely no similarity between them at all. Hence, the latest versions of OC4J and "OrionServer" are so different, that you cannot be sure that something that works for "OrionServer" will work for OC4J.
I recall reading something, somewhere, sometime about configuring OC4J to use different databases (other than Oracle), but I really don't remember any details (since it was not relevant to me, because we only use Oracle database). In any case, it is possible to use a non-Oracle database with OC4J.
Good Luck,
Avi. -
MDB Timeouts and transaction behavior
Hi, thanks in advance for any help with this.
We have a MDB where we have set the timeout to five minutes. In a particular case this timeout is being reached but even though the MDB times out the transaction and sends the message for redelivery the original transaction that was processing the message continues until something happens from an application standpoint to cause that original transaction to complete. This means that we have the same message processed twice under these circumstances.
I would have expected that if a transaction timed out that the transaction would have been terminated and therefore our processing would have stopped. Is there a way to force this behavior or do we have to put an alarm in our code and kill ourselves such that we never encounter the transaction time out?
Thanks,
Sue ShanabrookI should have mentioned that we are using container managed transactions.
-
Lock Timeouts and Heap Space Exhaustion
I'm having some trouble figuring out the best way to handle resource constraints in my application. Generally speaking, the application works well after starting for about a day or so, but inevitably starts generating "Lock timeout" messages and eventually runs out of heap space.
Here is the main entity class:
http://github.com/justindthomas/flower_as/blob/master/src/java/name/justinthomas/flower/analysis/statistics/StatisticalInterval.java
Here is a supporting, persistent class:
http://github.com/justindthomas/flower_as/blob/master/src/java/name/justinthomas/flower/analysis/statistics/StatisticalFlow.java
This is the data accessor:
http://github.com/justindthomas/flower_as/blob/master/src/java/name/justinthomas/flower/analysis/statistics/StatisticsAccessor.java
And here is the class that controls the insertion and retrieval of data:
http://github.com/justindthomas/flower_as/blob/master/src/java/name/justinthomas/flower/analysis/statistics/StatisticsManager.java
The general flow is that a netflow packet is received from a sensor and the StatisticsManager normalizes the flow as it is inserted into the database. The normalization converts the summarized flow into several "resolutions." For example, one resolution might be 5000 ms. So the StatisticsManager takes the flow's end time/5000 - start time/5000 and divides the volume by the result and inserts that data into the database. It sounds kind of confusing, but results in a dataset that allows me to query for netflow activity for any time frame.
It also means that the database is queried as it is written to; existing data is updated more frequently than new data is written.
Regardless, Sleepycat seems to be holding on to more data than it needs to. Once an interval has passed (maybe 5 minutes or so), it is unlikely to be accessed again until queried to create charts. However, the memory usage grows out of control despite the lack of necessity for keeping all but recently entered entries in cache.
This is how the trouble generally starts (note that I've increased the timeout to 15000 ms to try to accommodate for longer wait times, but that just seems to delay the onset of the issue by a day or so):
[#|2010-10-23T13:46:00.854-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=64;_ThreadName=Thread-1;|addStatisticalSeconds Failed: (JE 4.0.104) Lock expired. Locker 30264205 -1_pool-6-thread-8_ThreadLocker: waited for lock on database=persist#Statistics#name.justinthomas.flower.analysis.statistics.StatisticalInterval LockAddr:32426808 node=17057517 type=READ grant=WAIT_NEW timeoutMillis=15000 startTime=1287866745448 endTime=1287866760795
Owners: [<LockInfo locker="29616818 -1_pool-6-thread-5_ThreadLocker" type="WRITE"/>]
Waiters: [<LockInfo locker="7246740 -1_pool-6-thread-6_ThreadLocker" type="READ"/>, <LockInfo locker="26940477 -1_pool-6-thread-2_ThreadLocker" type="WRITE"/>, <LockInfo locker="5099094 -1_pool-6-thread-4_ThreadLocker" type="READ"/>]
|#]
[#|2010-10-23T15:00:41.343-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=65;_ThreadName=Thread-1;|addStatisticalSeconds Failed: (JE 4.0.104) Lock expired. Locker 14184769 -1_pool-6-thread-1_ThreadLocker: waited for lock on database=persist#Statistics#name.justinthomas.flower.analysis.statistics.StatisticalInterval LockAddr:32730917 node=17057517 type=READ grant=WAIT_NEW timeoutMillis=15000 startTime=1287871223679 endTime=1287871241341
Owners: [<LockInfo locker="23975039 -1_pool-6-thread-8_ThreadLocker" type="WRITE"/>]
Waiters: [<LockInfo locker="19650664 -1_pool-6-thread-6_ThreadLocker" type="READ"/>]
|#]
[#|2010-10-23T15:32:13.090-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=66;_ThreadName=Thread-1;|addStatisticalSeconds Failed: (JE 4.0.104) Lock expired. Locker 17937364 -1_pool-6-thread-7_ThreadLocker: waited for lock on database=persist#Statistics#name.justinthomas.flower.analysis.statistics.StatisticalInterval LockAddr:20265315 node=17057517 type=WRITE grant=WAIT_NEW timeoutMillis=15000 startTime=1287873113904 endTime=1287873133089
Owners: [<LockInfo locker="3251671 -1_pool-6-thread-1_ThreadLocker" type="WRITE"/>]
Waiters: [<LockInfo locker="32174859 -1_pool-6-thread-8_ThreadLocker" type="READ"/>, <LockInfo locker="33186148 -1_pool-6-thread-4_ThreadLocker" type="WRITE"/>, <LockInfo locker="17825718 -1_pool-6-thread-2_ThreadLocker" type="READ"/>]
|#]
[#|2010-10-23T15:32:13.096-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=64;_ThreadName=Thread-1;|addStatisticalSeconds Failed: (JE 4.0.104) Lock expired. Locker 32174859 -1_pool-6-thread-8_ThreadLocker: waited for lock on database=persist#Statistics#name.justinthomas.flower.analysis.statistics.StatisticalInterval LockAddr:20265315 node=17057517 type=READ grant=WAIT_NEW timeoutMillis=15000 startTime=1287873118064 endTime=1287873133092
Owners: [<LockInfo locker="3251671 -1_pool-6-thread-1_ThreadLocker" type="WRITE"/>]
Waiters: [<LockInfo locker="33186148 -1_pool-6-thread-4_ThreadLocker" type="WRITE"/>, <LockInfo locker="17825718 -1_pool-6-thread-2_ThreadLocker" type="READ"/>]
|#]
[#|2010-10-23T15:32:13.367-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=67;_ThreadName=Thread-1;|addStatisticalSeconds Failed: (JE 4.0.104) Lock expired. Locker 33186148 -1_pool-6-thread-4_ThreadLocker: waited for lock on database=persist#Statistics#name.justinthomas.flower.analysis.statistics.StatisticalInterval LockAddr:20265315 node=17057517 type=WRITE grant=WAIT_NEW timeoutMillis=15000 startTime=1287873118366 endTime=1287873133366
Owners: [<LockInfo locker="3251671 -1_pool-6-thread-1_ThreadLocker" type="WRITE"/>]
Waiters: [<LockInfo locker="17825718 -1_pool-6-thread-2_ThreadLocker" type="READ"/>, <LockInfo locker="25145711 -1_pool-6-thread-6_ThreadLocker" type="READ"/>, <LockInfo locker="5544029 -1_pool-6-thread-5_ThreadLocker" type="READ"/>]
|#]
[#|2010-10-23T15:33:14.030-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=68;_ThreadName=Thread-1;|addStatisticalSeconds Failed: (JE 4.0.104) Lock expired. Locker 31602565 -1_pool-6-thread-5_ThreadLocker: waited for lock on database=persist#Statistics#name.justinthomas.flower.analysis.statistics.StatisticalInterval LockAddr:11219992 node=17057517 type=WRITE grant=WAIT_NEW timeoutMillis=15000 startTime=1287873175916 endTime=1287873194019
Owners: [<LockInfo locker="27649147 -1_pool-6-thread-2_ThreadLocker" type="WRITE"/>]
Waiters: [<LockInfo locker="3895581 -1_pool-6-thread-7_ThreadLocker" type="WRITE"/>, <LockInfo locker="8345933 -1_pool-6-thread-8_ThreadLocker" type="WRITE"/>, <LockInfo locker="12576013 -1_pool-6-thread-6_ThreadLocker" type="WRITE"/>, <LockInfo locker="5695501 -1_pool-6-thread-1_ThreadLocker" type="WRITE"/>]
|#]
[#|2010-10-23T15:33:23.334-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=64;_ThreadName=Thread-1;|addStatisticalSeconds Failed: (JE 4.0.104) Lock expired. Locker 8345933 -1_pool-6-thread-8_ThreadLocker: waited for lock on database=persist#Statistics#name.justinthomas.flower.analysis.statistics.StatisticalInterval LockAddr:11219992 node=17057517 type=WRITE grant=WAIT_NEW timeoutMillis=15000 startTime=1287873184851 endTime=1287873203333
Owners: [<LockInfo locker="3895581 -1_pool-6-thread-7_ThreadLocker" type="WRITE"/>]
Waiters: [<LockInfo locker="12576013 -1_pool-6-thread-6_ThreadLocker" type="WRITE"/>, <LockInfo locker="5695501 -1_pool-6-thread-1_ThreadLocker" type="WRITE"/>, <LockInfo locker="13327115 -1_pool-6-thread-4_ThreadLocker" type="READ"/>, <LockInfo locker="11939897 -1_pool-6-thread-5_ThreadLocker" type="READ"/>]
|#]
[#|2010-10-23T15:33:23.344-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=69;_ThreadName=Thread-1;|addStatisticalSeconds Failed: (JE 4.0.104) Lock expired. Locker 12576013 -1_pool-6-thread-6_ThreadLocker: waited for lock on database=persist#Statistics#name.justinthomas.flower.analysis.statistics.StatisticalInterval LockAddr:11219992 node=17057517 type=WRITE grant=WAIT_NEW timeoutMillis=15000 startTime=1287873184893 endTime=1287873203343
Owners: [<LockInfo locker="3895581 -1_pool-6-thread-7_ThreadLocker" type="WRITE"/>]
Waiters: [<LockInfo locker="5695501 -1_pool-6-thread-1_ThreadLocker" type="WRITE"/>, <LockInfo locker="13327115 -1_pool-6-thread-4_ThreadLocker" type="READ"/>, <LockInfo locker="11939897 -1_pool-6-thread-5_ThreadLocker" type="READ"/>]
|#]
Those errors go on and on and on, until I eventually see this:
[#|2010-10-23T17:37:29.876-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=71;_ThreadName=Thread-1;|Exception in thread "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv]]" |#]
[#|2010-10-23T17:37:34.915-0700|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=23;_ThreadName=Thread-1;|In main loop, we have serious trouble: java.lang.OutOfMemoryError: Java heap space|#]
[#|2010-10-23T17:37:56.516-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=66;_ThreadName=Thread-1;|Exception in thread "pool-6-thread-7" |#]
[#|2010-10-23T17:39:11.060-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=23;_ThreadName=Thread-1;|Exception in thread "{felix.fileinstall.poll=5000, felix.fileinstall.bundles.new.start=true, service.pid=org.apache.felix.fileinstall.fd8877ce-71aa-41d2-8ddc-15ce996cde1b, felix.fileinstall.dir=/opt/glassfishv3/glassfish/domains/domain1/autodeploy/bundles/, felix.fileinstall.filename=org.apache.felix.fileinstall-autodeploy-bundles.cfg, service.factorypid=org.apache.felix.fileinstall, felix.fileinstall.debug=1}" |#]
[#|2010-10-23T17:39:11.070-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=66;_ThreadName=Thread-1;|java.lang.OutOfMemoryError: Java heap space
at java.util.IdentityHashMap.init(IdentityHashMap.java:261)
at java.util.IdentityHashMap.<init>(IdentityHashMap.java:207)
at com.sleepycat.je.utilint.IdentityHashMap.<init>(IdentityHashMap.java:25)
at com.sleepycat.je.cleaner.LocalUtilizationTracker.<init>(LocalUtilizationTracker.java:39)
at com.sleepycat.je.recovery.Checkpointer.flushDirtyNodes(Checkpointer.java:665)
at com.sleepycat.je.recovery.Checkpointer.syncDatabase(Checkpointer.java:604)
at com.sleepycat.je.dbi.DatabaseImpl.sync(DatabaseImpl.java:977)
at com.sleepycat.je.dbi.DatabaseImpl.handleClosed(DatabaseImpl.java:863)
at com.sleepycat.je.Database.closeInternal(Database.java:458)
at com.sleepycat.je.Database.close(Database.java:314)
at com.sleepycat.je.SecondaryDatabase.close(SecondaryDatabase.java:331)
at com.sleepycat.persist.impl.Store.closeDb(Store.java:1454)
at com.sleepycat.persist.impl.Store.close(Store.java:1059)
at com.sleepycat.persist.EntityStore.close(EntityStore.java:630)
at name.justinthomas.flower.analysis.persistence.FlowReceiver.addFlow(FlowReceiver.java:94)
at name.justinthomas.flower.analysis.persistence.FlowReceiver.addFlow(FlowReceiver.java:65)
at name.justinthomas.flower.collector.FlowWorker.parseData(FlowWorker.java:382)
at name.justinthomas.flower.collector.FlowWorker.v9(FlowWorker.java:111)
at name.justinthomas.flower.collector.FlowWorker.run(FlowWorker.java:61)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
|#]
[#|2010-10-23T17:39:11.124-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=23;_ThreadName=Thread-1;|java.lang.OutOfMemoryError: Java heap space
|#]
[#|2010-10-23T17:39:11.141-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=72;_ThreadName=Thread-1;|Exception in thread "pool-6-thread-3" |#]
[#|2010-10-23T17:39:11.144-0700|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=72;_ThreadName=Thread-1;|java.lang.OutOfMemoryError: Java heap space
|#]
It's very frustrating, because things run so well at first and then just deteriorate into a resource nightmare. Any suggestions would be welcome. The application is running with 3 CPU cores and 2GB RAM.
Edited by: justindthomas on Oct 23, 2010 7:19 PM: I initially tried to use the forum's "URL" mechanism, but that doesn't seem to work worth anything, so I un-did it.I've disabled that thread for now. While debugging that, I ran into a SecondaryIntegrityException and I read that I shouldn't use secondary indexes without also using transactions. I enabled transactional processing, but the locking issues grew far worse. I opted to find ways to not use secondary indexes instead.You're right that with secondaries it is important to use txns. But I'm not sure why you're having such severe locking problems with txns. Were you using a txn with a cursor, to perform a scan? If so, I can probably suggest ways of doing that without the txn, if you can describe what you're doing and/or point me to your source code. Or, perhaps you've decided not to use secondaries, and this isn't an issue anymore?
--mark -
Session Timeouts and SmbServer
Hi,
When having iFS mapped to a network drive (via SMB), the SMB server
is unable to recover from a timeout of the LibrarySession. The network
drive then seems to be empty and doing a refresh within explorer
doesn't help either. The only thing that helps, is remapping the
network drive.
Within Node.log of iFS I see this stacktrace.
7/10/02 9:02 AM SmbServer: oracle.ifs.common.IfsException
oracle.ifs.common.IfsException: IFS-21000: Session is not connected or has timed-out
at java.lang.Throwable.fillInStackTrace(Native Method)
at java.lang.Throwable.fillInStackTrace(Compiled Code)
at java.lang.Throwable.<init>(Compiled Code)
at java.lang.Exception.<init>(Compiled Code)
at oracle.ifs.common.IfsException.<init>(Compiled Code)
at oracle.ifs.common.IfsException.<init>(Compiled Code)
at oracle.ifs.common.IfsException.<init>(Compiled Code)
at oracle.ifs.beans.LibraryObject.verifyConnected(Compiled Code)
at oracle.ifs.beans.Folder.findPublicObjectByPath(Compiled Code)
at oracle.ifs.beans.FolderPathResolver.findPublicObjectByPath(Compiled Code)
at oracle.ifs.beans.FolderPathResolver.findPublicObjectByPath(Compiled Code)
at oracle.ifs.protocols.smb.server.DbTree$DbQuery.<init>(Compiled Code)
at oracle.ifs.protocols.smb.server.DbTree.getQuery(Compiled Code)
at oracle.ifs.protocols.smb.server.ComTrans.trans2FindFirst(Compiled Code)
at oracle.ifs.protocols.smb.server.ComTrans.replyTransaction2(Compiled Code)
at oracle.ifs.protocols.smb.server.ComTrans.process(Compiled Code)
at oracle.ifs.protocols.smb.server.ComSmb.handleSmbMessage(Compiled Code)
at oracle.ifs.protocols.smb.server.SmbThread.handleNbMessage(Compiled Code)
at oracle.ifs.protocols.smb.server.SmbThread.readPackets(Compiled Code)
at oracle.ifs.protocols.smb.server.SmbThread.run(Compiled Code)
This behavior actually causes us big problems when editing files via MS Office.
Fortunately Office is able to still save it's data using some generated filename.
(At least until now I could not create any data loss)
But then you have to close it, remap then network drive, rename the file and then
reopen the file. This is big trouble to users, which are not familiar with mapping
network drives and renaming files with extensions.
Is there a way to make the SmbServer keep the LibrarySession alive, as long as
the network drive is mapped ?
Regards,
Jens LorenzWorkflow #2:
Login to my account
Click view all email
Open Drafts Folder
Open draft email response
Select "Send" to send email (total in session time of 30 seconds)
On screen reload, where I would expect to see some sort of indication that my email was successfully sent, instead the system throws session time out message and kicks me out.
I have no idea if my email was successfully sent or not.
Workflow #3:
Login to my account
Click view all email
Attempted to open the first new email in my inbox (total time in session <15 seconds)
System throws session timeout error and kicks me out to the main login.
There is obviously something going on with your session holding code. The session variable is not being passed correctly or something but it's very, very frustrating to spend 30-45 minutes trying to type out a couple of lines, particularly when you have multiple important activities going on that you need to respond too via email. -
Webmail timeouts and lost mail
I have seen several topics here with people complaining that Webmail times out when they are composing outgoing mail, and lose it when they hit send. However, none of these existing posts seem to have valid fixes or responses, and they all seem to be locked down to prevent new comments, so here is my two cents:
1. I have absolutely experienced the same thing. I've finally gotten into the habit of composing e-mail in an external editor, because I am sick and tired of wasting time recomposing lost e-mail.
2. The Verizon FAQ states two, contradictory policies, both of which are inaccurate:
http://www22.verizon.com/ResidentialHelp/HighSpeed/Email/Setup+And+Use/QuestionsOne/121965.htm:
Does Webmail time me out?
Webmail does not timeout due to inactivity.
http://www22.verizon.com/ResidentialHelp/HighSpeed/Email/Setup%20And%20Use/QuestionsOne/123344.htm
Does Webmail time out?
Due to security reasons, Webmail Basic does timeout after 20 minutes of inactivity. However, messages that were being composed before your session timed out will be saved in the DRAFTS folder.
The first one is outright wrong. Webmail absolutely, positively DOES time out.
The second one is wrong, at least in some circumstances. I have no doubt that this is their desired policy, but like many other customers, I'm here to tell you that under at least some circumstances, Webmai-l times out in as little as 5 minutes, and in these same circumstances, IT DOES NOT SAVE YOUR COMPOSED E-MAIL TO THE DRAFTS FOLDER. It simplay takes you to the log in screen, and when you log back in, your text is irretrievably gone. Verizon Webmail has not auto-saved anything for me in at least a year.
3. I have a theory as to what is going on here, and I am testing it today. Maybe one or two other folks can try this, too. I will report back whatever I find:
I access Webmail through an old bookmark which is defined as http://netmail.verizon.net/webmail/driver?nimlet=deggetfolder
However, I notice that if I login fresh from www.verizon.net and navigate to Webmail, I GET DIFFERENT SESSION COOKIES THAN I DO FROM THE ABOVE BOOKMARK. For example, I get a cookie called -_WL_AUTHCOOKIE_VZCSESSIONID which is not present when I log in using the old bookmark.. There are a couple of other variations, but this seems the most suspicious.
So, my theory is that those of us who often lose composed e-mail after ridiculously short time outs, are logging in from old bookmarks, and that things changed underneath us at some point during a Verizon Webmail update. I am going to try usng Webmail today from a fresh login, after first clearing out all my existing Verizon cookies, and see if this results in longer sessions without timing out, and saved messages when it does time out.Oh, and don't even get me started on SEARCH for text within a message. This has never worked, from Day One.
All I ever get is "We were unable to perform your request. Please try again." SEARCH on header text, like Sender and Subject works fine, but apparently Verizon QA has never tested the other options on large mail inboxes.
I'm pretty forgiving and undersrtanding of minor glitches and shortcomings in software, but Verizon Webmail is one of the most unreliable utilities that I've ever encountered from a large company with a huge customer base.
Maybe you are looking for
-
my iphone 3gs has broken [was in a sort of reboot loop] so that is being fixed and i get it back on Thursday. I may loose all data from it being fixed and that would of been fine as i have a recent back up on my i-tunes. However yesterday my laptop d
-
Can anyone tell me what's going on here?
I'm a video producer and have a license with a royalty free music site. Before upgrading to Safari 4, I could demo audio tracks just fine (using this interface: http://www.dewolfe.co.uk/musicsearch/cd_tracks.php?cdnumber=DWCD%200470). This feature al
-
Configuring fdomain in 11.1.1.5 on 64-bit Win 7
Hi, I am trying to run config domain in SOA 11.1.1.5 Windows 7 install, I select 'Oracle SOA Suite for developers' check box and I have a popup message CFGFWK-64972: One of the following needs to be selected: Oracle SOA Management extension - 11.1.1.
-
Could not initialize Photoshop because an unexpected end-of-file was encountred.
I have a problem with Photoshop, I can run it and work in it. After the start of reports this error message: Could not initialize Photoshop because an unexpected end-of-file was encountred. I do not know we mopped PC, defragment, and uninstall of Pho
-
Will Adobe Encore CS4 burn MTS files to an external blue ray burner if I buy one?
Will Adobe Encore CS4 recognize/burn MTS files to an EXTERNAL blue ray burner if I buy one?