Persister did not Connect to Database Automatically when the Database was restarted, keeping the Persister Running.

Persister did not Connect to Database Automatically when the Database was restarted, keeping the Persister Running.

book

Article ID: KB0089119

calendar_today

Updated On:

Products Versions
TIBCO ActiveSpaces -
Not Applicable -

Description

Resolution:
Description:
===========
When the "ASPersistence" Persister given with examples in ActiveSpaces installation is started, it connects to the Database. But after restarting the Database, and keeping the persister running, if we try to do any operation on AS, the Persister throws the following error:

java.sql.SQLRecoverableException: IO Error: Software caused connection abort: recv failed
        at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1065)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)
        at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3685)
        at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1376)
        at persistence.ASJdbcConnection.process(ASJdbcConnection.java:208)
        at persistence.ASPersister.onWrite(ASPersister.java:136)
        at com.tibco.as.space.impl.ASPersisterAdapter.dispatch(ASPersisterAdapter.java:76)
Caused by: java.net.SocketException: Software caused connection abort: recv failed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at oracle.net.ns.Packet.receive(Packet.java:300)
        at oracle.net.ns.DataPacket.receive(DataPacket.java:106)
        at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:315)
        at oracle.net.ns.NetInputStream.read(NetInputStream.java:260)
        at oracle.net.ns.NetInputStream.read(NetInputStream.java:185)
        at oracle.net.ns.NetInputStream.read(NetInputStream.java:102)
        at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124)
        at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80)
        at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1044)
        ... 7 more
java.sql.SQLRecoverableException: Closed Connection
    at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:5389)]
    at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1578)
    at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1563)

When we restart the Persister, it runs fine. Why doesn't the Persister reconnect to the database after the database is restarted?


Environment:
===========
ActiveSpaces 2.0.* ,ActiveSpaces 2.1.*
All operating systems


Resolution:
===========
The Persister implementation is up to user. If there is a restart and the onWrite fails due to a connection reference being broken, the client code needs initiate the reconnect. ActiveSpaces would not be aware that DB was down.

Issue/Introduction

Persister did not Connect to Database Automatically when the Database was restarted, keeping the Persister Running.