Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-6884

TarMK disk space check is not synchronized with FileStore opened state

    XMLWordPrintableJSON

Details

    Description

      It seems that the disk space check is not properly synchronized with FileStore as I revealed a race condition while using oak-upgrade during migration to segment-tar.

      The FileStore instance is closed while TarMK disk check tries to execute and it seems it is dependent on the state of segment (org.apache.jackrabbit.oak.segment.file.FileStore.checkDiskSpace(FileStore.java:541) that needs to be opened.

      30.10.2017 11:26:05.834 WARN   o.a.j.o.s.f.Scheduler: The scheduler FileStore background tasks takes too long to shut down
      30.10.2017 11:26:11.674 INFO   o.a.j.o.s.f.FileStore: TarMK closed: /data/cq/crx-quickstart/repository-segment-tar-20171030-112401/segmentstore
      30.10.2017 11:26:11.676 ERROR  o.a.j.o.s.f.SafeRunnable: Uncaught exception in TarMK disk space check [/data/cq/crx-quickstart/repository-segment-tar-20171030-112401/segmentstore]
      java.lang.IllegalStateException: already shut down
          at org.apache.jackrabbit.oak.segment.file.ShutDown.keepAlive(ShutDown.java:42)
          at org.apache.jackrabbit.oak.segment.file.FileStore.size(FileStore.java:302)
          at org.apache.jackrabbit.oak.segment.file.FileStore.checkDiskSpace(FileStore.java:541)
          at org.apache.jackrabbit.oak.segment.file.FileStore.access$300(FileStore.java:102)
          at org.apache.jackrabbit.oak.segment.file.FileStore$3.run(FileStore.java:237)
          at org.apache.jackrabbit.oak.segment.file.SafeRunnable.run(SafeRunnable.java:67)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at java.lang.Thread.run(Thread.java:745)
      

      Attachments

        Activity

          People

            mduerig Michael Dürig
            arkadius Arek Kita
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: