|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
DB Connection Pool ProblemHi,
In my application, I used eclipselink(2.0.0.v20090731-r4765) jpa in java sdk platform with mysql 5.1.37. My application use db connection pool provided by eclipselink. I encountered with a problem under heavy traffic that cause to some of my db connections is hanging or not closed properly. First application throws a null pointer exception while it tries to release a connection. java.lang.NullPointerException at org.eclipse.persistence.sessions.server.ServerSession.setCheckConnections(ServerSession.java:776) at org.eclipse.persistence.sessions.server.ConnectionPool.releaseConnection(ConnectionPool.java:268) at org.eclipse.persistence.sessions.server.ServerSession.releaseClientSession(ServerSession.java:728) at org.eclipse.persistence.sessions.server.ClientSession.release(ClientSession.java:465) at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:99) at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63) After that it tries to use same db connection and throws another exception related to DB communication failure.(I am not sure about this, it is just my opinion.) Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.0.v20090731-r4765): org.eclipse.persistence.exceptions.DatabaseExce ption @ Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.0.v20090731-r4765): org.eclipse.persistence.exceptions.DatabaseExce ption Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection clo sed.Connection was implicitly closed due to underlying exception/error: ** BEGIN NESTED EXCEPTION ** com.mysql.jdbc.exceptions.jdbc4.CommunicationsException MESSAGE: Communications link failure The last packet successfully received from the server was 1,237 milliseconds ago. The last packet sent successfully to the server w as 1,236 milliseconds ago. STACKTRACE: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 1,237 milliseconds ago. The last packet sent successfully to the server w as 1,236 milliseconds ago. at sun.reflect.GeneratedConstructorAccessor32.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3030) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2916) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3459) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1957) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2107) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2086) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2237) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:876) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:589) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:517) at org.eclipse.persistence.internal.sessions.ExclusiveIsolatedClientSession.executeCall(ExclusiveIsolatedClientSession.java: 63) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:205) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:191) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.selectOneRow(DatasourceCallQueryMechanism.java:619) at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectOneRowFromTable(ExpressionQueryMechanism.java:256 4) at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectOneRow(ExpressionQueryMechanism.java:2535) at org.eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:431) at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:992) at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:670) at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:953) at org.eclipse.persistence.queries.ReadObjectQuery.execute(ReadObjectQuery.java:399) at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1016) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2864) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1208) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1190) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1150) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.executeQuery(EntityManagerImpl.java:642) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.findInternal(EntityManagerImpl.java:586) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.executeQuery(EntityManagerImpl.java:642) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.findInternal(EntityManagerImpl.java:586) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:490) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:369) at tr.com.argela.tmh.cache.db.dao.SubscriberProfileDao.findByPk(SubscriberProfileDao.java:21) at tr.com.argela.tmh.cache.core.http.HttpRequestHelper.saveResponse2Cache(HttpRequestHelper.java:249) at tr.com.argela.tmh.cache.core.http.HttpRequestHelper.processHttpMessage(HttpRequestHelper.java:125) at tr.com.argela.tmh.cache.core.http.server.MessageAcceptor.doJob(MessageAcceptor.java:70) at tr.com.argela.tmh.cache.core.http.server.MessageAcceptor.doPost(MessageAcceptor.java:35) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:521) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:436) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:118) at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:179) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:930) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:371) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:864) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:116) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:243) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:112) at org.eclipse.jetty.server.Server.handle(Server.java:337) at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:562) at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1000) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:736) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:209) at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:415) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:437) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:435) at java.lang.Thread.run(Thread.java:619) Caused by: java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:168) at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113) at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160) at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188) at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2472) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2927) ... 56 more ** END NESTED EXCEPTION ** I made some googling but did not find any information related to that problem. And one another question is; * How can I provide another db connection pool to eclipselink while not using eclipselink in an application server platform ? * How can I tell to eclipselink db connection pool to test the db connection before using it ? Thanks for comments and suggestions that would help to fix the problem. Regards, Mesut SOYTURK. Argela Technologies |
|
|
Re: DB Connection Pool ProblemPlease log a bug for the null-pointer. The code in ServerSession should be checking if the SequenceServer is null. A workaround would be to define a descriptor that uses sequencing.
You can use a DataSource with EclipseLink either through registering one in JNDI, or by passing one directly in code either using the "javax.persistence.nonJtaDataSource" persistence unit property, or using a SessionCustomizer to set one on the Session's DatabaseLogin, JNDIConnector.
James Sutherland EclipseLink, TopLink Wiki: EclipseLink, TopLink Forums: TopLink, EclipseLink Book: Java Persistence |
|
|
Re: DB Connection Pool ProblemHi James,
Thank you for your reply, I opened a ticket for nullpointer exception. The ticket id is 289191.
|
| Free embeddable forum powered by Nabble | Forum Help |