Derby
  1. Derby
  2. DERBY-4812

ReplicationMessageTransmit run does not unwrap PrivilegedActionException which can lead to failure of replicationTests.ReplicationRun_Local_StateTest_part1_1

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 10.5.3.1
    • Fix Version/s: 10.5.3.2, 10.6.2.4, 10.7.1.1
    • Component/s: Replication
    • Labels:
      None
    • Environment:
      AIX 64 bit, IBM 1.6 jvm
    • Issue & fix info:
      Patch Available
    • Bug behavior facts:
      Regression Test Failure

      Description

      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) ===========

      1. derby-4812_diff.txt
        7 kB
        Kathey Marsden
      2. derby-4812_diff.txt
        7 kB
        Kathey Marsden
      3. derby-4812_diff.txt
        7 kB
        Kathey Marsden
      4. derby-4812_diff.txt
        7 kB
        Kathey Marsden
      5. derby-4812-2_diff.txt
        8 kB
        Lily Wei

        Issue Links

          Activity

          No work has yet been logged on this issue.

            People

            • Assignee:
              Kathey Marsden
              Reporter:
              Myrna van Lunteren
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development