Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-5185

store/rollForwardRecovery.sql stuck in RAFContainer4.recoverContainerAfterInterrupt() during shutdown

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.9.1.0
    • Fix Version/s: 10.8.1.2, 10.9.1.0
    • Component/s: Store
    • Labels:
      None
    • Environment:

      Description

      I have a derbyall that has been running for more than two days now. It seems to be stuck in the store/rollForwardRecovery.sql test while the engine is shutting down.

      Here's the stack trace for the daemon thread that's stuck:

      "derby.rawStoreDaemon" daemon prio=10 tid=0xf3e7dc00 nid=0x3505 waiting on condition [0xf4066000]
      java.lang.Thread.State: TIMED_WAITING (sleeping)
      at java.lang.Thread.sleep(Native Method)
      at org.apache.derby.impl.store.raw.data.RAFContainer4.recoverContainerAfterInterrupt(Unknown Source)
      at org.apache.derby.impl.store.raw.data.RAFContainer4.readPage(Unknown Source)
      at org.apache.derby.impl.store.raw.data.RAFContainer4.readPage(Unknown Source)
      at org.apache.derby.impl.store.raw.data.CachedPage.readPage(Unknown Source)
      at org.apache.derby.impl.store.raw.data.CachedPage.setIdentity(Unknown Source)
      at org.apache.derby.impl.services.cache.ConcurrentCache.find(Unknown Source)
      at org.apache.derby.impl.store.raw.data.FileContainer.getAllocPage(Unknown Source)
      at org.apache.derby.impl.store.raw.data.BaseContainer.getAllocPage(Unknown Source)
      at org.apache.derby.impl.store.raw.data.BaseContainerHandle.getAllocPage(Unknown Source)
      at org.apache.derby.impl.store.raw.data.FileContainer.deallocatePagenum(Unknown Source)

      • locked <0xc5adbce8> (a org.apache.derby.impl.store.raw.data.AllocationCache)
        at org.apache.derby.impl.store.raw.data.FileContainer.deallocatePage(Unknown Source)
        at org.apache.derby.impl.store.raw.data.BaseContainer.removePage(Unknown Source)
        at org.apache.derby.impl.store.raw.data.BaseContainerHandle.removePage(Unknown Source)
        at org.apache.derby.impl.store.access.heap.HeapController.removePage(Unknown Source)
        at org.apache.derby.impl.store.access.heap.HeapPostCommit.purgeCommittedDeletes(Unknown Source)
        at org.apache.derby.impl.store.access.heap.HeapPostCommit.performWork(Unknown Source)
        at org.apache.derby.impl.services.daemon.BasicDaemon.serviceClient(Unknown Source)
        at org.apache.derby.impl.services.daemon.BasicDaemon.work(Unknown Source)
        at org.apache.derby.impl.services.daemon.BasicDaemon.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:722)

      And here's the stack trace for the main thread, which is waiting for the daemon thread to stop:

      "main" prio=10 tid=0xf6c05c00 nid=0x34e5 in Object.wait() [0xf6dbe000]
      java.lang.Thread.State: WAITING (on object monitor)
      at java.lang.Object.wait(Native Method)

      • waiting on <0xc5ac5760> (a org.apache.derby.impl.services.daemon.BasicDaemon)
        at java.lang.Object.wait(Object.java:504)
        at org.apache.derby.impl.services.daemon.BasicDaemon.pause(Unknown Source)
      • locked <0xc5ac5760> (a org.apache.derby.impl.services.daemon.BasicDaemon)
        at org.apache.derby.impl.services.daemon.BasicDaemon.stop(Unknown Source)
        at org.apache.derby.impl.store.raw.RawStore.stop(Unknown Source)
        at org.apache.derby.impl.services.monitor.TopService.stop(Unknown Source)
        at org.apache.derby.impl.services.monitor.TopService.shutdown(Unknown Source)
        at org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(Unknown Source)
        at org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(Unknown Source)
        at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
        at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(DriverManager.java:620)
        at java.sql.DriverManager.getConnection(DriverManager.java:222)
        at org.apache.derby.impl.tools.ij.utilMain.cleanupGo(Unknown Source)
        at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
        at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
        at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
        at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
        at org.apache.derby.tools.ij.main(Unknown Source)

        Attachments

        1. stack.txt
          5 kB
          Knut Anders Hatlen
        2. derby-5185-1a.diff
          1 kB
          Dag H. Wanvik
        3. derby-5185-2a.diff
          3 kB
          Dag H. Wanvik
        4. derby-5185-2a.stat
          0.1 kB
          Dag H. Wanvik
        5. derby-5185-2b.diff
          3 kB
          Dag H. Wanvik
        6. derby-5185-3a.diff
          2 kB
          Dag H. Wanvik

          Issue Links

            Activity

              People

              • Assignee:
                dagw Dag H. Wanvik
                Reporter:
                knutanders Knut Anders Hatlen
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: