ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sven Boden <list...@pandora.be>
Subject Re: No operations allowed after connection closed.
Date Sat, 02 Jul 2005 20:49:29 GMT

Catching up... Since the problem in the original mails below where a
iBATIS ping is enable without a valid ping query also appears as e.g.
JIRA IBATIS-158, I would like to propose a few small changes to
SimpleDataSource to minimize this behaviour in the future.

Can I still attach the changes to IBATIS-158 (which is now closed)?

Regards,
Sven Boden

On Wed, 29 Jun 2005 22:13:18 -0600, you wrote:

>Just an FYI:
>
>DBCP and most app server pools also support validation/ping queries.
>
>Clinton
>
>On 6/29/05, Meindert <meindert@pastelebusiness.com> wrote:
>> 
>>  Ok, sorry I didn't look very well.
>> 
>>  The answer is in the back of the manual:
>> 
>> SimpleDataSource
>> 
>> Property Name: Pool.PingQuery
>> 
>> The ping query will be run against the database to test the connection
>>  ------------------------------
>>  
>> *From:* Meindert [mailto:meindert@pastelebusiness.com] 
>> *Sent:* Wednesday, June 29, 2005 9:16 AM
>> *To:* user-java@ibatis.apache.org
>> *Subject:* RE: No operations allowed after connection closed.
>>  
>>  I have replaced my JDBC driver but am still having the same problem.
>> 
>>  Looked a bit around on google and got the following tip:
>> 
>> >We solved this same problem by doing essentially what Mark advises
>> >below.
>> 
>> >We set the wait_timeout on the server to be a very large number and the
>> >idle timeout for our connection pool to be fairly small. For what we are
>> >doing, the time required to create a new connection is not very
>> >significant, so we usually have the idle timeout for connections in the
>> >pool set to just a few minutes.
>> 
>> >Applications using our connection pool can specify an optional
>> >configuration property that the pool manager will use to validate the
>> >connection before it is returned to the application. "SELECT 1" seems to
>> >be succinct, safe, and performant. If the query fails, the connection is
>> >removed from the pool and another one is tried. If the pool is empty, of
>> >course, a new connection is created.
>> 
>> >Robert Stewart
>> 
>>  Will play around with this, but thought this could be some handy info for 
>> users with the same problem
>> 
>>  Meindert
>> 
>> ------------------------------------
>> 
>> I have also seen this same error using a thin client. The first quesy 
>> throws a exception about closed connection then creates a new connection and 
>> carries on. I am using the same version of mysql but connector 3.1.6.. 
>> When i use the same client same queries against our hsqldb db we never get 
>> the problem. I have been working on the hsqldb side for a while and assumed 
>> it was an error in my code which i would fix later. i have a newer 
>> 
>> version of mysql 4.1.12 which is our new base line so i will try it out on 
>> this database and let you know.. But it sounds like a bug in the driver?
>> 
>> Steve.. 
>> 
>> -----Original Message----- 
>> From: Meindert [mailto:meindert@pastelebusiness.com<meindert@pastelebusiness.com>
>> ] 
>> Sent: Thu 6/23/2005 2:19 PM 
>> To: user-java@ibatis.apache.org; 'Brandon Goodin' 
>> Subject: RE: No operations allowed after connection closed. 
>>  
>> Database version: 
>> 
>> mysql-connector-java-3.0.16-ga-bin.jar 
>> 
>> mysql-4.1.9 
>> 
>> To reproduce I open the website on the index page and then close the 
>> browser, the next day I open the browser again and I get the error. 
>> 
>> The error comes from the connection pool, I find this in my Catalina.out 
>> log: 
>> 
>>  DEBUG [http-80-Processor25] - Returned connection 12839271 to pool. (This 
>> was the day before) 
>> 
>> DEBUG [http-80-Processor24] - Checked out connection 12839271 from pool. 
>> (The connection for the paginated list on my index.shtml page) 
>> 
>> DEBUG [http-80-Processor24] - {conn-100045} Connection 
>> 
>> DEBUG [http-80-Processor24] - A bad connection (12839271) attempted to 
>> return to the pool, discarding connection. 
>> 
>>  The query fails and the index page comes up and prints the exception 
>> trace. 
>> 
>> Pressing F5 reloads the page and fetches a new connection that succeeds. 
>> 
>>  The connection is used for: 
>> setEmployeeList(dailyBulletinService.getOutStaff()); 
>> 
>>  Is this enough info? 
>> 
>>    MEINDERT HOVING 
>> 
>> Developer, Pastel Payroll 
>> 
>>  Direct: 
>> 
>> +27 (21) 680 9015 
>> 
>> Main: 
>> 
>> +27 (21) 680 9000 
>> 
>> Fax: 
>> 
>> +27 (21) 680 9090 
>> 
>> meindert@pastelebusiness.com 
>> 
>> www.pastel.co.za <http://www.pastel.co.za> 
>> 
>>  9 out of 10 accountants recommend PASTEL Accounting 
>> 
>>  -----Original Message----- 
>> From: Brandon Goodin [mailto:brandon.goodin@gmail.com<brandon.goodin@gmail.com>]

>> 
>> Sent: Thursday, June 23, 2005 1:18 PM 
>> To: user-java@ibatis.apache.org 
>> Subject: Re: No operations allowed after connection closed. 
>> 
>>  Meindert, 
>> 
>>  Please provide more information. I can't really tell what is happening 
>> 
>> in your situation. If you Servlet Session is timing out it should have 
>> 
>> not affect on the database connection. My notion is that it is 
>> 
>> something else. Please provide the database and driver with versions 
>> 
>> that you are using and a more specific description of what the 
>> 
>> application is doing when you experience this error. 
>> 
>>  Thanks 
>> 
>> Brandon 
>> 
>>  On 6/23/05, Meindert <meindert@pastelebusiness.com> wrote: 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > How can I force a reconnect after a session has been timed out 
>> 
>> > ________________________________ 
>> 
>> > 
>> 
>> > 
>> 
>> > I was hoping anybody could help me here, it is probably a stupid thing 
>> but 
>> I 
>> 
>> > can't seem to find the answer.. 
>> 
>> > 
>> 
>> > My application is based on the jpetshop. 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > Anyway, I have on my main page a paginated list (employeeList) that must 
>> be 
>> 
>> > fetched every time the page is loaded. 
>> 
>> > 
>> 
>> > I set it to null in the reset method of the bean 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > public void reset() { 
>> 
>> > 
>> 
>> > pageDirection = null; 
>> 
>> > 
>> 
>> > employeeList = null; 
>> 
>> > 
>> 
>> > } 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > And I call the service layer to do the (simple) query, when I go to 
>> 
>> > index.shtml 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > public String index() { 
>> 
>> > 
>> 
>> > setEmployeeList(dailyBulletinService.getOutStaff()); 
>> 
>> > 
>> 
>> > return "success"; 
>> 
>> > 
>> 
>> > } 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > My problem is that the page loads with an error "after a while" (I 
>> assume 
>> 
>> > after the session times out) 
>> 
>> > 
>> 
>> > Pressing F5 in the browser will clear this error. 
>> 
>> > 
>> 
>> > What am I doing wrong or how do I get ride of it? 
>> 
>> > 
>> 
>> > I'm using mysql, tomcat on a linux machine. 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > The error is: java.sql.SQLException: Communication link failure: 
>> 
>> > java.io.EOFException, underlying cause: null 
>> 
>> > Caused by: java.sql.SQLException: No operations allowed after connection 
>> 
>> > closed. 
>> 
>> > 
>> 
>> > Connection was closed due to the following exception: 
>> 
>> > 
>> 
>> > ** BEGIN NESTED EXCEPTION ** 
>> 
>> > 
>> 
>> > java.sql.SQLException 
>> 
>> > MESSAGE: Communication link failure: java.io.EOFException, underlying 
>> cause: 
>> 
>> > null 
>> 
>> > 
>> 
>> > ** BEGIN NESTED EXCEPTION ** 
>> 
>> > 
>> 
>> > java.io.EOFException 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > 
>> 
>> > Please help 
>> 
>> > 
>> 
>> > Meindert 
>> 
>>


Mime
View raw message