You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladislav Pyatkov (Jira)" <ji...@apache.org> on 2023/03/09 15:41:00 UTC

[jira] [Updated] (IGNITE-18990) Partial redesign of TableManager to solve the problems related to huge load of metastorage updates

     [ https://issues.apache.org/jira/browse/IGNITE-18990?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vladislav Pyatkov updated IGNITE-18990:
---------------------------------------
    Description: 
The exception does not connect with placement driver directly, but the feature increases probability of the problem.
The root cause of the issue is in SqlSchemaManagerImpl#schemasVv that is updated depending on table creation and the configuration revision update in the same time. To got rid of the issue, required waiting of table creation event (TableEvent.CREATE) before complete the versioned value object  (schemasVv).

{noformat}
WARNING: Error occurred while updating tables.
java.util.concurrent.CompletionException: java.lang.AssertionError: Token must be greater than actual [token=6734, actual=6734]
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
    at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
    at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1081)
    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
    at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
    at org.apache.ignite.internal.causality.VersionedValue.completeInternal(VersionedValue.java:335)
    at org.apache.ignite.internal.causality.VersionedValue.lambda$completeOnRevision$3(VersionedValue.java:493)
    at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
    at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
    at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
    at org.apache.ignite.internal.raft.RaftGroupServiceImpl.lambda$sendWithRetry$38(RaftGroupServiceImpl.java:525)
    at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
    at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
    at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
    at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
    at org.apache.ignite.network.DefaultMessagingService.onInvokeResponse(DefaultMessagingService.java:349)
    at org.apache.ignite.network.DefaultMessagingService.onMessage(DefaultMessagingService.java:314)
    at org.apache.ignite.network.DefaultMessagingService.lambda$onMessage$3(DefaultMessagingService.java:292)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.AssertionError: Token must be greater than actual [token=6734, actual=6734]
    at org.apache.ignite.internal.causality.VersionedValue.checkToken(VersionedValue.java:597)
    at org.apache.ignite.internal.causality.VersionedValue.update(VersionedValue.java:403)
    at org.apache.ignite.internal.sql.engine.schema.SqlSchemaManagerImpl.onTableCreated(SqlSchemaManagerImpl.java:210)
    at org.apache.ignite.internal.sql.engine.SqlQueryProcessor$TableCreatedListener.notify(SqlQueryProcessor.java:580)
    at org.apache.ignite.internal.sql.engine.SqlQueryProcessor$TableCreatedListener.notify(SqlQueryProcessor.java:572)
    at org.apache.ignite.internal.manager.Producer.fireEvent(Producer.java:108)
    at org.apache.ignite.internal.manager.Producer.fireEvent(Producer.java:129)
    at org.apache.ignite.internal.table.distributed.TableManager.lambda$createTableLocally$36(TableManager.java:1158)
    at org.apache.ignite.internal.util.IgniteUtils.inBusyLock(IgniteUtils.java:861)
    at org.apache.ignite.internal.table.distributed.TableManager.lambda$createTableLocally$37(TableManager.java:1158)
    at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
    ... 19 more
{noformat}

After the issue will be fixed, placement driver ready to include in the node start workflow.

> Partial redesign of TableManager to solve the problems related to huge load of metastorage updates
> --------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-18990
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18990
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Denis Chudov
>            Priority: Major
>              Labels: ignite-3
>
> The exception does not connect with placement driver directly, but the feature increases probability of the problem.
> The root cause of the issue is in SqlSchemaManagerImpl#schemasVv that is updated depending on table creation and the configuration revision update in the same time. To got rid of the issue, required waiting of table creation event (TableEvent.CREATE) before complete the versioned value object  (schemasVv).
> {noformat}
> WARNING: Error occurred while updating tables.
> java.util.concurrent.CompletionException: java.lang.AssertionError: Token must be greater than actual [token=6734, actual=6734]
>     at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
>     at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
>     at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1081)
>     at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
>     at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
>     at org.apache.ignite.internal.causality.VersionedValue.completeInternal(VersionedValue.java:335)
>     at org.apache.ignite.internal.causality.VersionedValue.lambda$completeOnRevision$3(VersionedValue.java:493)
>     at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
>     at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
>     at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
>     at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
>     at org.apache.ignite.internal.raft.RaftGroupServiceImpl.lambda$sendWithRetry$38(RaftGroupServiceImpl.java:525)
>     at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
>     at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
>     at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
>     at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
>     at org.apache.ignite.network.DefaultMessagingService.onInvokeResponse(DefaultMessagingService.java:349)
>     at org.apache.ignite.network.DefaultMessagingService.onMessage(DefaultMessagingService.java:314)
>     at org.apache.ignite.network.DefaultMessagingService.lambda$onMessage$3(DefaultMessagingService.java:292)
>     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>     at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.AssertionError: Token must be greater than actual [token=6734, actual=6734]
>     at org.apache.ignite.internal.causality.VersionedValue.checkToken(VersionedValue.java:597)
>     at org.apache.ignite.internal.causality.VersionedValue.update(VersionedValue.java:403)
>     at org.apache.ignite.internal.sql.engine.schema.SqlSchemaManagerImpl.onTableCreated(SqlSchemaManagerImpl.java:210)
>     at org.apache.ignite.internal.sql.engine.SqlQueryProcessor$TableCreatedListener.notify(SqlQueryProcessor.java:580)
>     at org.apache.ignite.internal.sql.engine.SqlQueryProcessor$TableCreatedListener.notify(SqlQueryProcessor.java:572)
>     at org.apache.ignite.internal.manager.Producer.fireEvent(Producer.java:108)
>     at org.apache.ignite.internal.manager.Producer.fireEvent(Producer.java:129)
>     at org.apache.ignite.internal.table.distributed.TableManager.lambda$createTableLocally$36(TableManager.java:1158)
>     at org.apache.ignite.internal.util.IgniteUtils.inBusyLock(IgniteUtils.java:861)
>     at org.apache.ignite.internal.table.distributed.TableManager.lambda$createTableLocally$37(TableManager.java:1158)
>     at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
>     ... 19 more
> {noformat}
> After the issue will be fixed, placement driver ready to include in the node start workflow.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)