[
https://issues.apache.org/jira/browse/IGNITE-16751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17514506#comment-17514506
]
Vladislav Pyatkov commented on IGNITE-16751:
--------------------------------------------
LGTM
> ItColocationTest#colocationOneColumn sometimes fails with StorageException:
> Exception when closing a Meta Storage cursor
> ------------------------------------------------------------------------------------------------------------------------
>
> Key: IGNITE-16751
> URL: https://issues.apache.org/jira/browse/IGNITE-16751
> Project: Ignite
> Issue Type: Bug
> Reporter: Alexander Lapin
> Assignee: Alexander Lapin
> Priority: Major
> Labels: ignite-3
>
> {code:java}
> org.apache.ignite.internal.configuration.storage.StorageException: Exception
> when closing a Meta Storage cursor at
> org.apache.ignite.internal.configuration.storage.DistributedConfigurationStorage.readAllLatest(DistributedConfigurationStorage.java:144)
> at
> org.apache.ignite.internal.configuration.ConfigurationChanger.getLatest(ConfigurationChanger.java:384)
> at
> org.apache.ignite.internal.configuration.direct.DirectPropertyProxy.value(DirectPropertyProxy.java:65)
> at
> org.apache.ignite.internal.table.distributed.TableManager.directTableIds(TableManager.java:1110)
> at
> java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
> at
> java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692)
> at
> java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
> at
> java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
> at
> java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
> at
> java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
> at
> java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
> Caused by: class org.apache.ignite.lang.IgniteInternalException: class
> org.apache.ignite.lang.IgniteInternalException:
> java.util.concurrent.TimeoutException
> at
> org.apache.ignite.internal.metastorage.MetaStorageManager$CursorWrapper$InnerIterator.hasNext(MetaStorageManager.java:1047)
> at
> org.apache.ignite.internal.configuration.storage.DistributedConfigurationStorage.readAllLatest(DistributedConfigurationStorage.java:124)
> ... 10 more
> Caused by: java.util.concurrent.ExecutionException: class
> org.apache.ignite.lang.IgniteInternalException:
> java.util.concurrent.TimeoutException
> at
> java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
> at
> java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
> at
> org.apache.ignite.internal.metastorage.MetaStorageManager$CursorWrapper$InnerIterator.hasNext(MetaStorageManager.java:1045)
> ... 11 more {code}
> h4. Update 1
> Seems that the reason for such exceptions and unexpected behaviour is that
> Timeout expcetion could be both wrapped with
> ExecutionException/CompltetionException and thrown as is. So in addition to
> considering TimeoutException as recoverable with corresponding retrial we
> should also treat ExecutionException/CompltetionException with
> TimeoutException cause the same way.
>
> {code:java}
> private boolean recoverable(Throwable t) {
> return t instanceof TimeoutException || t.getCause() instanceof
> IOException;
> } {code}
> might be changes with
> {code:java}
> private boolean recoverable(Throwable t) {
> return t instanceof TimeoutException ||
> ((t instanceof ExecutionException || t instanceof
> CompletionException) && t.getCause()
> instanceof TimeoutException || t.getCause()
> instanceof IOException);
> } {code}
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)