0

I'm facing an issue with Payara server 4.1.1.164.

In the log, I found error Connection reset first, then all the connection became not available with error The connection is closed.

I need to restart my application to get everything back, the connection won't rebuild if i don't.

The following is the call stack, sorry I have to hide the query.

How could I replay this error or how to avoid the same?

domain.xml

<jdbc-connection-pool match-connections="true" validate-atmost-once-period-in-seconds="60" connection-creation-retry-attempts="15" statement-leak-reclaim="true" validation-table-name="dbo.UBConnectionTest" res-type="javax.sql.ConnectionPoolDataSource" connection-creation-retry-interval-in-seconds="6" max-pool-size="30" max-wait-time-in-millis="30000" datasource-classname="com.microsoft.sqlserver.jdbc.SQLServerXADataSource" idle-timeout-in-seconds="1500" name="xxxxxPool" is-connection-validation-required="true" init-sql="select 1 from UBConnectionTest">
  <property name="serverName" value="xxxxx.xxxxx.xxxx.xxx"></property>
  <property name="portNumber" value="1433"></property>
  <property name="databaseName" value="xxxx"></property>
  <property name="user" value="xxxx"></property>
  <property name="password" value="xxxxxxxx"></property>
  <property name="encrypt" value="true"></property>
  <property name="url" value="jdbc:sqlserver://xxxx.xxxxx.xxxx.xxxx:1433;database=xxxxx;user=xxxxx;password=xxxxxxxx;encrypt=true;hostNameInCertificate=*.xxx.xxxx.xxxx;loginTimeout=30;trustServerCertificate=true;"></property>
</jdbc-connection-pool>


 [#|2017-06-06T05:40:53.597+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=25;_ThreadName=http-thread-pool(1);_TimeMillis=1496727653597;_LevelValue=800;|
   Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException
 Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset


 [#|2017-06-06T05:40:53.597+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=25;_ThreadName=http-thread-pool(1);_TimeMillis=1496727653597;_LevelValue=800;|
   Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException
 Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset
 Error Code: 0
 Call: SELECT xxxxxx))
    bind => [2 parameters bound]
 Query: ReadAllQuery(name="xxxxx))").|#]

 [#|2017-06-06T05:40:53.598+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=25;_ThreadName=http-thread-pool(1);_TimeMillis=1496727653598;_LevelValue=800;|
   Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException
 Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
 Error Code: 0
 Call: xxxxxx))
    bind => [2 parameters bound]
 Query: ReadAllQuery(name="xxxxxxxxxx)").|#]

 [#|2017-06-06T05:40:56.320+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656320;_LevelValue=800;|
   token is Bearer 2fb378a7-2a33-3986-a288-35c97d358bac,userPrincipal is :null,remoteName is null|#]

 [#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;|
   token is Bearer 2fb378a7-2a33-3986-a288-35c97d358bac|#]

 [#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;|
   requestToke is 2fb378a7-2a33-3986-a288-35c97d358bac,sessionToken is 2fb378a7-2a33-3986-a288-35c97d358bac|#]

 [#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;|
   requestToken is same from the sessionToke|#]

 [#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;|
   after deal the defaultGroup length is 3|#]

 [#|2017-06-06T05:40:56.321+0000|INFO|Payara 4.1|com.hand.glassfish.security.oauth2.OAuth2AuthModule|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656321;_LevelValue=800;|
   after deal the defaultGroup token is 2fb378a7-2a33-3986-a288-35c97d358bac|#]

 [#|2017-06-06T05:40:56.322+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656322;_LevelValue=800;|
   Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException
 Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
 Error Code: 0
 Call: xxxxxxxxx)
    bind => [2 parameters bound]
 Query: ReadAllQuery(name=xxxxxxx").|#]

 [#|2017-06-06T05:40:56.323+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=27;_ThreadName=http-thread-pool(3);_TimeMillis=1496727656323;_LevelValue=800;|
   Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException
 Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
 Error Code: 0
 Call:xxxxxxx))
    bind => [2 parameters bound]
 Query: ReadAllQuery(name="xxxxxxxxxxxx)").|#]

[#|2017-06-06T05:40:58.596+0000|INFO|Payara 4.1|org.eclipse.persistence.session./file:/opt/payara41/glassfish/domains/domain1/applications/HEMPlatform-ear/HEMPlatform-ejb_jar/_HEMPlatformFNDPU.query|_ThreadID=25;_ThreadName=http-thread-pool(1);_TimeMillis=1496727658596;_LevelValue=800;|
  Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
Pang
  • 9,564
  • 146
  • 81
  • 122
alex wei
  • 1
  • 1

2 Answers2

0

that message is caused because something is wrong in the socket connection in data layer (JDBC). Please have a look in your connection pool if it has a confortable number of available connections in the application server, and also check, if you are using SSL, the TLS version in the application server and in the database server.

rod.dinis
  • 1,233
  • 2
  • 11
  • 20
0

To avoid encountering JDBC connection failure in GlassFish, first things first, you can increase the connection pool timeout. I think your DB is extremely busy and is not able to response GlassFish request within the specific time, as a result, your connection can not be handled properly. Make sure your DB server is running and you have enough resources (RAM, CPU, connection).

Secondly, You can validate connection pool before using it which can be configured in connection pool as well.

Set JDBC Connection Pool attributes with the Admin Console under Resources > JDBC > Connection Pools > PoolName.

Timeout Settings There are two timeout settings: - Max Wait Time. - Idle Timeout.

Connection Validation Settings If true, the pool validates connections (checks to find out if they are usable) before providing them to an application. However, the disadvantage is, requiring connection validation forces the server to apply the validation algorithm every time the pool returns a connection, which adds overhead to the latency of getConnection()

Kambiz
  • 99
  • 1
  • 10