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)