[
https://issues.apache.org/jira/browse/IGNITE-19466?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mirza Aliev updated IGNITE-19466:
---------------------------------
Labels: ignite-3 tech-debt (was: dzm-reviewed ignite-3 tech-debt)
> 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)