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

File data store: creating "tmp" directory is not enforced

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • blob
    • None

    Description

      The AbstractSharedCachingDataStore creates the tmp directory as follows:

      LOG.trace("Temporary file created [{}]", tmp.mkdirs()); 
      

      This is bad for multiple reasons:

      • The call to mkdirs() might return false. It doesn't throw an exception if the directory is not created. This is the biggest problem.
      • This isn't logged because log level isn't usually "trace".
      • It's hard to read that part, because the mkdirs is "hidden" as a parameter in the LOG.trace call. It's better to do that in a separate line.

      Other places places in Oak might also be wrong. Here how this is done elsewhere:

      grep -R --include=*.java ".mkdirs()" . | grep -v "src/test"
      ./oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectory.java:                checkState(indexDir.mkdirs(), "Not able to create folder [%s]", indexDir);
      ./oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/DefaultDirectoryFactory.java:            file.mkdirs();
      ./oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java:        checkState(workDir.mkdirs(), "Cannot create directory %s", workDir);
      ./oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/DataStoreCacheUtils.java:        file.mkdirs();
      ./oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java:        LOG.trace("Temporary file created [{}]", tmp.mkdirs());
      ./oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java:            boolean created = fsPathDir.mkdirs();
      ./oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java:                parent.mkdirs();
      ./oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/DataStoreCacheUpgradeUtils.java:            newDownload.getParentFile().mkdirs();
      ./oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/DataStoreCacheUpgradeUtils.java:                newUpload.getParentFile().mkdirs();
      ./oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/UploadStagingCache.java:            uploadCacheSpace.mkdirs();
      ./oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/FileBlobStore.java:        baseDir.mkdirs();
      ./oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/FileBlobStore.java:                parent.mkdirs();
      ./oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/FileBlobStore.java:            parent.mkdirs();
      ./oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java:        directory.mkdirs();
      ./oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java:                cfg.getSplitPersistenceDirectory().mkdirs();
      ./oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/PersistentCache.java:            dr.mkdirs();
      ./oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/SegmentTarFactory.java:            directory.mkdirs();
      ./oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/SegmentFactory.java:            directory.mkdirs();
      ./oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java:            checkArgument(directory.mkdirs(), "Cannot create directory %s", directory.getAbsolutePath());
      ./oak-examples/webapp/src/main/java/org/apache/jackrabbit/j2ee/Installer.java:            home.mkdirs();
      ./oak-examples/webapp/src/main/java/org/apache/jackrabbit/j2ee/Installer.java:            dest.getParentFile().mkdirs();
      ./oak-run/src/main/java/org/apache/jackrabbit/oak/index/SegmentPropertyIndexEditorProvider.java:            indexStoreDir.mkdirs();
      ./oak-run/src/main/java/org/apache/jackrabbit/oak/exporter/NodeStateSerializer.java:            checkState(dir.mkdirs(), "Cannot create directory [%s]", dir.getAbsolutePath());
      ./oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java:                outDir.mkdirs();
      ./oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java:            if (!solrHomePathFile.mkdirs()) {
      ./oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java:            if (!new File(solrCorePathFile, "conf").mkdirs()) {
      

      Attachments

        Activity

          People

            amitj Amit Jain
            thomasm Thomas Mueller
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: