[ 
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)

Reply via email to