Derby
  1. Derby
  2. DERBY-5390

NPE in BasicDatabase.stop in replication slave mode (dd.clearSequenceCaches)

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 10.8.2.2, 10.9.1.0
    • Fix Version/s: 10.8.2.2, 10.9.1.0
    • Component/s: None
    • Labels:
      None

      Description

      To reproduce, set up a replication pair and then stop the master (I used "stopMaster=true").
      From derby.log on the slave:

      Replication slave role was stopped for database 'replicDB'.
      java.lang.NullPointerException
      at org.apache.derby.impl.db.BasicDatabase.stop(Unknown Source)
      at org.apache.derby.impl.db.SlaveDatabase.stop(SlaveDatabase.java:167)
      at org.apache.derby.impl.services.monitor.TopService.stop(TopService.java:443)
      at org.apache.derby.impl.services.monitor.TopService.shutdown(TopService.java:394)
      at org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(BaseMonitor.java:229)
      at org.apache.derby.impl.db.DatabaseContextImpl.cleanupOnError(DatabaseContextImpl.java:77)
      at org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(ContextManager.java:343)
      at org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(TransactionResourceImpl.java:437)
      at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:339)
      at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2290)
      at org.apache.derby.impl.jdbc.EmbedConnection.internalStopReplicationSlave(EmbedConnection.java:1034)
      at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:353)
      at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:73)
      at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(EmbedConnection40.java:51)
      at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Driver40.java:70)
      at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:248)
      at org.apache.derby.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:144)
      at org.apache.derby.impl.db.SlaveDatabase.handleShutdown(SlaveDatabase.java:428)
      at org.apache.derby.impl.db.SlaveDatabase.access$200(SlaveDatabase.java:72)
      at org.apache.derby.impl.db.SlaveDatabase$SlaveDatabaseBootThread.run(SlaveDatabase.java:328)
      at java.lang.Thread.run(Thread.java:722)

      The reason is that there is no data dictionary available when the database is in replication slave mode.
      Note that the exception is caught and simply printed to derby.log.

        Issue Links

          Activity

          Hide
          Kristian Waagan added a comment -

          The fix here is simple: check if the data dictionary is available.
          I'm wonder why Throwable is caught though - why not catch only StandardException?

          Show
          Kristian Waagan added a comment - The fix here is simple: check if the data dictionary is available. I'm wonder why Throwable is caught though - why not catch only StandardException?
          Hide
          Kristian Waagan added a comment -

          Attaching patch 1a, which adds a check for null and catches only StandardException instead of Throwable.

          Show
          Kristian Waagan added a comment - Attaching patch 1a, which adds a check for null and catches only StandardException instead of Throwable.
          Hide
          Kristian Waagan added a comment -

          Committed patch 1a to trunk with revision 1164358, and backported it to 10.8 with revision 1164359.

          Closing issue.

          Show
          Kristian Waagan added a comment - Committed patch 1a to trunk with revision 1164358, and backported it to 10.8 with revision 1164359. Closing issue.

            People

            • Assignee:
              Kristian Waagan
              Reporter:
              Kristian Waagan
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development