Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » EclipseLink » Eclipselink gives exception when running TestSuite(Eclipselink gives exception when running TestSuite)
Eclipselink gives exception when running TestSuite [message #1861336] Fri, 06 October 2023 13:07 Go to next message
Sanjana C is currently offline Sanjana CFriend
Messages: 31
Registered: December 2022
Member
Hi Team,

I am working on eclipselink 2.7.6 with spring.
When i run testsuite which has many test cases , the suite runs few classes but after some time fails with below error.

Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.7.6.v20200131-b7c997804f): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLRecoverableException: IO Error: Got minus one from a read call
Error Code: 17002
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:318)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:150)
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:172)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:348)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:316)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.reconnect(DatasourceAccessor.java:583)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.reconnect(DatabaseAccessor.java:1665)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.incrementCallCount(DatasourceAccessor.java:323)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.beginTransaction(DatasourceAccessor.java:256)
at org.eclipse.persistence.sessions.server.ClientSession.retryTransaction(ClientSession.java:790)
at org.eclipse.persistence.internal.sessions.AbstractSession.basicBeginTransaction(AbstractSession.java:753)
at org.eclipse.persistence.internal.sessions.AbstractSession.basicBeginTransaction(AbstractSession.java:720)
at org.eclipse.persistence.internal.sessions.AbstractSession.beginTransaction(AbstractSession.java:915)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.beginTransaction(UnitOfWorkImpl.java:632)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.beginEarlyTransaction(UnitOfWorkImpl.java:621)
at org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect.beginTransaction(EclipseLinkJpaDialect.java:90)
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:330)
... 30 more
Caused by: java.sql.SQLRecoverableException: IO Error: Got minus one from a read call
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:854)
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:793)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:57)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:747)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:562)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:174)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:165)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:138)
... 45 more
Caused by: oracle.net.ns.NetException: Got minus one from a read call
at oracle.net.ns.NSProtocolNIO.doSocketRead(NSProtocolNIO.java:557)
at oracle.net.ns.NIOPacket.readNIOPacket(NIOPacket.java:403)
at oracle.net.ns.NSProtocolNIO.negotiateConnection(NSProtocolNIO.java:127)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:340)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1596)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:588)
... 56 more

When i check processes in database, maximum value getting exceeded and database team not ready to increase the value.

We are using exclusive connection to database , so is there any way i can get rid of this error?

<connection-policy>
<exclusive-connection>true</exclusive-connection>
<lazy>false</lazy>
</connection-policy>

Previously ,it was working fine in toplink 10.0 version
Re: Eclipselink gives exception when running TestSuite [message #1861475 is a reply to message #1861336] Sat, 14 October 2023 15:26 Go to previous messageGo to next message
Shin Chane is currently offline Shin ChaneFriend
Messages: 2
Registered: October 2023
Junior Member
It seems your testsuite is encountering a java.sql.SQLRecoverableException due to exceeding the maximum database connection limit. Since the database team can't increase it, consider optimizing your application's connection usage. Also, review if the Fútbol Gratuito exclusive connection policy is necessary or if there are alternatives. Compare changes in connection handling from the previous version (TopLink 10.0) for insights.
Re: Eclipselink gives exception when running TestSuite [message #1861497 is a reply to message #1861475] Mon, 16 October 2023 14:53 Go to previous messageGo to next message
Chris Delahunt is currently offline Chris DelahuntFriend
Messages: 54
Registered: December 2021
Member
Do you need to be using exclusive-connection for test cases? What are you running in those tests, how is the persistence unit setup, and are you maybe running concurrently in a way that each test has their own connection pool instead of a single one shared with reduced number of connections in the pool?
Re: Eclipselink gives exception when running TestSuite [message #1861515 is a reply to message #1861497] Tue, 17 October 2023 06:56 Go to previous messageGo to next message
Sanjana C is currently offline Sanjana CFriend
Messages: 31
Registered: December 2022
Member
Hi Chris,

Yes exclusive-connections is set in sessions.xml .
Test cases include crud operations, so each test need a jdbc connection.
Below is the persistence unit properties. Its just a test suite without any external properties to run concurrently or one by one. By default it runs concurrently i guess and opens all processes available.


<properties>

<property name="eclipselink.logging.level" value="ALL" />
<property name="eclipselink.logging.level.sql" value="ALL"/>
<property name="eclipselink.logging.parameters" value="true" />
<property name="eclipselink.logging.logger" value="DefaultLogger"/>
<property name="eclipselink.jdbc.bind-paramaters" value="true" />
<property name="eclipselink.target-database" value="Oracle" />
<property name="eclipselink.persistence-context.flush-mode" value="commit" />
<property name="eclipselink.persistence-context.reference-mode" value="WEAK" />
<property name="eclipselink.weaving" value="false" />
<!-- <property name="eclipselink.weaving.eager" value="true" />-->
<property name="eclipselink.jdbc.exclusive-connection.mode" value="Always" />
<property name="eclipselink.sessions-xml" value="sessions.xml" />
<property name="eclipselink.session-name" value="default" />
</properties>

and sessions.xml is

<session xsi:type="server-session">
<name>default</name>
<logging xsi:type="server-log"></logging>
<primary-project xsi:type="xml"></primary-project>
<additional-project xsi:type="xml"></additional-project>
<login xsi:type="database-login">
<platform-class>org.eclipse.persistence.platform.database.oracle.Oracle10Platform</platform-class>
<!-- usage of external connect information - uses the spring toplink transaction manager -->
<external-connection-pooling>true</external-connection-pooling>
<external-transaction-controller>true</external-transaction-controller>
<sequencing>
<default-sequence xsi:type="native-sequence">
<name>Native</name>
<preallocation-size>1</preallocation-size>
</default-sequence>
</sequencing>
</login>
<connection-policy>
<exclusive-connection>true</exclusive-connection>
<lazy>false</lazy>
</connection-policy>
</session>
Re: Eclipselink gives exception when running TestSuite [message #1861558 is a reply to message #1861515] Wed, 18 October 2023 16:43 Go to previous messageGo to next message
Chris Delahunt is currently offline Chris DelahuntFriend
Messages: 54
Registered: December 2021
Member
You have 'external-connection-pooling' set, which means you might need to look at your spring datasource properties and how it is injecting them into the tests to be able to determine what else can be done (or what might be going wrong). Logging might help determine where/when connections are obtained and released, as with the exclusive connection options, they won't be released until the EntityManager is closed - when that happens is determined by application and unit test code (and Spring integrations).

Best Regards,
Chris

[Updated on: Wed, 18 October 2023 16:44]

Report message to a moderator

Re: Eclipselink gives exception when running TestSuite [message #1861590 is a reply to message #1861558] Fri, 20 October 2023 12:19 Go to previous messageGo to next message
Sanjana C is currently offline Sanjana CFriend
Messages: 31
Registered: December 2022
Member
Hi Chris,

Thanks for your reply .As you told , we are using DriverManagerDataSource which doesnot have any connection pool properties set as below.
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="username" value=""/>
<property name="password" value=""/>
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value=""/>
</bean>

</bean>

I really do not have idea on it but when i tried used BasicDataSource instead, testcases not getting database connection at all .

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="username" value=""/>
<property name="password" value=""/>
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="" />

</bean>

Please let me know if you have any insight on this . Or may be i need to check in spring Forum . But Thanks for helping me figure it out.
Re: Eclipselink gives exception when running TestSuite [message #1861624 is a reply to message #1861590] Mon, 23 October 2023 20:18 Go to previous message
Chris Delahunt is currently offline Chris DelahuntFriend
Messages: 54
Registered: December 2021
Member
I have no clues. Only thing I might check is to verify that your tests are correctly closing the sessions or EntityManagers when they are done - since exclusive connections are tied to EntityManagers (or the legacy ClientSessions sessions), the connections will be held until they get closed.
Previous Topic:Eclipselink generating sequence twice which is unexcepted
Next Topic:How to file an EclipseLink bug
Goto Forum:
  


Current Time: Sat Apr 27 18:12:43 GMT 2024

Powered by FUDForum. Page generated in 0.03270 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top