[ https://issues.apache.org/jira/browse/IGNITE-8839?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Lantukh updated IGNITE-8839: --------------------------------- Summary: Throw meaningful and user-friendly exceptions when Ignite Persistence files are unaccessible (was: Throw meaningful and user-friendly exception when Ignite Persistence files are unaccessible) > Throw meaningful and user-friendly exceptions 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 > Priority: Major > > 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)