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