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

Mirza Aliev updated IGNITE-19466:
---------------------------------
    Epic Link: IGNITE-20612  (was: IGNITE-19743)

> Empty data nodes on table creation
> ----------------------------------
>
>                 Key: IGNITE-19466
>                 URL: https://issues.apache.org/jira/browse/IGNITE-19466
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Sergey Uttsel
>            Assignee: Sergey Uttsel
>            Priority: Major
>              Labels: ignite-3, tech-debt
>
> h3. *Motivation*
> After introducing data nodes from DistributionZoneManager on table creation 
> it became possible that a table is created with an empty data nodes value and 
> therefore with empty assignments. It causes an exceptions like 
> {code:java}
> Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 
> TraceId:3ae1368c-0475-48b4-bd88-4e00b6c0fccd Peers are not ready 
> [groupId=1_part_0]
>     at 
> org.apache.ignite.lang.IgniteExceptionUtils.wrap(IgniteExceptionUtils.java:198)
>     at 
> org.apache.ignite.internal.table.distributed.TableManager.getRootCause(TableManager.java:1745)
>     at 
> org.apache.ignite.internal.table.distributed.TableManager.lambda$changeTablesConfigurationOnTableCreate$63(TableManager.java:1633)
>     at 
> java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:986)
>     at 
> java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:970)
>     at 
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
>     at 
> java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2159)
>     at 
> org.apache.ignite.internal.configuration.ConfigurationChanger.lambda$configurationStorageListener$8(ConfigurationChanger.java:657)
>     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.completeExceptionally(CompletableFuture.java:2159)
>     at 
> org.apache.ignite.internal.table.distributed.TableManager.lambda$createTablePartitionsLocally$15(TableManager.java:910)
>     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.postFire(CompletableFuture.java:610)
>     at 
> java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
>     at 
> java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
>     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:830)
> Caused by: org.apache.ignite.lang.IgniteInternalException: IGN-CMN-65535 
> TraceId:3ae1368c-0475-48b4-bd88-4e00b6c0fccd Peers are not ready 
> [groupId=1_part_0]
>     at 
> org.apache.ignite.internal.raft.RaftGroupServiceImpl.randomNode(RaftGroupServiceImpl.java:686)
>     at 
> org.apache.ignite.internal.raft.RaftGroupServiceImpl.randomNode(RaftGroupServiceImpl.java:670)
>     at 
> org.apache.ignite.internal.raft.RaftGroupServiceImpl.refreshLeader(RaftGroupServiceImpl.java:224)
>     at 
> org.apache.ignite.internal.raft.RaftGroupServiceImpl.start(RaftGroupServiceImpl.java:180)
>     at 
> org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupService.start(TopologyAwareRaftGroupService.java:182)
>     at 
> org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory.startRaftGroupService(TopologyAwareRaftGroupServiceFactory.java:71)
>     at 
> org.apache.ignite.internal.raft.Loza.startRaftGroupService(Loza.java:321)
>     at 
> org.apache.ignite.internal.table.distributed.TableManager.lambda$createTablePartitionsLocally$11(TableManager.java:874)
>     at 
> org.apache.ignite.internal.util.IgniteUtils.inBusyLock(IgniteUtils.java:893)
>     at 
> org.apache.ignite.internal.table.distributed.TableManager.lambda$createTablePartitionsLocally$12(TableManager.java:870)
>     at 
> java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1146)
>     ... 4 more{code}
> because there are an empty peers on RaftGroupServiceImpl#start. The proper 
> solution is a table creation with empty peers but remains unusable until the 
> data nodes for the zone is updated and RaftGroupServiceImpl is started with 
> peers.
> h3. *Definition of Done*
> If the date nodes for the zone are empty, then create a table without a raft 
> group and other components.
> h3. *Implementation Notes*
> In case a table creation when the data nodes values of the zone is empty 
> createTablePartitionsLocally method receives an empty newPartAssignment. So 
> it is not possible to do startRaftGroupNode without peers. Need to skip start 
> a raft group and other components if the data nodes is empty.



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

Reply via email to