Ilya Lantukh created IGNITE-8839: ------------------------------------ Summary: Throw meaningful and user-friendly exception when Ignite Persistence files are unaccessible Key: IGNITE-8839 URL: https://issues.apache.org/jira/browse/IGNITE-8839 Project: Ignite Issue Type: Improvement Reporter: Ilya Lantukh
Currently not having read+write permissions for persistence directory can lead to exception like this: {noformat} 2018-06-19 16:27:51 ERROR GridDhtPartitionsExchangeFuture:495 - Failed to activate node components [nodeId=7ff3a67c-ed86-452a-9097-2626a0252a6e, client=false, topVer=AffinityTopologyVersion [topVer=2, minorTopVer=1]] class org.apache.ignite.IgniteCheckedException: Error while creating file page store [file=/home/apache-ignite-fabric-2.4.0-bin/work/db/node02-119b5ab9-11ac-456b-8488-6ba8f6d51d69/cache-c091e548-b45a-49b4-b8ec-2cb5e27c7af6_ConversationMessages/part-95.bin]: at org.apache.ignite.internal.processors.cache.persistence.file.FileVersionCheckingFactory.createPageStore(FileVersionCheckingFactory.java:98) at org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.initDir(FilePageStoreManager.java:450) at org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.initForCache(FilePageStoreManager.java:411) at org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.initializeForCache(FilePageStoreManager.java:217) at org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.readCheckpointAndRestoreMemory(GridCacheDatabaseSharedManager.java:714) at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onClusterStateChangeRequest(GridDhtPartitionsExchangeFuture.java:844) at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:596) at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2337) at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110) at java.lang.Thread.run(Thread.java:748) Caused by: java.nio.file.AccessDeniedException: /home/bizruntime/ubiquitos/apache-ignite-fabric-2.4.0-bin/work/db/node02-119b5ab9-11ac-456b-8488-6ba8f6d51d69/cache-c091e548-b45a-49b4-b8ec-2cb5e27c7af6_ConversationMessages/part-95.bin at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) at sun.nio.fs.UnixFileSystemProvider.newFileChannel(UnixFileSystemProvider.java:177) at java.nio.channels.FileChannel.open(FileChannel.java:287) at java.nio.channels.FileChannel.open(FileChannel.java:335) at org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIO.<init>(RandomAccessFileIO.java:43) at org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory.create(RandomAccessFileIOFactory.java:42) at org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory.create(RandomAccessFileIOFactory.java:37) at org.apache.ignite.internal.processors.cache.persistence.file.FileVersionCheckingFactory.createPageStore(FileVersionCheckingFactory.java:78) ... 9 more {noformat} Or like this: {noformat} IgniteCheckedException: Error while creating file page store [file=/home/apache-ignite-fabric-2.4.0-bin/work/db/node02-119b5ab9-11ac-456b-8488-6ba8f6d51d69/cache-c091e548-b45a-49b4-b8ec-2cb5e27c7af6_ConversationMessages/part-95.bin]:, done=true, state=SRV, evtLatch=0, remaining=[d62b8f0a-6ddc-4314-90f3-93ca24d44200], super=GridFutureAdapter [ignoreInterrupts=false, state=DONE, res=java.lang.NullPointerException, hash=812167532]] class org.apache.ignite.IgniteCheckedException: null at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7244) at org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:259) at org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:207) at org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:159) at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2347) at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException at org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.applyUpdate(GridCacheDatabaseSharedManager.java:2396) at org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.applyLastUpdates(GridCacheDatabaseSharedManager.java:2137) at org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.restoreState(GridCacheDatabaseSharedManager.java:1341) at org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.beforeExchange(GridCacheDatabaseSharedManager.java:1129) at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.distributedExchange(GridDhtPartitionsExchangeFuture.java:1066) at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:664) at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2337) ... 2 more {noformat} >From such messages and stacktraces the rootcause is not always obvious. We >should make exceptions more meaningful and user-friendly. -- This message was sent by Atlassian JIRA (v7.6.3#76005)