ReplicationMessageTransmit run does not unwrap PrivilegedActionException which
can lead to failure of replicationTests.ReplicationRun_Local_StateTest_part1_1
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: DERBY-4812
URL: https://issues.apache.org/jira/browse/DERBY-4812
Project: Derby
Issue Type: Bug
Components: Replication
Affects Versions: 10.5.3.1
Environment: AIX 64 bit, IBM 1.6 jvm
Reporter: Myrna van Lunteren
One of our nightly tests failed with the exception (db path slightly edited)
below.
Looking at the source of
org.apache.derby.impl.store.replication.net.ReplicationMessageTransmit.run, it
seems that the code does not completely unwrap the PrivilegedActionException
(compared to how this is done in for example
org.apache.derbyTesting.functionTests.util.PrivilegedFileOpsForTests.getFileInputStream()).
It could be that the test is looking for the java.io.IOException, which it
doesn't get (it gets the PrivilegedActionException instead).
----------------------
1)
testReplication_Local_StateTest_part1_1(org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun_Local_StateTest_part1_1)junit.framework.AssertionFailedError:
Got -1 XRE42 DERBY SQL error: SQLCODE: -1, SQLSTATE: XRE42, SQLERRMC:
Replicated database '/test/results/db_slave/wombat' shutdown.. Expected XRE41
at java.lang.Throwable.<init>(Throwable.java:67)
at
junit.framework.AssertionFailedError.<init>(AssertionFailedError.java:11)
at
org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun.assertException(ReplicationRun.java:3427)
at
org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun_Local_StateTest_part1_1._testPostStartedMasterAndSlave_StopSlave(ReplicationRun_Local_StateTest_part1_1.java:150)
at
org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun_Local_StateTest_part1_1.testReplication_Local_StateTest_part1_1(ReplicationRun_Local_StateTest_part1_1.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:109)
at
org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun.runBare(ReplicationRun.java:201)
at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
at junit.extensions.TestSetup.run(TestSetup.java:16)
----------------------
The exception in the db_master-derby.log was:
------------------------
Database Class Loader started - derby.database.classpath=''
---- BEGIN REPLICATION ERROR MESSAGE (9/13/10 9:40 AM) ----
Replication slave got a fatal error for database
'/test/results/db_master/wombat'. Replication will be stopped.
ERROR XRE04: Could not establish a connection to the peer of the replicated
database '/test/results/db_master/wombat' on address 'localhost:8888'.
at org.apache.derby.iapi.error.StandardException.newException(Unknown
Source)
at
org.apache.derby.impl.store.replication.master.MasterController.setupConnection(Unknown
Source)
at
org.apache.derby.impl.store.replication.master.MasterController.startMaster(Unknown
Source)
at
org.apache.derby.impl.store.raw.RawStore.startReplicationMaster(Unknown Source)
at
org.apache.derby.impl.store.access.RAMAccessManager.startReplicationMaster(Unknown
Source)
at
org.apache.derby.impl.db.BasicDatabase.startReplicationMaster(Unknown Source)
at
org.apache.derby.impl.jdbc.EmbedConnection.handleStartReplicationMaster(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
at org.apache.derby.impl.drda.Database.makeConnection(Unknown Source)
at
org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(Unknown
Source)
at
org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(Unknown Source)
at
org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown
Source)
at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
Caused by: java.security.PrivilegedActionException: java.net.ConnectException:
Connection refused
at
java.security.AccessController.doPrivileged(AccessController.java:255)
at
org.apache.derby.impl.store.replication.net.ReplicationMessageTransmit.initConnection(Unknown
Source)
... 17 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:352)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:214)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:201)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:378)
at java.net.Socket.connect(Socket.java:528)
at
org.apache.derby.impl.store.replication.net.ReplicationMessageTransmit$1.run(Unknown
Source)
at
java.security.AccessController.doPrivileged(AccessController.java:251)
... 18 more
============= begin nested exception, level (1) ===========
java.security.PrivilegedActionException: java.net.ConnectException: Connection
refused
at
java.security.AccessController.doPrivileged(AccessController.java:255)
at
org.apache.derby.impl.store.replication.net.ReplicationMessageTransmit.initConnection(Unknown
Source)
at
org.apache.derby.impl.store.replication.master.MasterController.setupConnection(Unknown
Source)
at
org.apache.derby.impl.store.replication.master.MasterController.startMaster(Unknown
Source)
at
org.apache.derby.impl.store.raw.RawStore.startReplicationMaster(Unknown Source)
at
org.apache.derby.impl.store.access.RAMAccessManager.startReplicationMaster(Unknown
Source)
at
org.apache.derby.impl.db.BasicDatabase.startReplicationMaster(Unknown Source)
at
org.apache.derby.impl.jdbc.EmbedConnection.handleStartReplicationMaster(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
at org.apache.derby.impl.drda.Database.makeConnection(Unknown Source)
at
org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(Unknown
Source)
at
org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(Unknown Source)
at
org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown
Source)
at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:352)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:214)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:201)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:378)
at java.net.Socket.connect(Socket.java:528)
at
org.apache.derby.impl.store.replication.net.ReplicationMessageTransmit$1.run(Unknown
Source)
at
java.security.AccessController.doPrivileged(AccessController.java:251)
... 18 more
============= end nested exception, level (1) ===========
============= begin nested exception, level (2) ===========
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:352)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:214)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:201)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:378)
at java.net.Socket.connect(Socket.java:528)
at
org.apache.derby.impl.store.replication.net.ReplicationMessageTransmit$1.run(Unknown
Source)
at
java.security.AccessController.doPrivileged(AccessController.java:251)
at
org.apache.derby.impl.store.replication.net.ReplicationMessageTransmit.initConnection(Unknown
Source)
at
org.apache.derby.impl.store.replication.master.MasterController.setupConnection(Unknown
Source)
at
org.apache.derby.impl.store.replication.master.MasterController.startMaster(Unknown
Source)
at
org.apache.derby.impl.store.raw.RawStore.startReplicationMaster(Unknown Source)
at
org.apache.derby.impl.store.access.RAMAccessManager.startReplicationMaster(Unknown
Source)
at
org.apache.derby.impl.db.BasicDatabase.startReplicationMaster(Unknown Source)
at
org.apache.derby.impl.jdbc.EmbedConnection.handleStartReplicationMaster(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
at org.apache.derby.impl.drda.Database.makeConnection(Unknown Source)
at
org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(Unknown
Source)
at
org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(Unknown Source)
at
org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown
Source)
at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
============= end nested exception, level (2) ===========
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.