Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
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()) {