[jira] [Resolved] (IGNITE-22167) RocksDB: cannot create a default zone just twice
[ https://issues.apache.org/jira/browse/IGNITE-22167?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin resolved IGNITE-22167. - Resolution: Invalid > RocksDB: cannot create a default zone just twice > > > Key: IGNITE-22167 > URL: https://issues.apache.org/jira/browse/IGNITE-22167 > Project: Ignite > Issue Type: Bug > Components: persistence >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Critical > Labels: 3.0.0, rocksdb > > Steps to reproduce: > # Start AI3 cluster of 1 node > # Run few simple SQL queries: > {code:sql} > create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; > create table ... with PRIMARY_ZONE='ROCKSDB'; > insert into table ... values(); -- probably, unneeded > create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; > -- absolutely the same query as the 1st one > {code} > Expected behavior: the 2nd "create zone" query must be executed successfully > (because a zone is already created). > Actual behavior: the 2nd "create zone" query simply {*}hangs{*}. > Found on commit 654a11a4a00919ce2b3ff4ca0e59e83377124dea (recent AI3 at the > time). -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (IGNITE-22167) RocksDB: cannot create a default zone just twice
[ https://issues.apache.org/jira/browse/IGNITE-22167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17843729#comment-17843729 ] Andrey Khitrin commented on IGNITE-22167: - Caused by a configuration error in `ignite3-tests.conf` (empty profile list): {code} storage { ... profiles=[] } {code} > RocksDB: cannot create a default zone just twice > > > Key: IGNITE-22167 > URL: https://issues.apache.org/jira/browse/IGNITE-22167 > Project: Ignite > Issue Type: Bug > Components: persistence >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Critical > Labels: 3.0.0, rocksdb > > Steps to reproduce: > # Start AI3 cluster of 1 node > # Run few simple SQL queries: > {code:sql} > create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; > create table ... with PRIMARY_ZONE='ROCKSDB'; > insert into table ... values(); -- probably, unneeded > create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; > -- absolutely the same query as the 1st one > {code} > Expected behavior: the 2nd "create zone" query must be executed successfully > (because a zone is already created). > Actual behavior: the 2nd "create zone" query simply {*}hangs{*}. > Found on commit 654a11a4a00919ce2b3ff4ca0e59e83377124dea (recent AI3 at the > time). -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Resolved] (IGNITE-22169) RocksDb: NPE on index creation
[ https://issues.apache.org/jira/browse/IGNITE-22169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin resolved IGNITE-22169. - Resolution: Invalid > RocksDb: NPE on index creation > -- > > Key: IGNITE-22169 > URL: https://issues.apache.org/jira/browse/IGNITE-22169 > Project: Ignite > Issue Type: Bug > Components: persistence >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Assignee: Kirill Tkalenko >Priority: Blocker > Labels: 3.0.0, ignite-3, rocksdb > > Steps to reproduce: > 1. Start a single 1-node cluster of AI3 > 2. Create a table in RocksDB storage: > {code:sql} > create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; > create table table_8214(id INTEGER not null, int_field_1 INTEGER not null, > str_field_1 VARCHAR(50) not null, primary key (id)) with > PRIMARY_ZONE='ROCKSDB'; > {code} > 3. Try to create an index on this table: > {code:sql} > create index temp on table_8214 using SORTED (int_field_1); > {code} > Expected result: an index is created successfully (the same actions work on > ai3persist). > Actual result: index not created, no response from server to client (query > hangs), NPE in AI3 log: > {code} > 2024-05-06 05:02:51:943 + > [WARNING][%IndexTests_cluster_0%tableManager-io-0][CatalogManagerImpl] Failed > to apply catalog update. > java.util.concurrent.CompletionException: java.lang.NullPointerException: > Cannot invoke "Object.hashCode()" because "pk" is null > at > java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332) > at > java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:674) > at > java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662) > at > java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168) > at > org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:693) > at > org.apache.ignite.internal.table.distributed.TableManager.lambda$startAsync$2(TableManager.java:614) > at > org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88) > at > org.apache.ignite.internal.catalog.CatalogManagerImpl.access$000(CatalogManagerImpl.java:91) > at > org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:562) > at > org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:529) > at > org.apache.ignite.internal.catalog.storage.UpdateLogImpl$UpdateListener.onUpdate(UpdateLogImpl.java:314) > at > org.apache.ignite.internal.metastorage.server.Watch.onUpdate(Watch.java:67) > at > org.apache.ignite.internal.metastorage.server.WatchProcessor.notifyWatches(WatchProcessor.java:233) > at > org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$notifyWatches$3(WatchProcessor.java:181) > at > java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) > at > java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) > at java.base/java.lang.Thread.run(Thread.java:833) > Caused by: java.lang.NullPointerException: Cannot invoke "Object.hashCode()" > because "pk" is null > at > java.base/java.util.ImmutableCollections$MapN.probe(ImmutableCollections.java:1321) > at > java.base/java.util.ImmutableCollections$MapN.get(ImmutableCollections.java:1235) > at > org.apache.ignite.internal.storage.DataStorageManager.engineByStorageProfile(DataStorageManager.java:91) > at > org.apache.ignite.internal.table.distributed.TableManager.createTableStorage(TableManager.java:1452) > at > org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1315) > at > org.apache.ignite.internal.table.distributed.TableManager.lambda$createTableLocally$50(TableManager.java:1283) > at > org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:890) > at > org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1267) > at > org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:692) > ... 14 more > 2024-05-06 05:02:51:945 + > [ERROR][%IndexTests_cluster_0%tableManager-io-0][FailureProcessor] Critical > system error detected. Will be handled accordingly to configured
[jira] [Commented] (IGNITE-22169) RocksDb: NPE on index creation
[ https://issues.apache.org/jira/browse/IGNITE-22169?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17843698#comment-17843698 ] Andrey Khitrin commented on IGNITE-22169: - Caused by a configuration error in `ignite3-tests.conf` (empty profile list): {code} storage { ... profiles=[] } {code} > RocksDb: NPE on index creation > -- > > Key: IGNITE-22169 > URL: https://issues.apache.org/jira/browse/IGNITE-22169 > Project: Ignite > Issue Type: Bug > Components: persistence >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Assignee: Kirill Tkalenko >Priority: Blocker > Labels: 3.0.0, ignite-3, rocksdb > > Steps to reproduce: > 1. Start a single 1-node cluster of AI3 > 2. Create a table in RocksDB storage: > {code:sql} > create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; > create table table_8214(id INTEGER not null, int_field_1 INTEGER not null, > str_field_1 VARCHAR(50) not null, primary key (id)) with > PRIMARY_ZONE='ROCKSDB'; > {code} > 3. Try to create an index on this table: > {code:sql} > create index temp on table_8214 using SORTED (int_field_1); > {code} > Expected result: an index is created successfully (the same actions work on > ai3persist). > Actual result: index not created, no response from server to client (query > hangs), NPE in AI3 log: > {code} > 2024-05-06 05:02:51:943 + > [WARNING][%IndexTests_cluster_0%tableManager-io-0][CatalogManagerImpl] Failed > to apply catalog update. > java.util.concurrent.CompletionException: java.lang.NullPointerException: > Cannot invoke "Object.hashCode()" because "pk" is null > at > java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332) > at > java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:674) > at > java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662) > at > java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168) > at > org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:693) > at > org.apache.ignite.internal.table.distributed.TableManager.lambda$startAsync$2(TableManager.java:614) > at > org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88) > at > org.apache.ignite.internal.catalog.CatalogManagerImpl.access$000(CatalogManagerImpl.java:91) > at > org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:562) > at > org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:529) > at > org.apache.ignite.internal.catalog.storage.UpdateLogImpl$UpdateListener.onUpdate(UpdateLogImpl.java:314) > at > org.apache.ignite.internal.metastorage.server.Watch.onUpdate(Watch.java:67) > at > org.apache.ignite.internal.metastorage.server.WatchProcessor.notifyWatches(WatchProcessor.java:233) > at > org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$notifyWatches$3(WatchProcessor.java:181) > at > java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) > at > java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) > at java.base/java.lang.Thread.run(Thread.java:833) > Caused by: java.lang.NullPointerException: Cannot invoke "Object.hashCode()" > because "pk" is null > at > java.base/java.util.ImmutableCollections$MapN.probe(ImmutableCollections.java:1321) > at > java.base/java.util.ImmutableCollections$MapN.get(ImmutableCollections.java:1235) > at > org.apache.ignite.internal.storage.DataStorageManager.engineByStorageProfile(DataStorageManager.java:91) > at > org.apache.ignite.internal.table.distributed.TableManager.createTableStorage(TableManager.java:1452) > at > org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1315) > at > org.apache.ignite.internal.table.distributed.TableManager.lambda$createTableLocally$50(TableManager.java:1283) > at > org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:890) > at > org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1267) > at > org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:692) > ... 14 more > 2024-05-06 05:02:51:945 + >
[jira] [Updated] (IGNITE-22169) RocksDb: NPE on index creation
[ https://issues.apache.org/jira/browse/IGNITE-22169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-22169: Description: Steps to reproduce: 1. Start a single 1-node cluster of AI3 2. Create a table in RocksDB storage: {code:sql} create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; create table table_8214(id INTEGER not null, int_field_1 INTEGER not null, str_field_1 VARCHAR(50) not null, primary key (id)) with PRIMARY_ZONE='ROCKSDB'; {code} 3. Try to create an index on this table: {code:sql} create index temp on table_8214 using SORTED (int_field_1); {code} Expected result: an index is created successfully (the same actions work on ai3persist). Actual result: index not created, no response from server to client (query hangs), NPE in AI3 log: {code} 2024-05-06 05:02:51:943 + [WARNING][%IndexTests_cluster_0%tableManager-io-0][CatalogManagerImpl] Failed to apply catalog update. java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "Object.hashCode()" because "pk" is null at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332) at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:674) at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662) at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168) at org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:693) at org.apache.ignite.internal.table.distributed.TableManager.lambda$startAsync$2(TableManager.java:614) at org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88) at org.apache.ignite.internal.catalog.CatalogManagerImpl.access$000(CatalogManagerImpl.java:91) at org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:562) at org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:529) at org.apache.ignite.internal.catalog.storage.UpdateLogImpl$UpdateListener.onUpdate(UpdateLogImpl.java:314) at org.apache.ignite.internal.metastorage.server.Watch.onUpdate(Watch.java:67) at org.apache.ignite.internal.metastorage.server.WatchProcessor.notifyWatches(WatchProcessor.java:233) at org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$notifyWatches$3(WatchProcessor.java:181) at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.lang.NullPointerException: Cannot invoke "Object.hashCode()" because "pk" is null at java.base/java.util.ImmutableCollections$MapN.probe(ImmutableCollections.java:1321) at java.base/java.util.ImmutableCollections$MapN.get(ImmutableCollections.java:1235) at org.apache.ignite.internal.storage.DataStorageManager.engineByStorageProfile(DataStorageManager.java:91) at org.apache.ignite.internal.table.distributed.TableManager.createTableStorage(TableManager.java:1452) at org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1315) at org.apache.ignite.internal.table.distributed.TableManager.lambda$createTableLocally$50(TableManager.java:1283) at org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:890) at org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1267) at org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:692) ... 14 more 2024-05-06 05:02:51:945 + [ERROR][%IndexTests_cluster_0%tableManager-io-0][FailureProcessor] Critical system error detected. Will be handled accordingly to configured handler [hnd=NoOpFailureHandler [], failureCtx=FailureContext [type=CRITICAL_ERROR, err=java.lang.NullPointerException: Cannot invoke "Object.hashCode()" because "pk" is null]] java.lang.NullPointerException: Cannot invoke "Object.hashCode()" because "pk" is null at java.base/java.util.ImmutableCollections$MapN.probe(ImmutableCollections.java:1321) at java.base/java.util.ImmutableCollections$MapN.get(ImmutableCollections.java:1235) at org.apache.ignite.internal.storage.DataStorageManager.engineByStorageProfile(DataStorageManager.java:91)
[jira] [Updated] (IGNITE-22169) RocbsRB: NPE on index creation
[ https://issues.apache.org/jira/browse/IGNITE-22169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-22169: Description: Steps to reproduce: 1. Start a single 1-node cluster of AI3 2. Create a table in RocksDB storage: {code:sql} create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; create table table_8214(id INTEGER not null, int_field_1 INTEGER not null, str_field_1 VARCHAR(50) not null, primary key (id)) with PRIMARY_ZONE='ROCKSDB'; {code} 3. Try to create an index on this table: {code:sql} create index temp on table_8214 using SORTED (int_field_1); {code} Expected result: an index is created successfully (the same actions work on ai3persist). Actual result: index not created, no response from server to client (query hangs), NPE in AI3 log: {code} 2024-05-06 12:11:17:567 +0500 [INFO][%DeleteFromWhereTests_cluster_0%metastorage-watch-executor-3][IndexManager] Creating local index: name=TABLE_8214_PK, id=9, tableId=8, token=23 2024-05-06 12:11:17:585 +0500 [INFO][%DeleteFromWhereTests_cluster_0%metastorage-watch-executor-3][TableManager] Assignments calculated from data nodes [table=TABLE_8214, tableId=8, assignments= [0=[],1=[],2=[],3=[],4=[],5=[],6=[],7=[],8=[],9=[],10=[],11=[],12=[],13=[],14=[],15=[],16=[],17=[],18=[],19=[],20=[],21=[],22=[],23=[],24=[]], revision=23] 2024-05-06 12:11:17:592 +0500 [WARNING][%DeleteFromWhereTests_cluster_0%tableManager-io-0][CatalogManagerImpl] Failed to apply catalog update. java.util.concurrent.CompletionException: java.lang.NullPointerException at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331) at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:670) at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658) at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2094) at org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:689) at org.apache.ignite.internal.table.distributed.TableManager.lambda$start$2(TableManager.java:613) at org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88) at org.apache.ignite.internal.catalog.CatalogManagerImpl.access$000(CatalogManagerImpl.java:83) at org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:534) at org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:501) at org.apache.ignite.internal.catalog.storage.UpdateLogImpl$UpdateListener.onUpdate(UpdateLogImpl.java:308) at org.apache.ignite.internal.metastorage.server.Watch.onUpdate(Watch.java:67) at org.apache.ignite.internal.metastorage.server.WatchProcessor.notifyWatches(WatchProcessor.java:233) at org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$notifyWatches$3(WatchProcessor.java:181) at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072) 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:829) Caused by: java.lang.NullPointerException at java.base/java.util.ImmutableCollections$MapN.probe(ImmutableCollections.java:956) at java.base/java.util.ImmutableCollections$MapN.get(ImmutableCollections.java:876) at org.apache.ignite.internal.storage.DataStorageManager.engineByStorageProfile(DataStorageManager.java:84) at org.apache.ignite.internal.table.distributed.TableManager.createTableStorage(TableManager.java:1450) at org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1313) at org.apache.ignite.internal.table.distributed.TableManager.lambda$createTableLocally$48(TableManager.java:1281) at org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:889) at org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1265) at org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:688) ... 14 more 2024-05-06 12:11:17:592 +0500 [INFO][%DeleteFromWhereTests_cluster_0%JRaft-FSMCaller-Disruptor-metastorage_stripe_0-0][TableManager] Assignments calculated from data nodes are successfully written to meta storage [tableId=8, assignments=
[jira] [Created] (IGNITE-22169) RocbsRB: NPE on index creation
Andrey Khitrin created IGNITE-22169: --- Summary: RocbsRB: NPE on index creation Key: IGNITE-22169 URL: https://issues.apache.org/jira/browse/IGNITE-22169 Project: Ignite Issue Type: Bug Components: persistence Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin Steps to reproduce: 1. Start a single 1-node cluster of AI3 2. Create a table in RocksDB storage: {code:sql} create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; create table table_8214(id INTEGER not null, int_field_1 INTEGER not null, str_field_1 VARCHAR(50) not null, primary key (id)) with PRIMARY_ZONE='ROCKSDB'; {code} 3. Try to create an index on this table: {code:sql} create index temp on table_8214 using SORTED (int_field_1); {code} Expected result: an index is created successfully (the same actions work on ai3persist). Actual result: index not created, no response from server to client (query "hangs"), NPE in AI3 log: {code} 2024-05-06 12:11:17:567 +0500 [INFO][%DeleteFromWhereTests_cluster_0%metastorage-watch-executor-3][IndexManager] Creating local index: name=TABLE_8214_PK, id=9, tableId=8, token=23 2024-05-06 12:11:17:585 +0500 [INFO][%DeleteFromWhereTests_cluster_0%metastorage-watch-executor-3][TableManager] Assignments calculated from data nodes [table=TABLE_8214, tableId=8, assignments= [0=[],1=[],2=[],3=[],4=[],5=[],6=[],7=[],8=[],9=[],10=[],11=[],12=[],13=[],14=[],15=[],16=[],17=[],18=[],19=[],20=[],21=[],22=[],23=[],24=[]], revision=23] 2024-05-06 12:11:17:592 +0500 [WARNING][%DeleteFromWhereTests_cluster_0%tableManager-io-0][CatalogManagerImpl] Failed to apply catalog update. java.util.concurrent.CompletionException: java.lang.NullPointerException at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331) at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:670) at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658) at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2094) at org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:689) at org.apache.ignite.internal.table.distributed.TableManager.lambda$start$2(TableManager.java:613) at org.apache.ignite.internal.event.AbstractEventProducer.fireEvent(AbstractEventProducer.java:88) at org.apache.ignite.internal.catalog.CatalogManagerImpl.access$000(CatalogManagerImpl.java:83) at org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:534) at org.apache.ignite.internal.catalog.CatalogManagerImpl$OnUpdateHandlerImpl.handle(CatalogManagerImpl.java:501) at org.apache.ignite.internal.catalog.storage.UpdateLogImpl$UpdateListener.onUpdate(UpdateLogImpl.java:308) at org.apache.ignite.internal.metastorage.server.Watch.onUpdate(Watch.java:67) at org.apache.ignite.internal.metastorage.server.WatchProcessor.notifyWatches(WatchProcessor.java:233) at org.apache.ignite.internal.metastorage.server.WatchProcessor.lambda$notifyWatches$3(WatchProcessor.java:181) at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072) 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:829) Caused by: java.lang.NullPointerException at java.base/java.util.ImmutableCollections$MapN.probe(ImmutableCollections.java:956) at java.base/java.util.ImmutableCollections$MapN.get(ImmutableCollections.java:876) at org.apache.ignite.internal.storage.DataStorageManager.engineByStorageProfile(DataStorageManager.java:84) at org.apache.ignite.internal.table.distributed.TableManager.createTableStorage(TableManager.java:1450) at org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1313) at org.apache.ignite.internal.table.distributed.TableManager.lambda$createTableLocally$48(TableManager.java:1281) at org.apache.ignite.internal.util.IgniteUtils.inBusyLockAsync(IgniteUtils.java:889) at org.apache.ignite.internal.table.distributed.TableManager.createTableLocally(TableManager.java:1265) at org.apache.ignite.internal.table.distributed.TableManager.onTableCreate(TableManager.java:688) ... 14 more 2024-05-06 12:11:17:592 +0500 [INFO][%DeleteFromWhereTests_cluster_0%JRaft-FSMCaller-Disruptor-metastorage_stripe_0-0][TableManager]
[jira] [Updated] (IGNITE-22167) RocksDB: cannot create a default zone just twice
[ https://issues.apache.org/jira/browse/IGNITE-22167?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-22167: Priority: Critical (was: Major) > RocksDB: cannot create a default zone just twice > > > Key: IGNITE-22167 > URL: https://issues.apache.org/jira/browse/IGNITE-22167 > Project: Ignite > Issue Type: Bug > Components: persistence >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Critical > Labels: 3.0.0, rocksdb > > Steps to reproduce: > # Start AI3 cluster of 1 node > # Run few simple SQL queries: > {code:sql} > create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; > create table ... with PRIMARY_ZONE='ROCKSDB'; > insert into table ... values(); -- probably, unneeded > create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; > -- absolutely the same query as the 1st one > {code} > Expected behavior: the 2nd "create zone" query must be executed successfully > (because a zone is already created). > Actual behavior: the 2nd "create zone" query simply {*}hangs{*}. > Found on commit 654a11a4a00919ce2b3ff4ca0e59e83377124dea (recent AI3 at the > time). -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-22167) RocksDB: cannot create a default zone just twice
Andrey Khitrin created IGNITE-22167: --- Summary: RocksDB: cannot create a default zone just twice Key: IGNITE-22167 URL: https://issues.apache.org/jira/browse/IGNITE-22167 Project: Ignite Issue Type: Bug Components: persistence Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin Steps to reproduce: # Start AI3 cluster of 1 node # Run few simple SQL queries: {code:sql} create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; create table ... with PRIMARY_ZONE='ROCKSDB'; insert into table ... values(); -- probably, unneeded create zone if not exists "ROCKSDB" with storage_profiles='default_rocksdb'; -- absolutely the same query as the 1st one {code} Expected behavior: the 2nd "create zone" query must be executed successfully (because a zone is already created). Actual behavior: the 2nd "create zone" query simply {*}hangs{*}. Found on commit 654a11a4a00919ce2b3ff4ca0e59e83377124dea (recent AI3 at the time). -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-22114) NullPointerException when restarting a node few times in a row
Andrey Khitrin created IGNITE-22114: --- Summary: NullPointerException when restarting a node few times in a row Key: IGNITE-22114 URL: https://issues.apache.org/jira/browse/IGNITE-22114 Project: Ignite Issue Type: Bug Components: general Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin Steps to reproduce: 1. Start a 3-node cluster (`node-1`, `node-2`, `node-3`) 2. Run some load on it (read and write) 3. Shutdown a single node, wait some time, start it again 4. After a little time (say, 30 seconds) shutdown the same node again, wait some time, start it again In my case, an issue was reproduced on commit `d593e6487aa36a806bab075d19c8b831ca096a28` (2024-04-24 IGNITE-2124) on the 2nd restart of `node-3`. Expected results: node starts without error. Actual results: NPE in `ignite3-startup.log`. {code} Error when starting the node: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3] java.util.concurrent.ExecutionException: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3] 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.app.IgniteRunner.main(IgniteRunner.java:74) Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3] at org.apache.ignite.internal.app.IgnitionImpl.handleStartException(IgnitionImpl.java:224) at org.apache.ignite.internal.app.IgnitionImpl.lambda$doStart$1(IgnitionImpl.java:205) at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930) at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907) 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$UniWhenComplete.tryFire(CompletableFuture.java:840) at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:479) 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:183) Caused by: java.util.concurrent.CompletionException: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3] 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.uniHandle(CompletableFuture.java:932) at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907) 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:829) Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:c7b27181-0977-4925-b0ba-fa07d8a3bebe Unable to start [node=node-3] at org.apache.ignite.internal.app.IgniteImpl.handleStartException(IgniteImpl.java:1185) at org.apache.ignite.internal.app.IgniteImpl.lambda$start$27(IgniteImpl.java:1129) at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930) ... 5 more Caused by: java.util.concurrent.CompletionException: java.lang.NullPointerException at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314) at
[jira] [Resolved] (IGNITE-17996) Strange behavior of SQL CASE expression
[ https://issues.apache.org/jira/browse/IGNITE-17996?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin resolved IGNITE-17996. - Resolution: Not A Bug > Strange behavior of SQL CASE expression > --- > > Key: IGNITE-17996 > URL: https://issues.apache.org/jira/browse/IGNITE-17996 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > I observe strange behavior in the next scenario: > > {code:java} > sql-cli> create table xx (f1 int primary key); > Updated 0 rows. > sql-cli> insert into xx values (1); > Updated 1 rows. > sql-cli> insert into xx values (2); > Updated 1 rows. > sql-cli> select f1, case when f1 < 2 then 'foo' else 'barbar' end as s, > length(case when f1 < 2 then 'foo' else 'barbar' end) as ls from xx; > ╔╤╤╗ > ║ F1 │ S │ LS ║ > ╠╪╪╣ > ║ 2 │ barbar │ 6 ║ > ╟┼┼╢ > ║ 1 │ foo │ 6 ║ > ╚╧╧╝ > {code} > I expect `CASE` to return 'foo' value, but de-facto it returns 'foo ' > ('foo' with 3 whitespaces at the end). Seems like this should be fixed. > -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Resolved] (IGNITE-17997) Whitespaces at the end are ignored during string comparison
[ https://issues.apache.org/jira/browse/IGNITE-17997?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin resolved IGNITE-17997. - Resolution: Not A Bug > Whitespaces at the end are ignored during string comparison > --- > > Key: IGNITE-17997 > URL: https://issues.apache.org/jira/browse/IGNITE-17997 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > In 3.0.0-Beta-1: > {code:java} > sql-cli> select 'a' = 'a' as t1, 'a' = 'b' as t2, 'a' = 'a ' as t3, 'a' = ' > a' as t4; > ╔══╤═══╤══╤═══╗ > ║ T1 │ T2 │ T3 │ T4 ║ > ╠══╪═══╪══╪═══╣ > ║ true │ false │ true │ false ║ > ╚══╧═══╧══╧═══╝ > {code} > Tests T1, T2, and T4 show correct behavior. But in test T2 we see that string > 'a' is considered being equal to string 'a ' (same string but with > arbitrary amount of whitespaces at the end). This is incorrect behavior. > This issue may have the same nature as IGNITE-17996, but it's just a > hypothesis. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (IGNITE-21662) Sql: Data may be unavailable after creation of index
[ https://issues.apache.org/jira/browse/IGNITE-21662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17827525#comment-17827525 ] Andrey Khitrin commented on IGNITE-21662: - Looks like it's working now. Thank you! > Sql: Data may be unavailable after creation of index > > > Key: IGNITE-21662 > URL: https://issues.apache.org/jira/browse/IGNITE-21662 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Assignee: Konstantin Orlov >Priority: Major > Labels: ignite-3, sql > > Steps to reproduce: > {code:sql} > create table index_test_table_2(id INTEGER not null, field_1 TINYINT not > null, field_2 SMALLINT not null, field_3 INTEGER not null, field_4 FLOAT not > null, field_5 VARCHAR(50) not null, primary key (id)); > create index index_test_index_2_1 on index_test_table_2 using TREE (field_2, > field_3, field_5); > insert into index_test_table_2(...) > -- try to select one of inserted values > select * from index_test_table_2 where WHERE field_2 = .. AND field_3 = .. > AND field_5 = '..'; > {code} > Expected result: a row is selected. > Actual result: no rows are selected. > The issue is flaky and sometimes is masked by IGNITE-19976. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Resolved] (IGNITE-19461) The composite index is used when single column index expected to be used
[ https://issues.apache.org/jira/browse/IGNITE-19461?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin resolved IGNITE-19461. - Release Note: Cannot reproduce on fresh AI3. Resolution: Cannot Reproduce > The composite index is used when single column index expected to be used > > > Key: IGNITE-19461 > URL: https://issues.apache.org/jira/browse/IGNITE-19461 > Project: Ignite > Issue Type: Bug > Components: jdbc, sql, thin client >Reporter: Igor >Priority: Minor > Labels: ignite-3 > > h1. Steps to reproduce: > 1. Create table. > {code:java} > CREATE TABLE index_test_table_5(id INT PRIMARY KEY, field_1 TINYINT, field_2 > SMALLINT, field_3 INT, field_4 FLOAT, field_5 VARCHAR){code} > 2. Create index: > {code:java} > CREATE INDEX index_test_index_5_1 ON index_test_table_5(field_2){code} > 3. Create composite index: > {code:java} > CREATE INDEX index_test_index_5_2 ON index_test_table_5(field_2, field_3, > field_5){code} > 4. Insert some rows. > 5. Explain plan for query with filter by column contained in both indexes: > {code:java} > EXPLAIN PLAN FOR SELECT * FROM index_test_table_5 WHERE field_2 = 50{code} > h1. Expected result: > The index for single column is used (index_test_index_5_1) > h1. Actual result: > Randonly can be used either single column index (index_test_index_5_1) or > composite index (index_test_index_5_2). -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-21662) Sql: Data may be unavailable after creation of index
Andrey Khitrin created IGNITE-21662: --- Summary: Sql: Data may be unavailable after creation of index Key: IGNITE-21662 URL: https://issues.apache.org/jira/browse/IGNITE-21662 Project: Ignite Issue Type: Bug Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin Steps to reproduce: {code:sql} create table index_test_table_2(id INTEGER not null, field_1 TINYINT not null, field_2 SMALLINT not null, field_3 INTEGER not null, field_4 FLOAT not null, field_5 VARCHAR(50) not null, primary key (id)); create index index_test_index_2_1 on index_test_table_2 using TREE (field_2, field_3, field_5); insert into index_test_table_2(...) -- try to select one of inserted values select * from index_test_table_2 where WHERE field_2 = .. AND field_3 = .. AND field_5 = '..'; {code} Expected result: a row is selected. Actual result: no rows are selected. The issue is flaky and sometimes is masked by IGNITE-19976. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19976) Sql: ClassCastException when trying to select from indexed smallint column
[ https://issues.apache.org/jira/browse/IGNITE-19976?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19976: Affects Version/s: 3.0.0-beta2 > Sql: ClassCastException when trying to select from indexed smallint column > -- > > Key: IGNITE-19976 > URL: https://issues.apache.org/jira/browse/IGNITE-19976 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1, 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, sql > Time Spent: 20m > Remaining Estimate: 0h > > Steps to reproduce: > {code:sql} > sql-cli> create table tt(id INTEGER not null, field_1 TINYINT, field_2 > SMALLINT, primary key (id)); > Updated 0 rows. > sql-cli> SELECT * FROM tt WHERE field_2 = 50; > ╔╤═╤═╗ > ║ ID │ FIELD_1 │ FIELD_2 ║ > ╠╧═╧═╣ > ║ (empty)║ > ╚╝ > -- select over field_2 works fine until we create an index on it! > sql-cli> CREATE INDEX tt_idx ON tt (field_2); > Updated 0 rows. > sql-cli> SELECT * FROM tt WHERE field_2 = 50; > SQL query execution error > Exception while executing query [query=SELECT * FROM tt WHERE field_2 = 50;]. > Error message:Query remote fragment execution failed: nodeName=defaultNode, > queryId=15a68600-41bc-46c5-b20d-7a96aad15477, fragmentId=4, > originalMessage=class java.lang.Integer cannot be cast to class > java.lang.Short (java.lang.Integer and java.lang.Short are in module > java.base of loader 'bootstrap') > {code} > This doesn't look good. A created index must not cause casting exception. > Reproduced on commit `fef7a24c2a029cac720d2fea3815c2a70a86b72f` (2023-07-12) -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-21619) "Failed to get the primary replica" after massive data insert and node restart
Andrey Khitrin created IGNITE-21619: --- Summary: "Failed to get the primary replica" after massive data insert and node restart Key: IGNITE-21619 URL: https://issues.apache.org/jira/browse/IGNITE-21619 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin Attachments: ignite-config.conf, ignite3db-0.log Steps to reproduce: 1. Start a 1-node cluster. 2 Create several tables (5, for example) in aipersist zone. 3. Fill these tables with some data (1000 rows each, for example). 4. Verify that data is accessible via SQL. 5. Restart a node. 6. Try to fetch the same data again. Expected result: we could fetch data. Actual result: data is inaccessible. Trace on the client side: {code} java.sql.SQLException: Failed to get the primary replica [tablePartitionId=6_part_1] at org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode.createJdbcSqlException(IgniteQueryErrorCode.java:57) at org.apache.ignite.internal.jdbc.JdbcStatement.execute0(JdbcStatement.java:154) at org.apache.ignite.internal.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:111) ... {code} Trace in node log (attached): {code} 2024-02-28 12:36:34:807 +0500 [INFO][%ClusterFailoverTest_cluster_0%sql-execution-pool-0][JdbcQueryEventHandlerImpl] Exception while executing query [query=select sum(k1) from failoverTest00] org.apache.ignite.sql.SqlException: IGN-CMN-65535 TraceId:8d366905-a4bb-4333-b0b3-c647a1cf943f Failed to get the primary replica [tablePartitionId=6_part_1] at org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:61) at org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.wrapIfNecessary(AsyncSqlCursorImpl.java:180) at org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.handleError(AsyncSqlCursorImpl.java:157) at org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.lambda$requestNextAsync$2(AsyncSqlCursorImpl.java:96) at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930) at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) at org.apache.ignite.internal.sql.engine.exec.ExecutionServiceImpl$DistributedQueryManager.lambda$execute$18(ExecutionServiceImpl.java:864) 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$Completion.run(CompletableFuture.java:478) at org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83) 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:829) Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:8d366905-a4bb-4333-b0b3-c647a1cf943f Failed to get the primary replica [tablePartitionId=6_part_1] at org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:117) at org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:51) ... 15 more Caused by: org.apache.ignite.internal.lang.IgniteInternalException: IGN-PLACEMENTDRIVER-1 TraceId:8d366905-a4bb-4333-b0b3-c647a1cf943f Failed to get the primary replica [tablePartitionId=6_part_1] at org.apache.ignite.internal.util.ExceptionUtils.lambda$withCause$1(ExceptionUtils.java:384) at org.apache.ignite.internal.util.ExceptionUtils.withCauseInternal(ExceptionUtils.java:446) at org.apache.ignite.internal.util.ExceptionUtils.withCause(ExceptionUtils.java:384) at org.apache.ignite.internal.sql.engine.SqlQueryProcessor.lambda$primaryReplicas$2(SqlQueryProcessor.java:402) at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930) at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) at
[jira] [Updated] (IGNITE-18166) SQL: LIKE predicate is not supported for BINARY data
[ https://issues.apache.org/jira/browse/IGNITE-18166?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-18166: Description: A 'T022' feature in SQL standard allows to use LIKE predicate for BINARY data. Unfortunately, it is not supported in AI3 beta1: {code:sql} create table tmp_table_binary (key_field INT PRIMARY KEY,field1 BINARY); INSERT INTO tmp_table_binary (key_field, field1) values(1, x'00ffaa'); INSERT INTO tmp_table_binary (key_field, field1) values(2, x'ffcc'); select * from tmp_table_binary where field1 like '%ff%'; -- expected to return both rows select * from tmp_table_binary where field1 like '_f%'; -- expected to return 'ffcc' select * from tmp_table_binary where field1 like '_fc_'; -- expected to return 'ffcc' {code} Instead of returning data, all queries show the following error: {code:java} Error: Exception while executing query [query=select * from tmp_table_binary where field1 like '%ff%']. Error message:From line 1, column 38 to line 1, column 55: Cannot apply 'LIKE' to arguments of type 'LIKE(, )'. Supported form(s): 'LIKE(, , )' (state=5,code=0) java.sql.SQLException: Exception while executing query [query=select * from tmp_table_binary where field1 like '%ff%']. Error message:From line 1, column 38 to line 1, column 55: Cannot apply 'LIKE' to arguments of type 'LIKE(, )'. Supported form(s): 'LIKE(, , )' at org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode.createJdbcSqlException(IgniteQueryErrorCode.java:57) at org.apache.ignite.internal.jdbc.JdbcStatement.execute0(JdbcStatement.java:148) at org.apache.ignite.internal.jdbc.JdbcStatement.execute(JdbcStatement.java:341) ... {code} was: A 'T022' feature in SQL standard allows to use LIKE predicate for BINARY data. Unfortunately, it is not supported in AI3 beta1: {code:sql} create table tmp_table_binary (key_field INT PRIMARY KEY,field1 BINARY); INSERT INTO tmp_table_binary (key_field, field1) values(1, '00ffaa'); INSERT INTO tmp_table_binary (key_field, field1) values(2, 'ffcc'); select * from tmp_table_binary where field1 like '%ff%'; -- expected to return both rows select * from tmp_table_binary where field1 like '_f%'; -- expected to return 'ffcc' select * from tmp_table_binary where field1 like '_fc_'; -- expected to return 'ffcc' {code} Instead of returning data, all queries show the following error: {code:java} Error: Exception while executing query [query=select * from tmp_table_binary where field1 like '%ff%']. Error message:From line 1, column 38 to line 1, column 55: Cannot apply 'LIKE' to arguments of type 'LIKE(, )'. Supported form(s): 'LIKE(, , )' (state=5,code=0) java.sql.SQLException: Exception while executing query [query=select * from tmp_table_binary where field1 like '%ff%']. Error message:From line 1, column 38 to line 1, column 55: Cannot apply 'LIKE' to arguments of type 'LIKE(, )'. Supported form(s): 'LIKE(, , )' at org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode.createJdbcSqlException(IgniteQueryErrorCode.java:57) at org.apache.ignite.internal.jdbc.JdbcStatement.execute0(JdbcStatement.java:148) at org.apache.ignite.internal.jdbc.JdbcStatement.execute(JdbcStatement.java:341) ... {code} > SQL: LIKE predicate is not supported for BINARY data > > > Key: IGNITE-18166 > URL: https://issues.apache.org/jira/browse/IGNITE-18166 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: calcite, calcite2-required, calcite3-required, ignite-3 > > A 'T022' feature in SQL standard allows to use LIKE predicate for BINARY > data. Unfortunately, it is not supported in AI3 beta1: > {code:sql} > create table tmp_table_binary (key_field INT PRIMARY KEY,field1 BINARY); > INSERT INTO tmp_table_binary (key_field, field1) values(1, x'00ffaa'); > INSERT INTO tmp_table_binary (key_field, field1) values(2, x'ffcc'); > select * from tmp_table_binary where field1 like '%ff%'; -- > expected to return both rows > select * from tmp_table_binary where field1 like '_f%'; -- > expected to return 'ffcc' > select * from tmp_table_binary where field1 like '_fc_'; -- > expected to return 'ffcc' > {code} > Instead of returning data, all queries show the following error: > {code:java} > Error: Exception while executing query [query=select * from tmp_table_binary > where field1 like '%ff%']. Error message:From line 1, column 38 to line 1, > column 55: Cannot apply 'LIKE' to arguments of type 'LIKE(, > )'. Supported form(s): 'LIKE(, , )' >
[jira] [Resolved] (IGNITE-18175) SQL: value out of type bounds is converted into 0 during implicit casting
[ https://issues.apache.org/jira/browse/IGNITE-18175?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin resolved IGNITE-18175. - Resolution: Fixed > SQL: value out of type bounds is converted into 0 during implicit casting > - > > Key: IGNITE-18175 > URL: https://issues.apache.org/jira/browse/IGNITE-18175 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: calcite2-required, calcite3-required, ignite-3 > > A simple scenario: > {code:sql} > create table test_e011_INTEGER_from (key_field INT PRIMARY KEY, field1 > INTEGER); > insert into test_e011_INTEGER_from (key_field, field1) values (1, > -2147483648); > create table test_e011_SMALLINT (key_field INT PRIMARY KEY, field1_SMALLINT > SMALLINT); > insert into test_e011_SMALLINT (key_field, field1_SMALLINT) values (1, > (select field1 from test_e011_INTEGER_from where key_field=1)); > select * from test_e011_SMALLINT; > {code} > I expect it either to return '1, null' (like in postrgres or sqlite3) or to > raise an error on insert (like in GG8) as value of -2147483648 is out of > bounds for SMALLINT data type. > Instead, '1, 0' is stored within test_e011_SMALLINT table and returned from > select. In other words, -2147483648 was converted into 0. Such behavior seems > as incorrect. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (IGNITE-18175) SQL: value out of type bounds is converted into 0 during implicit casting
[ https://issues.apache.org/jira/browse/IGNITE-18175?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17814323#comment-17814323 ] Andrey Khitrin commented on IGNITE-18175: - In the recent AI3: {code:sql} sql-cli> insert into test_e011_SMALLINT (key_field, field1_SMALLINT) values (1, (select field1 from test_e011_INTEGER_from where key_field=1)); SQL query execution error SMALLINT out of range {code} Consider it as fixed. > SQL: value out of type bounds is converted into 0 during implicit casting > - > > Key: IGNITE-18175 > URL: https://issues.apache.org/jira/browse/IGNITE-18175 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: calcite2-required, calcite3-required, ignite-3 > > A simple scenario: > {code:sql} > create table test_e011_INTEGER_from (key_field INT PRIMARY KEY, field1 > INTEGER); > insert into test_e011_INTEGER_from (key_field, field1) values (1, > -2147483648); > create table test_e011_SMALLINT (key_field INT PRIMARY KEY, field1_SMALLINT > SMALLINT); > insert into test_e011_SMALLINT (key_field, field1_SMALLINT) values (1, > (select field1 from test_e011_INTEGER_from where key_field=1)); > select * from test_e011_SMALLINT; > {code} > I expect it either to return '1, null' (like in postrgres or sqlite3) or to > raise an error on insert (like in GG8) as value of -2147483648 is out of > bounds for SMALLINT data type. > Instead, '1, 0' is stored within test_e011_SMALLINT table and returned from > select. In other words, -2147483648 was converted into 0. Such behavior seems > as incorrect. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19608) Startup errors are ignored in ignite3db script
[ https://issues.apache.org/jira/browse/IGNITE-19608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19608: Labels: cli ignite-3 (was: ignite-3) > Startup errors are ignored in ignite3db script > -- > > Key: IGNITE-19608 > URL: https://issues.apache.org/jira/browse/IGNITE-19608 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-beta1, 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: cli, ignite-3 > > Ignite3 node is started by `bin/ignite3db` shell script. Unfortunately, this > script follows some shell scripting bad practices that makes troubleshooting > harder when something goes wrong. > Particullary, there are following issues: > 1. No guarding bash options (like `nounset`, `errexit`, or `pipefile`) is set. > 2. When starting Java application, its stderr and stdout are redirected into > `/dev/null`. > {code:bash} > CMD="${JAVA_CMD_WITH_ARGS} ${APPLICATION_ARGS}" > $CMD >>/dev/null 2>&1 ${IGNITE_HOME}/pid > {code} > Just for comparison: [control.sh in > AI2|https://github.com/apache/ignite/blob/master/bin/control.sh] do not > suffer from such behavior. This should be fixed in AI3 too. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19608) Startup errors are ignored in ignite3db script
[ https://issues.apache.org/jira/browse/IGNITE-19608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19608: Affects Version/s: 3.0.0-beta2 > Startup errors are ignored in ignite3db script > -- > > Key: IGNITE-19608 > URL: https://issues.apache.org/jira/browse/IGNITE-19608 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-beta1, 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > Ignite3 node is started by `bin/ignite3db` shell script. Unfortunately, this > script follows some shell scripting bad practices that makes troubleshooting > harder when something goes wrong. > Particullary, there are following issues: > 1. No guarding bash options (like `nounset`, `errexit`, or `pipefile`) is set. > 2. When starting Java application, its stderr and stdout are redirected into > `/dev/null`. > {code:bash} > CMD="${JAVA_CMD_WITH_ARGS} ${APPLICATION_ARGS}" > $CMD >>/dev/null 2>&1 ${IGNITE_HOME}/pid > {code} > Just for comparison: [control.sh in > AI2|https://github.com/apache/ignite/blob/master/bin/control.sh] do not > suffer from such behavior. This should be fixed in AI3 too. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (IGNITE-21143) SQL: Backslash cannot be escaped in LIKE ESCAPE operator
[ https://issues.apache.org/jira/browse/IGNITE-21143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17801098#comment-17801098 ] Andrey Khitrin commented on IGNITE-21143: - Good, thank you! > SQL: Backslash cannot be escaped in LIKE ESCAPE operator > > > Key: IGNITE-21143 > URL: https://issues.apache.org/jira/browse/IGNITE-21143 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Assignee: Evgeny Stanilovsky >Priority: Major > Labels: ignite-3, sql > > When using custom escape symbol in LIKE operator, we cannot escape backslash. > A error is raised here: > {code:sql} > sql-cli> select 'Dev_ops' like 'Dev#_ops' escape '#'; -- works as > expected > ╔═╗ > ║ EXPR$0 ║ > ╠═╣ > ║ true║ > ╚═╝ > sql-cli> select 'Dev\ops' like 'Dev#\ops' escape '#'; -- doesn't work > SQL query execution error > Invalid escape sequence 'Dev#\ops', 3 > {code} > In AI2 or some other DBMS, the latter query works without error: > {code} > select 'Dev\ops' like 'Dev#\ops' escape '#' -> true > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-21143) SQL: Backslash cannot be escaped in LIKE ESCAPE operator
Andrey Khitrin created IGNITE-21143: --- Summary: SQL: Backslash cannot be escaped in LIKE ESCAPE operator Key: IGNITE-21143 URL: https://issues.apache.org/jira/browse/IGNITE-21143 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin When using custom escape symbol in LIKE operator, we cannot escape backslash. A error is raised here: {code:sql} sql-cli> select 'Dev_ops' like 'Dev#_ops' escape '#'; -- works as expected ╔═╗ ║ EXPR$0 ║ ╠═╣ ║ true║ ╚═╝ sql-cli> select 'Dev\ops' like 'Dev#\ops' escape '#'; -- doesn't work SQL query execution error Invalid escape sequence 'Dev#\ops', 3 {code} In AI2 or some other DBMS, the latter query works without error: {code} select 'Dev\ops' like 'Dev#\ops' escape '#' -> true {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (IGNITE-20834) SQL query may hang forerver after node restart
[ https://issues.apache.org/jira/browse/IGNITE-20834?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17799834#comment-17799834 ] Andrey Khitrin commented on IGNITE-20834: - Fixed > SQL query may hang forerver after node restart > -- > > Key: IGNITE-20834 > URL: https://issues.apache.org/jira/browse/IGNITE-20834 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, sql > > How to reproduce: > 1. Start a 1-node cluster > 2. Create several simple tables (usually 5-10 is enough to reproduce): > {code:sql} > create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > ... > {code} > 3. Fill every table with 1000 rows. > 4. Ensure that every table contains 1000 rows: > {code:sql} > SELECT COUNT(*) FROM failoverTest00; > ... > {code} > 5. Restart node (kill a Java process and start node again). > 6. Check all tables again. > Expected behavior: after restart, all tables still contains the same data as > before. > Actual behavior: cannot perform SQL query after restart. It hangs for a long > time. Ignite log is overwhelmed with "Primary replica expired" messages. > This bug was first observed soon after fixes in > https://issues.apache.org/jira/browse/IGNITE-20116. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Resolved] (IGNITE-20834) SQL query may hang forerver after node restart
[ https://issues.apache.org/jira/browse/IGNITE-20834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin resolved IGNITE-20834. - Resolution: Fixed > SQL query may hang forerver after node restart > -- > > Key: IGNITE-20834 > URL: https://issues.apache.org/jira/browse/IGNITE-20834 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, sql > > How to reproduce: > 1. Start a 1-node cluster > 2. Create several simple tables (usually 5-10 is enough to reproduce): > {code:sql} > create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > ... > {code} > 3. Fill every table with 1000 rows. > 4. Ensure that every table contains 1000 rows: > {code:sql} > SELECT COUNT(*) FROM failoverTest00; > ... > {code} > 5. Restart node (kill a Java process and start node again). > 6. Check all tables again. > Expected behavior: after restart, all tables still contains the same data as > before. > Actual behavior: cannot perform SQL query after restart. It hangs for a long > time. Ignite log is overwhelmed with "Primary replica expired" messages. > This bug was first observed soon after fixes in > https://issues.apache.org/jira/browse/IGNITE-20116. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Closed] (IGNITE-20834) SQL query may hang forerver after node restart
[ https://issues.apache.org/jira/browse/IGNITE-20834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin closed IGNITE-20834. --- > SQL query may hang forerver after node restart > -- > > Key: IGNITE-20834 > URL: https://issues.apache.org/jira/browse/IGNITE-20834 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, sql > > How to reproduce: > 1. Start a 1-node cluster > 2. Create several simple tables (usually 5-10 is enough to reproduce): > {code:sql} > create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > ... > {code} > 3. Fill every table with 1000 rows. > 4. Ensure that every table contains 1000 rows: > {code:sql} > SELECT COUNT(*) FROM failoverTest00; > ... > {code} > 5. Restart node (kill a Java process and start node again). > 6. Check all tables again. > Expected behavior: after restart, all tables still contains the same data as > before. > Actual behavior: cannot perform SQL query after restart. It hangs for a long > time. Ignite log is overwhelmed with "Primary replica expired" messages. > This bug was first observed soon after fixes in > https://issues.apache.org/jira/browse/IGNITE-20116. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-21136) SQL: implement functions for date/time formatting
Andrey Khitrin created IGNITE-21136: --- Summary: SQL: implement functions for date/time formatting Key: IGNITE-21136 URL: https://issues.apache.org/jira/browse/IGNITE-21136 Project: Ignite Issue Type: Improvement Components: sql Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin SQL functions for date/time formatting are useful in many cases. In AI2, we have an universal FORMATDATETIME function for such purposes: {code:sql} SELECT FORMATDATETIME(CREATION_DATE, '-MM') AS CREATION_MONTH FROM ... {code} Please imlpement simliar functions in AI3. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-21134) Sql. UPPER, LOWER and SUBSTRING functions must support NULL values
[ https://issues.apache.org/jira/browse/IGNITE-21134?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-21134: Summary: Sql. UPPER, LOWER and SUBSTRING functions must support NULL values (was: Sql. UPPER and LOWER functions must support NULL values) > Sql. UPPER, LOWER and SUBSTRING functions must support NULL values > -- > > Key: IGNITE-21134 > URL: https://issues.apache.org/jira/browse/IGNITE-21134 > Project: Ignite > Issue Type: Bug > Components: clients, sql >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > As described in ANSI99 specification, functions UPPER and LOWER must return > NULL values for NULL argument: > > ??5) If is specified, then:?? > ?? .. b) if S is the null value, then the result of the is the null > value.?? > In the recent AI3 (commit c2ac5850973ae3bfd44b06fc6e3b5880f9f292f1) an error > is shown instead: > {code:sql} > sql-cli> SELECT UPPER(NULL); > Unknown error > Unsupported Column type NULL > sql-cli> SELECT LOWER(NULL); > Unknown error > Unsupported Column type NULL > {code} > {*}NOTE{*}: Most probably, it may be caused by client module, not sql module > because a text of error is located in client-common module: > {code:java} > $ grep -r 'Unsupported Column type' modules/*/src/main > modules/client-common/src/main/java/org/apache/ignite/internal/jdbc/JdbcConverterUtils.java: > throw new IllegalArgumentException("Unsupported Column type " > + columnType); > {code} > And when I add the following assertion to some test in ItFunctionsTest, it > passes: > {code:java} > assertQuery("SELECT LOWER(NULL)").returns(null).check(); > {code} > Previous AI3 versions allowed using NULL values in UPPER and LOWER functions, > hence it's a degradation. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-21134) Sql. UPPER, LOWER and SUBSTRING functions must support NULL values
[ https://issues.apache.org/jira/browse/IGNITE-21134?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-21134: Description: As described in ANSI99 specification, functions UPPER and LOWER must return NULL values for NULL argument: ??5) If is specified, then:?? ?? .. b) if S is the null value, then the result of the is the null value.?? In the recent AI3 (commit c2ac5850973ae3bfd44b06fc6e3b5880f9f292f1) an error is shown instead: {code:sql} sql-cli> SELECT UPPER(NULL); Unknown error Unsupported Column type NULL sql-cli> SELECT LOWER(NULL); Unknown error Unsupported Column type NULL sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); Unknown error Unsupported Column type NULL{code} {*}NOTE{*}: Most probably, it may be caused by client module, not sql module because a text of error is located in client-common module: {code:java} $ grep -r 'Unsupported Column type' modules/*/src/main modules/client-common/src/main/java/org/apache/ignite/internal/jdbc/JdbcConverterUtils.java: throw new IllegalArgumentException("Unsupported Column type " + columnType); {code} And when I add the following assertion to some test in ItFunctionsTest, it passes: {code:java} assertQuery("SELECT LOWER(NULL)").returns(null).check(); {code} Previous AI3 versions allowed using NULL values in UPPER and LOWER functions, hence it's a degradation. was: As described in ANSI99 specification, functions UPPER and LOWER must return NULL values for NULL argument: ??5) If is specified, then:?? ?? .. b) if S is the null value, then the result of the is the null value.?? In the recent AI3 (commit c2ac5850973ae3bfd44b06fc6e3b5880f9f292f1) an error is shown instead: {code:sql} sql-cli> SELECT UPPER(NULL); Unknown error Unsupported Column type NULL sql-cli> SELECT LOWER(NULL); Unknown error Unsupported Column type NULL {code} {*}NOTE{*}: Most probably, it may be caused by client module, not sql module because a text of error is located in client-common module: {code:java} $ grep -r 'Unsupported Column type' modules/*/src/main modules/client-common/src/main/java/org/apache/ignite/internal/jdbc/JdbcConverterUtils.java: throw new IllegalArgumentException("Unsupported Column type " + columnType); {code} And when I add the following assertion to some test in ItFunctionsTest, it passes: {code:java} assertQuery("SELECT LOWER(NULL)").returns(null).check(); {code} Previous AI3 versions allowed using NULL values in UPPER and LOWER functions, hence it's a degradation. > Sql. UPPER, LOWER and SUBSTRING functions must support NULL values > -- > > Key: IGNITE-21134 > URL: https://issues.apache.org/jira/browse/IGNITE-21134 > Project: Ignite > Issue Type: Bug > Components: clients, sql >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > As described in ANSI99 specification, functions UPPER and LOWER must return > NULL values for NULL argument: > > ??5) If is specified, then:?? > ?? .. b) if S is the null value, then the result of the is the null > value.?? > In the recent AI3 (commit c2ac5850973ae3bfd44b06fc6e3b5880f9f292f1) an error > is shown instead: > {code:sql} > sql-cli> SELECT UPPER(NULL); > Unknown error > Unsupported Column type NULL > sql-cli> SELECT LOWER(NULL); > Unknown error > Unsupported Column type NULL > sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); > Unknown error > Unsupported Column type NULL{code} > {*}NOTE{*}: Most probably, it may be caused by client module, not sql module > because a text of error is located in client-common module: > {code:java} > $ grep -r 'Unsupported Column type' modules/*/src/main > modules/client-common/src/main/java/org/apache/ignite/internal/jdbc/JdbcConverterUtils.java: > throw new IllegalArgumentException("Unsupported Column type " > + columnType); > {code} > And when I add the following assertion to some test in ItFunctionsTest, it > passes: > {code:java} > assertQuery("SELECT LOWER(NULL)").returns(null).check(); > {code} > Previous AI3 versions allowed using NULL values in UPPER and LOWER functions, > hence it's a degradation. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-21134) Sql. UPPER and LOWER functions must support NULL values
Andrey Khitrin created IGNITE-21134: --- Summary: Sql. UPPER and LOWER functions must support NULL values Key: IGNITE-21134 URL: https://issues.apache.org/jira/browse/IGNITE-21134 Project: Ignite Issue Type: Bug Components: clients, sql Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin As described in ANSI99 specification, functions UPPER and LOWER must return NULL values for NULL argument: ??5) If is specified, then:?? ?? .. b) if S is the null value, then the result of the is the null value.?? In the recent AI3 (commit c2ac5850973ae3bfd44b06fc6e3b5880f9f292f1) an error is shown instead: {code:sql} sql-cli> SELECT UPPER(NULL); Unknown error Unsupported Column type NULL sql-cli> SELECT LOWER(NULL); Unknown error Unsupported Column type NULL {code} {*}NOTE{*}: Most probably, it may be caused by client module, not sql module because a text of error is located in client-common module: {code:java} $ grep -r 'Unsupported Column type' modules/*/src/main modules/client-common/src/main/java/org/apache/ignite/internal/jdbc/JdbcConverterUtils.java: throw new IllegalArgumentException("Unsupported Column type " + columnType); {code} And when I add the following assertion to some test in ItFunctionsTest, it passes: {code:java} assertQuery("SELECT LOWER(NULL)").returns(null).check(); {code} Previous AI3 versions allowed using NULL values in UPPER and LOWER functions, hence it's a degradation. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-21090) "IllegalReferenceCountException: refCnt: 0" in SQL query
[ https://issues.apache.org/jira/browse/IGNITE-21090?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-21090: Description: We have a simple automated test that creates 1000 tables of the same structure and insert few rows into each one. Recently, it started to fail after creating several tens of tables. An exception is always the same: {code:java} 12:05:40.687 [junit-timeout-thread-51] INFO o.g.q.s.g.TableGeneratorHelper - Update: create table test_table_49(id INTEGER not null, column_1 VARCHAR(50) not null, column_2 VARCHAR(50) not null, column_3 VARCHAR(50) not null, column_4 VARCHAR(50) not null, primary key (id)) Dec 15, 2023 12:05:42 PM org.apache.ignite.internal.logger.IgniteLogger logInternal INFO: Partition assignment change notification received [remoteAddress=localhost:10800] 12:05:42.699 [junit-timeout-thread-51] INFO o.g.q.s.g.TableGeneratorHelper - Creation of table: test_table_49 took 2012 ms 12:05:42.700 [junit-timeout-thread-1] INFO o.g.a.tests.TablesAmountCapacityTest - Creation of 50 tables took 101686 ms Dec 15, 2023 12:05:42 PM org.apache.ignite.internal.logger.IgniteLogger logInternal INFO: Partition assignment change notification received [remoteAddress=localhost:10800] 12:05:45.539 [junit-timeout-thread-1] INFO o.g.a.tests.TablesAmountCapacityTest - Table test_table_0 contains 1 rows 12:05:45.591 [junit-timeout-thread-1] INFO o.g.a.tests.TablesAmountCapacityTest - Table test_table_1 contains 1 rows Dec 15, 2023 12:05:45 PM org.apache.ignite.internal.logger.IgniteLogger error SEVERE: Failed to deserialize server response [remoteAddress=localhost:10800]: refCnt: 0 io.netty.util.IllegalReferenceCountException: refCnt: 0 at io.netty.buffer.AbstractByteBuf.ensureAccessible(AbstractByteBuf.java:1454) at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1440) at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:730) at org.apache.ignite.internal.client.proto.ClientMessageUnpacker.unpackBoolean(ClientMessageUnpacker.java:209) at org.apache.ignite.internal.jdbc.proto.event.Response.readBinary(Response.java:81) at org.apache.ignite.internal.jdbc.JdbcClientQueryCursorHandler.lambda$closeAsync$3(JdbcClientQueryCursorHandler.java:65) at org.apache.ignite.internal.client.TcpClientChannel.lambda$receiveAsync$5(TcpClientChannel.java:368) at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:680) at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658) at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2094) at org.apache.ignite.internal.client.TcpClientChannel.receiveAsync(TcpClientChannel.java:362) at org.apache.ignite.internal.client.TcpClientChannel.serviceAsync(TcpClientChannel.java:283) at org.apache.ignite.internal.client.ClientChannel.serviceAsync(ClientChannel.java:59) at org.apache.ignite.internal.jdbc.JdbcClientQueryCursorHandler.closeAsync(JdbcClientQueryCursorHandler.java:62) at org.apache.ignite.internal.jdbc.JdbcResultSet.close0(JdbcResultSet.java:287) at org.apache.ignite.internal.jdbc.JdbcResultSet.close(JdbcResultSet.java:268) at org.gridgain.ai3tests.tests.TablesAmountCapacityTest.assertTableContains1RowAndColumnsValuesAreCorrect(TablesAmountCapacityTest.java:172) at org.gridgain.ai3tests.tests.TablesAmountCapacityTest.assertTablesAreValid(TablesAmountCapacityTest.java:285) at org.gridgain.ai3tests.tests.TablesAmountCapacityTest.create1000EmptyTablesAmountOfColumnsEachAndMakeSimpleQueries(TablesAmountCapacityTest.java:102) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at io.qameta.allure.junit5.AllureJunit5.interceptTestTemplateMethod(AllureJunit5.java:59) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) at
[jira] [Created] (IGNITE-21090) "IllegalReferenceCountException: refCnt: 0" in SQL query
Andrey Khitrin created IGNITE-21090: --- Summary: "IllegalReferenceCountException: refCnt: 0" in SQL query Key: IGNITE-21090 URL: https://issues.apache.org/jira/browse/IGNITE-21090 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin We have a simple automated test that creates 1000 tables of the same structure and insert few rows into each one. Recently, it started to fail after creating several tens of tables. An exception is always the same: {code:java} 12:05:40.687 [junit-timeout-thread-51] INFO o.g.q.s.g.TableGeneratorHelper - Update: create table test_table_49(id INTEGER not null, column_1 VARCHAR(50) not null, column_2 VARCHAR(50) not null, column_3 VARCHAR(50) not null, column_4 VARCHAR(50) not null, primary key (id)) Dec 15, 2023 12:05:42 PM org.apache.ignite.internal.logger.IgniteLogger logInternal INFO: Partition assignment change notification received [remoteAddress=localhost:10800] 12:05:42.699 [junit-timeout-thread-51] INFO o.g.q.s.g.TableGeneratorHelper - Creation of table: test_table_49 took 2012 ms 12:05:42.700 [junit-timeout-thread-1] INFO o.g.a.tests.TablesAmountCapacityTest - Creation of 50 tables took 101686 ms Dec 15, 2023 12:05:42 PM org.apache.ignite.internal.logger.IgniteLogger logInternal INFO: Partition assignment change notification received [remoteAddress=localhost:10800] 12:05:45.539 [junit-timeout-thread-1] INFO o.g.a.tests.TablesAmountCapacityTest - Table test_table_0 contains 1 rows 12:05:45.591 [junit-timeout-thread-1] INFO o.g.a.tests.TablesAmountCapacityTest - Table test_table_1 contains 1 rows Dec 15, 2023 12:05:45 PM org.apache.ignite.internal.logger.IgniteLogger error SEVERE: Failed to deserialize server response [remoteAddress=localhost:10800]: refCnt: 0 io.netty.util.IllegalReferenceCountException: refCnt: 0 at io.netty.buffer.AbstractByteBuf.ensureAccessible(AbstractByteBuf.java:1454) at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1440) at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:730) at org.apache.ignite.internal.client.proto.ClientMessageUnpacker.unpackBoolean(ClientMessageUnpacker.java:209) at org.apache.ignite.internal.jdbc.proto.event.Response.readBinary(Response.java:81) at org.apache.ignite.internal.jdbc.JdbcClientQueryCursorHandler.lambda$closeAsync$3(JdbcClientQueryCursorHandler.java:65) at org.apache.ignite.internal.client.TcpClientChannel.lambda$receiveAsync$5(TcpClientChannel.java:368) at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:680) at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658) at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2094) at org.apache.ignite.internal.client.TcpClientChannel.receiveAsync(TcpClientChannel.java:362) at org.apache.ignite.internal.client.TcpClientChannel.serviceAsync(TcpClientChannel.java:283) at org.apache.ignite.internal.client.ClientChannel.serviceAsync(ClientChannel.java:59) at org.apache.ignite.internal.jdbc.JdbcClientQueryCursorHandler.closeAsync(JdbcClientQueryCursorHandler.java:62) at org.apache.ignite.internal.jdbc.JdbcResultSet.close0(JdbcResultSet.java:287) at org.apache.ignite.internal.jdbc.JdbcResultSet.close(JdbcResultSet.java:268) at org.gridgain.ai3tests.tests.TablesAmountCapacityTest.assertTableContains1RowAndColumnsValuesAreCorrect(TablesAmountCapacityTest.java:172) at org.gridgain.ai3tests.tests.TablesAmountCapacityTest.assertTablesAreValid(TablesAmountCapacityTest.java:285) at org.gridgain.ai3tests.tests.TablesAmountCapacityTest.create1000EmptyTablesAmountOfColumnsEachAndMakeSimpleQueries(TablesAmountCapacityTest.java:102) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:728) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at io.qameta.allure.junit5.AllureJunit5.interceptTestTemplateMethod(AllureJunit5.java:59) at
[jira] [Updated] (IGNITE-20834) SQL query may hang forerver after node restart
[ https://issues.apache.org/jira/browse/IGNITE-20834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-20834: Labels: ignite-3 sql (was: ignite-3) > SQL query may hang forerver after node restart > -- > > Key: IGNITE-20834 > URL: https://issues.apache.org/jira/browse/IGNITE-20834 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, sql > > How to reproduce: > 1. Start a 1-node cluster > 2. Create several simple tables (usually 5-10 is enough to reproduce): > {code:sql} > create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > ... > {code} > 3. Fill every table with 1000 rows. > 4. Ensure that every table contains 1000 rows: > {code:sql} > SELECT COUNT(*) FROM failoverTest00; > ... > {code} > 5. Restart node (kill a Java process and start node again). > 6. Check all tables again. > Expected behavior: after restart, all tables still contains the same data as > before. > Actual behavior: cannot perform SQL query after restart. It hangs for a long > time. Ignite log is overwhelmed with "Primary replica expired" messages. > This bug was first observed soon after fixes in > https://issues.apache.org/jira/browse/IGNITE-20116. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-20834) SQL query may hang forerver after node restart
[ https://issues.apache.org/jira/browse/IGNITE-20834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-20834: Fix Version/s: (was: 3.0.0-beta2) Affects Version/s: 3.0.0-beta2 > SQL query may hang forerver after node restart > -- > > Key: IGNITE-20834 > URL: https://issues.apache.org/jira/browse/IGNITE-20834 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-beta2 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > How to reproduce: > 1. Start a 1-node cluster > 2. Create several simple tables (usually 5-10 is enough to reproduce): > {code:sql} > create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > ... > {code} > 3. Fill every table with 1000 rows. > 4. Ensure that every table contains 1000 rows: > {code:sql} > SELECT COUNT(*) FROM failoverTest00; > ... > {code} > 5. Restart node (kill a Java process and start node again). > 6. Check all tables again. > Expected behavior: after restart, all tables still contains the same data as > before. > Actual behavior: cannot perform SQL query after restart. It hangs for a long > time. Ignite log is overwhelmed with "Primary replica expired" messages. > This bug was first observed soon after fixes in > https://issues.apache.org/jira/browse/IGNITE-20116. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-20834) SQL query may hang forerver after node restart
[ https://issues.apache.org/jira/browse/IGNITE-20834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-20834: Description: How to reproduce: 1. Start a 1-node cluster 2. Create several simple tables (usually 5-10 is enough to reproduce): {code:sql} create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); ... {code} 3. Fill every table with 1000 rows. 4. Ensure that every table contains 1000 rows: {code:sql} SELECT COUNT(*) FROM failoverTest00; ... {code} 5. Restart node (kill a Java process and start node again). 6. Check all tables again. Expected behavior: after restart, all tables still contains the same data as before. Actual behavior: cannot perform SQL query after restart. It hangs for a long time. Ignite log is overwhelmed with "Primary replica expired" messages. This bug was first observed soon after fixes in https://issues.apache.org/jira/browse/IGNITE-20116. was: How to reproduce: 1. Start a 1-node cluster 2. Create several simple tables (usually 5 is enough to reproduce): {code:sql} create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); ... {code} 3. Fill every table with 1000 rows. 4. Ensure that every table contains 1000 rows: {code:sql} SELECT COUNT(*) FROM failoverTest00; ... {code} 5. Restart node (kill a Java process and start node again). 6. Check all tables again. Expected behavior: after restart, all tables still contains the same data as before. Actual behavior: for some tables, 1 or 2 rows may be missing, if we're fast enough on steps 3-4-5. Some contains 1000 rows, some contains 999 or 998. This bug was first observed only near Sep 15, 2023. Most probably, it was introduced somewhere near that date. Probably, it's an another face of IGNITE-20425 (I'm not sure though). No errors in logs observed. *UPD*: The problem is caused by https://issues.apache.org/jira/browse/IGNITE-20116, current issue will be solved once https://issues.apache.org/jira/browse/IGNITE-20116 will be done > SQL query may hang forerver after node restart > -- > > Key: IGNITE-20834 > URL: https://issues.apache.org/jira/browse/IGNITE-20834 > Project: Ignite > Issue Type: Bug >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > Fix For: 3.0.0-beta2 > > > How to reproduce: > 1. Start a 1-node cluster > 2. Create several simple tables (usually 5-10 is enough to reproduce): > {code:sql} > create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > ... > {code} > 3. Fill every table with 1000 rows. > 4. Ensure that every table contains 1000 rows: > {code:sql} > SELECT COUNT(*) FROM failoverTest00; > ... > {code} > 5. Restart node (kill a Java process and start node again). > 6. Check all tables again. > Expected behavior: after restart, all tables still contains the same data as > before. > Actual behavior: cannot perform SQL query after restart. It hangs for a long > time. Ignite log is overwhelmed with "Primary replica expired" messages. > This bug was first observed soon after fixes in > https://issues.apache.org/jira/browse/IGNITE-20116. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-20834) SQL query may hang forerver after node restart
Andrey Khitrin created IGNITE-20834: --- Summary: SQL query may hang forerver after node restart Key: IGNITE-20834 URL: https://issues.apache.org/jira/browse/IGNITE-20834 Project: Ignite Issue Type: Bug Reporter: Andrey Khitrin Fix For: 3.0.0-beta2 How to reproduce: 1. Start a 1-node cluster 2. Create several simple tables (usually 5 is enough to reproduce): {code:sql} create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); ... {code} 3. Fill every table with 1000 rows. 4. Ensure that every table contains 1000 rows: {code:sql} SELECT COUNT(*) FROM failoverTest00; ... {code} 5. Restart node (kill a Java process and start node again). 6. Check all tables again. Expected behavior: after restart, all tables still contains the same data as before. Actual behavior: for some tables, 1 or 2 rows may be missing, if we're fast enough on steps 3-4-5. Some contains 1000 rows, some contains 999 or 998. This bug was first observed only near Sep 15, 2023. Most probably, it was introduced somewhere near that date. Probably, it's an another face of IGNITE-20425 (I'm not sure though). No errors in logs observed. *UPD*: The problem is caused by https://issues.apache.org/jira/browse/IGNITE-20116, current issue will be solved once https://issues.apache.org/jira/browse/IGNITE-20116 will be done -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Closed] (IGNITE-20577) Partial data loss after node restart
[ https://issues.apache.org/jira/browse/IGNITE-20577?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin closed IGNITE-20577. --- > Partial data loss after node restart > > > Key: IGNITE-20577 > URL: https://issues.apache.org/jira/browse/IGNITE-20577 > Project: Ignite > Issue Type: Bug >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > Fix For: 3.0.0-beta2 > > > How to reproduce: > 1. Start a 1-node cluster > 2. Create several simple tables (usually 5 is enough to reproduce): > {code:sql} > create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 > VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); > ... > {code} > 3. Fill every table with 1000 rows. > 4. Ensure that every table contains 1000 rows: > {code:sql} > SELECT COUNT(*) FROM failoverTest00; > ... > {code} > 5. Restart node (kill a Java process and start node again). > 6. Check all tables again. > Expected behavior: after restart, all tables still contains the same data as > before. > Actual behavior: for some tables, 1 or 2 rows may be missing, if we're fast > enough on steps 3-4-5. Some contains 1000 rows, some contains 999 or 998. > This bug was first observed only near Sep 15, 2023. Most probably, it was > introduced somewhere near that date. Probably, it's an another face of > IGNITE-20425 (I'm not sure though). No errors in logs observed. > *UPD*: The problem is caused by > https://issues.apache.org/jira/browse/IGNITE-20116, current issue will be > solved once https://issues.apache.org/jira/browse/IGNITE-20116 will be done -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-20660) SQL: broken behavior of OCTET_LENGTH function
Andrey Khitrin created IGNITE-20660: --- Summary: SQL: broken behavior of OCTET_LENGTH function Key: IGNITE-20660 URL: https://issues.apache.org/jira/browse/IGNITE-20660 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin Recently, `OCTET_LENGTH` function acted like a synonym for `LENGTH` function. But in the latest AI3 versions, it started to decline usual strings: {code:sql} sql-cli> select OCTET_LENGTH('Some Text'); SQL query execution error Failed to validate query. From line 0, column 0 to line 1, column 31: Cast function cannot convert value of type CHAR(9) to type VARBINARY {code} Looks like it only accepts a very specific type of strings: {code:sql} sql-cli> select OCTET_LENGTH(x'0123'); ╔═══╗ ║ OCTET_LENGTH(X'0123') ║ ╠═══╣ ║ 2 ║ ╚═══╝ {code} But as it said in ANSI99 specification, this function must be able to work with any correct string. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-20649) SQL: class cast exception in EXCEPT SELECT with different column types
Andrey Khitrin created IGNITE-20649: --- Summary: SQL: class cast exception in EXCEPT SELECT with different column types Key: IGNITE-20649 URL: https://issues.apache.org/jira/browse/IGNITE-20649 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta2 Reporter: Andrey Khitrin Steps to reproduce: 1. Create two tables, one with `INT` column and one with `NUMERIC`. Add some sample data into both. {code:sql} -- first table drop table if exists tmp_table_age_name_wage; create table tmp_table_age_name_wage (key_field INT PRIMARY KEY,AGE INT,field1 VARCHAR,field2 INT); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (1, 42,'John',10); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (2, 43,'Jack',5); -- second table drop table if exists tmp_table_age_name_wage_2; create table tmp_table_age_name_wage_2 (key_field INT PRIMARY KEY,AGE DECIMAL,field1 VARCHAR,field2 DECIMAL); insert into tmp_table_age_name_wage_2 (key_field,AGE,field1,field2) values (1, 42,'John',10); {code} 2. `UNION SELECT` for columns with different types works fine: {code:sql} sql-cli> SELECT AGE,field1,field2 FROM tmp_table_age_name_wage UNION SELECT AGE,field1,field2 FROM tmp_table_age_name_wage_2; ╔═╤╤╗ ║ AGE │ FIELD1 │ FIELD2 ║ ╠═╪╪╣ ║ 42 │ John │ 10 ║ ╟─┼┼╢ ║ 42 │ John │ 10 ║ ╟─┼┼╢ ║ 43 │ Jack │ 5 ║ ╚═╧╧╝ {code} 3. Nevertheless, `EXCEPT SELECT` leads to class casting exception: {code:sql} sql-cli> SELECT AGE,field1,field2 FROM tmp_table_age_name_wage EXCEPT SELECT AGE,field1,field2 FROM tmp_table_age_name_wage_2; SQL query execution error class java.math.BigDecimal cannot be cast to class java.lang.Integer (java.math.BigDecimal and java.lang.Integer are in module java.base of loader 'bootstrap') {code} The query above worked in AI3 some time ago (e.g., in 3.0.0-beta1), but not now. Looks like a degradation. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-20577) Partial data loss after node restart
Andrey Khitrin created IGNITE-20577: --- Summary: Partial data loss after node restart Key: IGNITE-20577 URL: https://issues.apache.org/jira/browse/IGNITE-20577 Project: Ignite Issue Type: Bug Reporter: Andrey Khitrin Fix For: 3.0.0-beta2 How to reproduce: 1. Start a 1-node cluster 2. Create several simple tables (usually 5 is enough to reproduce): {code:sql} create table failoverTest00(k1 INTEGER not null, k2 INTEGER not null, v1 VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); create table failoverTest01(k1 INTEGER not null, k2 INTEGER not null, v1 VARCHAR(100), v2 VARCHAR(255), v3 TIMESTAMP not null, primary key (k1, k2)); ... {code} 3. Fill every table with 1000 rows. 4. Ensure that every table contains 1000 rows: {code:sql} SELECT COUNT(*) FROM failoverTest00; ... {code} 5. Restart node (kill a Java process and start node again). 6. Check all tables again. Expected behavior: after restart, all tables still contains the same data as before. Actual behavior: for some tables, 1 or 2 rows may be missing, if we're fast enough on steps 3-4-5. Some contains 1000 rows, some contains 999 or 998. This bug was first observed only near Sep 15, 2023. Most probably, it was introduced somewhere near that date. Probably, it's an another face of IGNITE-20425 (I'm not sure though). No errors in logs observed. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Closed] (IGNITE-20329) Cannot build ODBC modules on MacOS
[ https://issues.apache.org/jira/browse/IGNITE-20329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin closed IGNITE-20329. --- Now compilation works for me. [~isapego] thank you for collaboration and help! > Cannot build ODBC modules on MacOS > -- > > Key: IGNITE-20329 > URL: https://issues.apache.org/jira/browse/IGNITE-20329 > Project: Ignite > Issue Type: Bug > Components: odbc >Reporter: Andrey Khitrin >Assignee: Andrey Khitrin >Priority: Major > Labels: ignite-3 > Fix For: 3.0.0-beta2 > > > I tried to build AI3 from master (hash: 59107180b) on my MacBook and faced an > obstacle with compiling ODBC driver: > {code} > ./gradlew clean build -x check > ... > > Task :platforms:cmakeBuildOdbc FAILED > CMakePlugin.cmakeConfigure - ERRORS: > In file included from > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/app/application_data_buffer.cpp:18: > In file included from > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/app/application_data_buffer.h:20: > In file included from > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/common_types.h:20: > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/system/odbc_constants.h:29:10: > fatal error: 'odbcinst.h' file not found > #include > ^~~~ > 1 error generated. > make[2]: *** > [ignite/odbc/CMakeFiles/ignite3-odbc-obj.dir/app/application_data_buffer.cpp.o] > Error 1 > make[1]: *** [ignite/odbc/CMakeFiles/ignite3-odbc-obj.dir/all] Error 2 > make: *** [all] Error 2 > {code} > I have an unixODBC package installed in my system, and odbcinst.h located in > /opt/local/include. My problem here is that this header is not found by build > scripts. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (IGNITE-20329) Cannot build ODBC modules on MacOS
[ https://issues.apache.org/jira/browse/IGNITE-20329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17761300#comment-17761300 ] Andrey Khitrin commented on IGNITE-20329: - [~isapego] Take a look at PR please > Cannot build ODBC modules on MacOS > -- > > Key: IGNITE-20329 > URL: https://issues.apache.org/jira/browse/IGNITE-20329 > Project: Ignite > Issue Type: Bug > Components: odbc >Reporter: Andrey Khitrin >Assignee: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > I tried to build AI3 from master (hash: 59107180b) on my MacBook and faced an > obstacle with compiling ODBC driver: > {code} > ./gradlew clean build -x check > ... > > Task :platforms:cmakeBuildOdbc FAILED > CMakePlugin.cmakeConfigure - ERRORS: > In file included from > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/app/application_data_buffer.cpp:18: > In file included from > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/app/application_data_buffer.h:20: > In file included from > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/common_types.h:20: > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/system/odbc_constants.h:29:10: > fatal error: 'odbcinst.h' file not found > #include > ^~~~ > 1 error generated. > make[2]: *** > [ignite/odbc/CMakeFiles/ignite3-odbc-obj.dir/app/application_data_buffer.cpp.o] > Error 1 > make[1]: *** [ignite/odbc/CMakeFiles/ignite3-odbc-obj.dir/all] Error 2 > make: *** [all] Error 2 > {code} > I have an unixODBC package installed in my system, and odbcinst.h located in > /opt/local/include. My problem here is that this header is not found by build > scripts. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Assigned] (IGNITE-20329) Cannot build ODBC modules on MacOS
[ https://issues.apache.org/jira/browse/IGNITE-20329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin reassigned IGNITE-20329: --- Assignee: Andrey Khitrin > Cannot build ODBC modules on MacOS > -- > > Key: IGNITE-20329 > URL: https://issues.apache.org/jira/browse/IGNITE-20329 > Project: Ignite > Issue Type: Bug > Components: odbc >Reporter: Andrey Khitrin >Assignee: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > I tried to build AI3 from master (hash: 59107180b) on my MacBook and faced an > obstacle with compiling ODBC driver: > {code} > ./gradlew clean build -x check > ... > > Task :platforms:cmakeBuildOdbc FAILED > CMakePlugin.cmakeConfigure - ERRORS: > In file included from > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/app/application_data_buffer.cpp:18: > In file included from > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/app/application_data_buffer.h:20: > In file included from > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/common_types.h:20: > /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/system/odbc_constants.h:29:10: > fatal error: 'odbcinst.h' file not found > #include > ^~~~ > 1 error generated. > make[2]: *** > [ignite/odbc/CMakeFiles/ignite3-odbc-obj.dir/app/application_data_buffer.cpp.o] > Error 1 > make[1]: *** [ignite/odbc/CMakeFiles/ignite3-odbc-obj.dir/all] Error 2 > make: *** [all] Error 2 > {code} > I have an unixODBC package installed in my system, and odbcinst.h located in > /opt/local/include. My problem here is that this header is not found by build > scripts. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-20329) Cannot build ODBC modules on MacOS
Andrey Khitrin created IGNITE-20329: --- Summary: Cannot build ODBC modules on MacOS Key: IGNITE-20329 URL: https://issues.apache.org/jira/browse/IGNITE-20329 Project: Ignite Issue Type: Bug Components: odbc Reporter: Andrey Khitrin I tried to build AI3 from master (hash: 59107180b) on my MacBook and faced an obstacle with compiling ODBC driver: {code} ./gradlew clean build -x check ... > Task :platforms:cmakeBuildOdbc FAILED CMakePlugin.cmakeConfigure - ERRORS: In file included from /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/app/application_data_buffer.cpp:18: In file included from /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/app/application_data_buffer.h:20: In file included from /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/common_types.h:20: /Users/zloddey/work/apache/ignite-3/modules/platforms/cpp/ignite/odbc/system/odbc_constants.h:29:10: fatal error: 'odbcinst.h' file not found #include ^~~~ 1 error generated. make[2]: *** [ignite/odbc/CMakeFiles/ignite3-odbc-obj.dir/app/application_data_buffer.cpp.o] Error 1 make[1]: *** [ignite/odbc/CMakeFiles/ignite3-odbc-obj.dir/all] Error 2 make: *** [all] Error 2 {code} I have an unixODBC package installed in my system, and odbcinst.h located in /opt/local/include. My problem here is that this header is not found by build scripts. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-20198) .NET Frequent failures in Plaform .NET (Core Linux) TC Project
Andrey Khitrin created IGNITE-20198: --- Summary: .NET Frequent failures in Plaform .NET (Core Linux) TC Project Key: IGNITE-20198 URL: https://issues.apache.org/jira/browse/IGNITE-20198 Project: Ignite Issue Type: Bug Components: .NET Affects Versions: 2.15 Reporter: Andrey Khitrin * Out of memory: Java heap space * Execution timeout * Flaky tests -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-19976) Sql: ClassCastException when trying to select from indexed smallint column
Andrey Khitrin created IGNITE-19976: --- Summary: Sql: ClassCastException when trying to select from indexed smallint column Key: IGNITE-19976 URL: https://issues.apache.org/jira/browse/IGNITE-19976 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin Steps to reproduce: {code:sql} sql-cli> create table tt(id INTEGER not null, field_1 TINYINT, field_2 SMALLINT, primary key (id)); Updated 0 rows. sql-cli> SELECT * FROM tt WHERE field_2 = 50; ╔╤═╤═╗ ║ ID │ FIELD_1 │ FIELD_2 ║ ╠╧═╧═╣ ║ (empty)║ ╚╝ -- select over field_2 works fine until we create an index on it! sql-cli> CREATE INDEX tt_idx ON tt (field_2); Updated 0 rows. sql-cli> SELECT * FROM tt WHERE field_2 = 50; SQL query execution error Exception while executing query [query=SELECT * FROM tt WHERE field_2 = 50;]. Error message:Query remote fragment execution failed: nodeName=defaultNode, queryId=15a68600-41bc-46c5-b20d-7a96aad15477, fragmentId=4, originalMessage=class java.lang.Integer cannot be cast to class java.lang.Short (java.lang.Integer and java.lang.Short are in module java.base of loader 'bootstrap') {code} This doesn't look good. A created index must not cause casting exception. Reproduced on commit `fef7a24c2a029cac720d2fea3815c2a70a86b72f` (2023-07-12) -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19419) Internal queue overload under intensive SQL load
[ https://issues.apache.org/jira/browse/IGNITE-19419?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19419: Summary: Internal queue overload under intensive SQL load (was: Corrupted LogStorage under intensive SQL load) > Internal queue overload under intensive SQL load > > > Key: IGNITE-19419 > URL: https://issues.apache.org/jira/browse/IGNITE-19419 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, storage-engine > Attachments: ai3.jstack, logs.zip > > > I tried to run a SQL benchmark (slightly modified [Benchbase TPC-C > scenario|https://github.com/cmu-db/benchbase/wiki/TPC-C]) against Ignite3 > (commit hash b48ddcba7cd2bd3b9a053ae131c25b44a0400e27). > Ignite3 was running in a single-node mode with -Xmx8G -Xms8G memory limit > (increased memory size comparing to IGNITE-19412). After some time it has > become unavailable to the client. Log is filled with error messages like the > following: > > {code:java} > 2023-05-03 17:51:57:705 +0300 > [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][NodeImpl] Node > got error: Error > [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, disk > queue overload.]]. > 2023-05-03 17:51:57:705 +0300 > [WARNING][CompletableFutureDelayScheduler][RaftGroupServiceImpl] Recoverable > error during the request type=ActionRequestImpl occurred (will be retried on > the randomly selected node): > java.util.concurrent.CompletionException: > java.util.concurrent.TimeoutException > at > java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:367) > at > java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:376) > at > java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1019) > at > java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) > at > java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) > at > java.base/java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2792) > at > java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) > at > java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) > 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:829) > Caused by: java.util.concurrent.TimeoutException > ... 7 more > 2023-05-03 17:51:57:705 +0300 > [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node > append [2268, 2268] > failed, status=Status[EIO<1014>: Corrupted LogStorage]. > 2023-05-03 17:51:57:705 +0300 > [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][FSMCallerImpl] > FSMCaller already in error status, ignore new error > Error [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, > disk queue overload.]] > at > org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.reportError(LogManagerImpl.java:587) > at > org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.appendEntries(LogManagerImpl.java:337) > at > org.apache.ignite.raft.jraft.core.NodeImpl.executeApplyingTasks(NodeImpl.java:1621) > at > org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:305) > at > org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:288) > at > org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:217) > at > org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:181) > at > com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:137) > at java.base/java.lang.Thread.run(Thread.java:829) > 2023-05-03 17:51:57:706 +0300 > [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][ReplicatorGroupImpl] > Fail to find the next candidate. > 2023-05-03 17:51:57:706 +0300 > [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node > append [2271, 2271] > failed, status=Status[EIO<1014>: Corrupted LogStorage]. > 2023-05-03 17:51:57:706 +0300 > [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][StateMachineAdapter] > onLeaderStop: status=Status[EBADNODE<10009>: Raft
[jira] [Created] (IGNITE-19608) Startup errors are ignored in ignite3db script
Andrey Khitrin created IGNITE-19608: --- Summary: Startup errors are ignored in ignite3db script Key: IGNITE-19608 URL: https://issues.apache.org/jira/browse/IGNITE-19608 Project: Ignite Issue Type: Bug Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin Ignite3 node is started by `bin/ignite3db` shell script. Unfortunately, this script follows some shell scripting bad practices that makes troubleshooting harder when something goes wrong. Particullary, there are following issues: 1. No guarding bash options (like `nounset`, `errexit`, or `pipefile`) is set. 2. When starting Java application, its stderr and stdout are redirected into `/dev/null`. {code:bash} CMD="${JAVA_CMD_WITH_ARGS} ${APPLICATION_ARGS}" $CMD >>/dev/null 2>&1 ${IGNITE_HOME}/pid {code} Just for comparison: [control.sh in AI2|https://github.com/apache/ignite/blob/master/bin/control.sh] do not suffer from such behavior. This should be fixed in AI3 too. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19419) Corrupted LogStorage under intensive SQL load
[ https://issues.apache.org/jira/browse/IGNITE-19419?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19419: Attachment: ai3.jstack > Corrupted LogStorage under intensive SQL load > - > > Key: IGNITE-19419 > URL: https://issues.apache.org/jira/browse/IGNITE-19419 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, storage-engine > Attachments: ai3.jstack, logs.zip > > > I tried to run a SQL benchmark (slightly modified [Benchbase TPC-C > scenario|https://github.com/cmu-db/benchbase/wiki/TPC-C]) against Ignite3 > (commit hash b48ddcba7cd2bd3b9a053ae131c25b44a0400e27). > Ignite3 was running in a single-node mode with -Xmx8G -Xms8G memory limit > (increased memory size comparing to IGNITE-19412). After some time it has > become unavailable to the client. Log is filled with error messages like the > following: > {code:java} > 2023-05-03 17:51:57:705 +0300 > [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][NodeImpl] Node > got error: Error > [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, disk > queue overload.]]. > 2023-05-03 17:51:57:705 +0300 > [WARNING][CompletableFutureDelayScheduler][RaftGroupServiceImpl] Recoverable > error during the request type=ActionRequestImpl occurred (will be retried on > the randomly selected node): > java.util.concurrent.CompletionException: > java.util.concurrent.TimeoutException > at > java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:367) > at > java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:376) > at > java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1019) > at > java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) > at > java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) > at > java.base/java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2792) > at > java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) > at > java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) > 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:829) > Caused by: java.util.concurrent.TimeoutException > ... 7 more > 2023-05-03 17:51:57:705 +0300 > [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node > append [2268, 2268] > failed, status=Status[EIO<1014>: Corrupted LogStorage]. > 2023-05-03 17:51:57:705 +0300 > [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][FSMCallerImpl] > FSMCaller already in error status, ignore new error > Error [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, > disk queue overload.]] > at > org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.reportError(LogManagerImpl.java:587) > at > org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.appendEntries(LogManagerImpl.java:337) > at > org.apache.ignite.raft.jraft.core.NodeImpl.executeApplyingTasks(NodeImpl.java:1621) > at > org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:305) > at > org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:288) > at > org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:217) > at > org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:181) > at > com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:137) > at java.base/java.lang.Thread.run(Thread.java:829) > 2023-05-03 17:51:57:706 +0300 > [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][ReplicatorGroupImpl] > Fail to find the next candidate. > 2023-05-03 17:51:57:706 +0300 > [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node > append [2271, 2271] > failed, status=Status[EIO<1014>: Corrupted LogStorage]. > 2023-05-03 17:51:57:706 +0300 > [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][StateMachineAdapter] > onLeaderStop: status=Status[EBADNODE<10009>: Raft node(leader or candidate) > is in error.]. > 2023-05-03 17:51:57:706 +0300 >
[jira] [Updated] (IGNITE-19419) Corrupted LogStorage under intensive SQL load
[ https://issues.apache.org/jira/browse/IGNITE-19419?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19419: Attachment: logs.zip > Corrupted LogStorage under intensive SQL load > - > > Key: IGNITE-19419 > URL: https://issues.apache.org/jira/browse/IGNITE-19419 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, storage-engine > Attachments: ai3.jstack, logs.zip > > > I tried to run a SQL benchmark (slightly modified [Benchbase TPC-C > scenario|https://github.com/cmu-db/benchbase/wiki/TPC-C]) against Ignite3 > (commit hash b48ddcba7cd2bd3b9a053ae131c25b44a0400e27). > Ignite3 was running in a single-node mode with -Xmx8G -Xms8G memory limit > (increased memory size comparing to IGNITE-19412). After some time it has > become unavailable to the client. Log is filled with error messages like the > following: > {code:java} > 2023-05-03 17:51:57:705 +0300 > [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][NodeImpl] Node > got error: Error > [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, disk > queue overload.]]. > 2023-05-03 17:51:57:705 +0300 > [WARNING][CompletableFutureDelayScheduler][RaftGroupServiceImpl] Recoverable > error during the request type=ActionRequestImpl occurred (will be retried on > the randomly selected node): > java.util.concurrent.CompletionException: > java.util.concurrent.TimeoutException > at > java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:367) > at > java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:376) > at > java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1019) > at > java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) > at > java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) > at > java.base/java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2792) > at > java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) > at > java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) > 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:829) > Caused by: java.util.concurrent.TimeoutException > ... 7 more > 2023-05-03 17:51:57:705 +0300 > [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node > append [2268, 2268] > failed, status=Status[EIO<1014>: Corrupted LogStorage]. > 2023-05-03 17:51:57:705 +0300 > [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][FSMCallerImpl] > FSMCaller already in error status, ignore new error > Error [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, > disk queue overload.]] > at > org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.reportError(LogManagerImpl.java:587) > at > org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.appendEntries(LogManagerImpl.java:337) > at > org.apache.ignite.raft.jraft.core.NodeImpl.executeApplyingTasks(NodeImpl.java:1621) > at > org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:305) > at > org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:288) > at > org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:217) > at > org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:181) > at > com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:137) > at java.base/java.lang.Thread.run(Thread.java:829) > 2023-05-03 17:51:57:706 +0300 > [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][ReplicatorGroupImpl] > Fail to find the next candidate. > 2023-05-03 17:51:57:706 +0300 > [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node > append [2271, 2271] > failed, status=Status[EIO<1014>: Corrupted LogStorage]. > 2023-05-03 17:51:57:706 +0300 > [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][StateMachineAdapter] > onLeaderStop: status=Status[EBADNODE<10009>: Raft node(leader or candidate) > is in error.]. > 2023-05-03 17:51:57:706 +0300 >
[jira] [Updated] (IGNITE-19419) Corrupted LogStorage under intensive SQL load
[ https://issues.apache.org/jira/browse/IGNITE-19419?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19419: Description: I tried to run a SQL benchmark (slightly modified [Benchbase TPC-C scenario|https://github.com/cmu-db/benchbase/wiki/TPC-C]) against Ignite3 (commit hash b48ddcba7cd2bd3b9a053ae131c25b44a0400e27). Ignite3 was running in a single-node mode with -Xmx8G -Xms8G memory limit (increased memory size comparing to IGNITE-19412). After some time it has become unavailable to the client. Log is filled with error messages like the following: {code:java} 2023-05-03 17:51:57:705 +0300 [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][NodeImpl] Node got error: Error [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, disk queue overload.]]. 2023-05-03 17:51:57:705 +0300 [WARNING][CompletableFutureDelayScheduler][RaftGroupServiceImpl] Recoverable error during the request type=ActionRequestImpl occurred (will be retried on the randomly selected node): java.util.concurrent.CompletionException: java.util.concurrent.TimeoutException at java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:367) at java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:376) at java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1019) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) at java.base/java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2792) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) 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:829) Caused by: java.util.concurrent.TimeoutException ... 7 more 2023-05-03 17:51:57:705 +0300 [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node append [2268, 2268] failed, status=Status[EIO<1014>: Corrupted LogStorage]. 2023-05-03 17:51:57:705 +0300 [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][FSMCallerImpl] FSMCaller already in error status, ignore new error Error [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, disk queue overload.]] at org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.reportError(LogManagerImpl.java:587) at org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.appendEntries(LogManagerImpl.java:337) at org.apache.ignite.raft.jraft.core.NodeImpl.executeApplyingTasks(NodeImpl.java:1621) at org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:305) at org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:288) at org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:217) at org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:181) at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:137) at java.base/java.lang.Thread.run(Thread.java:829) 2023-05-03 17:51:57:706 +0300 [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][ReplicatorGroupImpl] Fail to find the next candidate. 2023-05-03 17:51:57:706 +0300 [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node append [2271, 2271] failed, status=Status[EIO<1014>: Corrupted LogStorage]. 2023-05-03 17:51:57:706 +0300 [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][StateMachineAdapter] onLeaderStop: status=Status[EBADNODE<10009>: Raft node(leader or candidate) is in error.]. 2023-05-03 17:51:57:706 +0300 [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node <30181391-2f04-40c0-8c35-a77592b0731f_part_5/node0> append [2285, 2285] failed, status=Status[EIO<1014>: Corrupted LogStorage]. {code} More errors could be observed in the attached log archive. was: I tried to run a SQL benchmark (slightly modified [Benchbase TPC-C scenario|https://github.com/cmu-db/benchbase/wiki/TPC-C]) against Ignite3 (commit hash b48ddcba7cd2bd3b9a053ae131c25b44a0400e27). Ignite3 was running with -Xmx6G -Xms6G memory limit. After some time it has reached memory limits and failed due to OutOfMemoryError. A heap dump was generated on
[jira] [Updated] (IGNITE-19419) Corrupted LogStorage under intensive SQL load
[ https://issues.apache.org/jira/browse/IGNITE-19419?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19419: Labels: ignite-3 storage-engine (was: ignite-3 sql) > Corrupted LogStorage under intensive SQL load > - > > Key: IGNITE-19419 > URL: https://issues.apache.org/jira/browse/IGNITE-19419 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, storage-engine > Attachments: ai3.jstack, logs.zip > > > I tried to run a SQL benchmark (slightly modified [Benchbase TPC-C > scenario|https://github.com/cmu-db/benchbase/wiki/TPC-C]) against Ignite3 > (commit hash b48ddcba7cd2bd3b9a053ae131c25b44a0400e27). > Ignite3 was running in a single-node mode with -Xmx8G -Xms8G memory limit > (increased memory size comparing to IGNITE-19412). After some time it has > become unavailable to the client. Log is filled with error messages like the > following: > {code:java} > 2023-05-03 17:51:57:705 +0300 > [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][NodeImpl] Node > got error: Error > [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, disk > queue overload.]]. > 2023-05-03 17:51:57:705 +0300 > [WARNING][CompletableFutureDelayScheduler][RaftGroupServiceImpl] Recoverable > error during the request type=ActionRequestImpl occurred (will be retried on > the randomly selected node): > java.util.concurrent.CompletionException: > java.util.concurrent.TimeoutException > at > java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:367) > at > java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:376) > at > java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1019) > at > java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) > at > java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) > at > java.base/java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2792) > at > java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) > at > java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) > 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:829) > Caused by: java.util.concurrent.TimeoutException > ... 7 more > 2023-05-03 17:51:57:705 +0300 > [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node > append [2268, 2268] > failed, status=Status[EIO<1014>: Corrupted LogStorage]. > 2023-05-03 17:51:57:705 +0300 > [WARNING][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][FSMCallerImpl] > FSMCaller already in error status, ignore new error > Error [type=ERROR_TYPE_LOG, status=Status[EBUSY<1009>: LogManager is busy, > disk queue overload.]] > at > org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.reportError(LogManagerImpl.java:587) > at > org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl.appendEntries(LogManagerImpl.java:337) > at > org.apache.ignite.raft.jraft.core.NodeImpl.executeApplyingTasks(NodeImpl.java:1621) > at > org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:305) > at > org.apache.ignite.raft.jraft.core.NodeImpl$LogEntryAndClosureHandler.onEvent(NodeImpl.java:288) > at > org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:217) > at > org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:181) > at > com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:137) > at java.base/java.lang.Thread.run(Thread.java:829) > 2023-05-03 17:51:57:706 +0300 > [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][ReplicatorGroupImpl] > Fail to find the next candidate. > 2023-05-03 17:51:57:706 +0300 > [ERROR][%node0%JRaft-LogManager-Disruptor-_stripe_10-0][NodeImpl] Node > append [2271, 2271] > failed, status=Status[EIO<1014>: Corrupted LogStorage]. > 2023-05-03 17:51:57:706 +0300 > [INFO][%node0%JRaft-FSMCaller-Disruptor-_stripe_10-0][StateMachineAdapter] > onLeaderStop: status=Status[EBADNODE<10009>: Raft node(leader or candidate) > is in error.]. > 2023-05-03 17:51:57:706
[jira] [Created] (IGNITE-19419) Corrupted LogStorage under intensive SQL load
Andrey Khitrin created IGNITE-19419: --- Summary: Corrupted LogStorage under intensive SQL load Key: IGNITE-19419 URL: https://issues.apache.org/jira/browse/IGNITE-19419 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin I tried to run a SQL benchmark (slightly modified [Benchbase TPC-C scenario|https://github.com/cmu-db/benchbase/wiki/TPC-C]) against Ignite3 (commit hash b48ddcba7cd2bd3b9a053ae131c25b44a0400e27). Ignite3 was running with -Xmx6G -Xms6G memory limit. After some time it has reached memory limits and failed due to OutOfMemoryError. A heap dump was generated on failure. I can't attach this dump due to its size, but I've opened it in MAT and created a report (see zip file attached). The report says that most of the retained heap (almost 5G) is occupied by a single instance of o.a.i.internal.sql.engine.exec.MailboxRegistryImpl class (see image attached). {*}Hypothesis{*}: on an intense load, MailboxRegistryImpl creates a lot of lambda expressions. This happens faster than they're being utilized. With limited memory size, it could lead to OOM at some moment. Benchmark is quite trivial by mechanics: 1. Create a table structure (see DDL file attached) 2. Fill tables with randomized data (several tens of thousands rows is enough) 3. Run select queries in a loop (actually, it wouldn't happen; OOM was raised on data insertion). -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-19412) Potential memory leak in MailboxRegistryImpl under intensive SQL load
Andrey Khitrin created IGNITE-19412: --- Summary: Potential memory leak in MailboxRegistryImpl under intensive SQL load Key: IGNITE-19412 URL: https://issues.apache.org/jira/browse/IGNITE-19412 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin Attachments: Screenshot_20230503_172458.png, ddl-ignite3.sql, java_pid4802_Leak_Suspects.zip I tried to run a SQL benchmark (slightly modified [Benchbase TPC-C scenario|https://github.com/cmu-db/benchbase/wiki/TPC-C]) against Ignite3 (commit hash b48ddcba7cd2bd3b9a053ae131c25b44a0400e27). Ignite3 was running with -Xmx6G -Xms6G memory limit. After some time it has reached memory limits and failed due to OutOfMemoryError. A heap dump was generated on failure. I can't attach this dump due to its size, but I've opened it in MAT and created a report (see zip file attached). The report says that most of the retained heap (almost 5G) is occupied by a single instance of o.a.i.internal.sql.engine.exec.MailboxRegistryImpl class (see image attached). {*}Hypothesis{*}: on an intense load, MailboxRegistryImpl creates a lot of lambda expressions. This happens faster than they're being utilized. With limited memory size, it could lead to OOM at some moment. Benchmark is quite trivial by mechanics: 1. Create a table structure (see DDL file attached) 2. Fill tables with randomized data (several tens of thousands rows is enough) 3. Run select queries in a loop (actually, it wouldn't happen; OOM was raised on data insertion). -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19352) Create table from query result
[ https://issues.apache.org/jira/browse/IGNITE-19352?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19352: Affects Version/s: 3.0.0-beta1 > Create table from query result > -- > > Key: IGNITE-19352 > URL: https://issues.apache.org/jira/browse/IGNITE-19352 > Project: Ignite > Issue Type: Improvement > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3, sql > > Like in IGNITE-14555 for AI2, it would be useful to create tables from the > result of the query: > {code:sql} > CREATE TABLE AS > {code} > In the AI3 beta1 and current `main` it's not possible: > {code:sql} > sql-cli> create table xx (key_field INT PRIMARY KEY, field1 INT); > Updated 0 rows. > sql-cli> insert into xx values (1, 1); > Updated 1 rows. > sql-cli> insert into xx values (2, 10); > Updated 1 rows. > sql-cli> create table xy as select key_field, field1 from xx where field1 < 5; > SQL query execution error > Exception while executing query [query=create table xy as select key_field, > field1 from xx where field1 < 5;]. Error message:IGN-SQL-3 > TraceId:ff6bc711-14e5-42ab-b80c-5515a8b77c7c Failed to parse query: > Encountered " "AS" "as "" at line 1, column 17. > Was expecting: > "(" ... > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-19352) Create table from query result
Andrey Khitrin created IGNITE-19352: --- Summary: Create table from query result Key: IGNITE-19352 URL: https://issues.apache.org/jira/browse/IGNITE-19352 Project: Ignite Issue Type: Improvement Components: sql Reporter: Andrey Khitrin Like in IGNITE-14555 for AI2, it would be useful to create tables from the result of the query: {code:sql} CREATE TABLE AS {code} In the AI3 beta1 and current `main` it's not possible: {code:sql} sql-cli> create table xx (key_field INT PRIMARY KEY, field1 INT); Updated 0 rows. sql-cli> insert into xx values (1, 1); Updated 1 rows. sql-cli> insert into xx values (2, 10); Updated 1 rows. sql-cli> create table xy as select key_field, field1 from xx where field1 < 5; SQL query execution error Exception while executing query [query=create table xy as select key_field, field1 from xx where field1 < 5;]. Error message:IGN-SQL-3 TraceId:ff6bc711-14e5-42ab-b80c-5515a8b77c7c Failed to parse query: Encountered " "AS" "as "" at line 1, column 17. Was expecting: "(" ... {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-19345) SQL: incorrect NULLIF behavior in some cases
Andrey Khitrin created IGNITE-19345: --- Summary: SQL: incorrect NULLIF behavior in some cases Key: IGNITE-19345 URL: https://issues.apache.org/jira/browse/IGNITE-19345 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin During the validation of IGNITE-18167, the following error was found: {code:sql} sql-cli> SELECT NULLIF(1, 1) IS NULL; SQL query execution error Exception while executing query [query=SELECT NULLIF(1, 1) IS NULL;]. Error message:From line 1, column 8 to line 1, column 19: Illegal mixing of types in CASE or COALESCE statement {code} For chars, it works correctly: {code:sql} sql-cli> SELECT NULLIF('1', '1') IS NULL; ╔═╗ ║ EXPR$0 ║ ╠═╣ ║ true║ ╚═╝ {code} For slightly more complex numeric query, it also works correctly: {code:sql} sql-cli> SELECT x IS NULL FROM (SELECT NULLIF(1, 1) AS x); ╔═╗ ║ EXPR$0 ║ ╠═╣ ║ true║ ╚═╝ {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (IGNITE-18488) SQL: SUBSTRING function does not support NULL values
[ https://issues.apache.org/jira/browse/IGNITE-18488?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17714984#comment-17714984 ] Andrey Khitrin commented on IGNITE-18488: - I've made a clone of this issue with updated description (IGNITE-19341). Hope it helps. > SQL: SUBSTRING function does not support NULL values > > > Key: IGNITE-18488 > URL: https://issues.apache.org/jira/browse/IGNITE-18488 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Assignee: Andrey Mashenkov >Priority: Major > Labels: ignite-3, sql > Fix For: 3.0.0-beta2 > > Time Spent: 10m > Remaining Estimate: 0h > > ANSI99 SQL specification ("6.18 ") says the following: > {code:java} > 3) If is specified, then: > a) Let C be the value of the , ..., and let S > be the value of the . > b) If is specified, then let L be the value of length> ... > c) If either C, S, or L is the null value, then the result of the > is the null value. > {code} > So, we should expect the following behavior: > {code:sql} > SUBSTRING('text' FROM 1 FOR NULL) -> NULL > SUBSTRING('text' FROM NULL FOR 2) -> NULL > SUBSTRING(NULL FROM 1 FOR 2) -> NULL > {code} > Instead, we got errors for these queries: > {code:sql} > sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR > NULL);]. Error message:From line 1, column 8 to line 1, column 40: Cannot > apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM > FOR )'. Supported form(s): 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR > 2);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply > 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR > )'. Supported form(s): 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); > (client freezes, no answer at all) > {code} > *Important*: the last query causes {{NullPointerException}} within DB: > {code:java} > 2022-12-30 07:32:46:210 + > [WARNING][node1-srv-worker-1][ClientInboundMessageHandler] Error processing > client request > java.lang.NullPointerException > at > org.apache.ignite.internal.sql.SqlColumnTypeConverter.columnTypeToClass(SqlColumnTypeConverter.java:42) > at > org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.createColumnMetadata(JdbcQueryCursorHandlerImpl.java:162) > at > java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) > at > java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) > at > java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) > at > java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) > at > java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) > at > java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) > at > java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) > at > org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.queryMetadataAsync(JdbcQueryCursorHandlerImpl.java:133) > at > org.apache.ignite.client.handler.requests.jdbc.ClientJdbcQueryMetadataRequest.process(ClientJdbcQueryMetadataRequest.java:47) > at > org.apache.ignite.client.handler.ClientInboundMessageHandler.processOperation(ClientInboundMessageHandler.java:454) > at > org.apache.ignite.client.handler.ClientInboundMessageHandler.processOperation(ClientInboundMessageHandler.java:336) > at > org.apache.ignite.client.handler.ClientInboundMessageHandler.channelRead(ClientInboundMessageHandler.java:187) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) > at > io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) > at >
[jira] [Updated] (IGNITE-19341) SQL: SUBSTRING function does not support NULL values (try 2)
[ https://issues.apache.org/jira/browse/IGNITE-19341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19341: Fix Version/s: (was: 3.0.0-beta2) > SQL: SUBSTRING function does not support NULL values (try 2) > > > Key: IGNITE-19341 > URL: https://issues.apache.org/jira/browse/IGNITE-19341 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Assignee: Andrey Mashenkov >Priority: Major > Labels: ignite-3, sql > > ANSI99 SQL specification ("6.18 ") says the following: > {code:java} > 3) If is specified, then: > a) Let C be the value of the , ..., and let S > be the value of the . > b) If is specified, then let L be the value of length> ... > c) If either C, S, or L is the null value, then the result of the > is the null value. > {code} > So, we should expect the following behavior: > {code:sql} > SUBSTRING('text' FROM 1 FOR NULL) -> NULL > SUBSTRING('text' FROM NULL FOR 2) -> NULL > SUBSTRING(NULL FROM 1 FOR 2) -> NULL > {code} > Instead, we got errors for these queries: > {code:sql} > sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR > NULL);]. Error message:From line 1, column 8 > to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type > 'SUBSTRING( FROM FOR )'. Supported form(s): > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR > 2);]. Error message:From line 1, column 8 > to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type > 'SUBSTRING( FROM FOR )'. Supported form(s): > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > {code} > Only such request works fine: > {code:sql} > sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); > ╔═╗ > ║ EXPR$0 ║ > ╠═╣ > ║ null║ > ╚═╝ > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-19341) SQL: SUBSTRING function does not support NULL values (try 2)
[ https://issues.apache.org/jira/browse/IGNITE-19341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-19341: Description: ANSI99 SQL specification ("6.18 ") says the following: {code:java} 3) If is specified, then: a) Let C be the value of the , ..., and let S be the value of the . b) If is specified, then let L be the value of ... c) If either C, S, or L is the null value, then the result of the is the null value. {code} So, we should expect the following behavior: {code:sql} SUBSTRING('text' FROM 1 FOR NULL) -> NULL SUBSTRING('text' FROM NULL FOR 2) -> NULL SUBSTRING(NULL FROM 1 FOR 2) -> NULL {code} Instead, we got errors for these queries: {code:sql} sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR NULL);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR 2);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' {code} Only such request works fine: {code:sql} sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); ╔═╗ ║ EXPR$0 ║ ╠═╣ ║ null║ ╚═╝ {code} was: ANSI99 SQL specification ("6.18 ") says the following: {code:java} 3) If is specified, then: a) Let C be the value of the , ..., and let S be the value of the . b) If is specified, then let L be the value of ... c) If either C, S, or L is the null value, then the result of the is the null value. {code} So, we should expect the following behavior: {code:sql} SUBSTRING('text' FROM 1 FOR NULL) -> NULL SUBSTRING('text' FROM NULL FOR 2) -> NULL SUBSTRING(NULL FROM 1 FOR 2) -> NULL {code} Instead, we got errors for these queries: {code:sql} sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR NULL);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR 2);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); (client freezes, no answer at all) {code} *Important*: the last query causes {{NullPointerException}} within DB: {code:java} 2022-12-30 07:32:46:210 + [WARNING][node1-srv-worker-1][ClientInboundMessageHandler] Error processing client request java.lang.NullPointerException at org.apache.ignite.internal.sql.SqlColumnTypeConverter.columnTypeToClass(SqlColumnTypeConverter.java:42) at org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.createColumnMetadata(JdbcQueryCursorHandlerImpl.java:162) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.queryMetadataAsync(JdbcQueryCursorHandlerImpl.java:133) at org.apache.ignite.client.handler.requests.jdbc.ClientJdbcQueryMetadataRequest.process(ClientJdbcQueryMetadataRequest.java:47) at
[jira] [Created] (IGNITE-19341) SQL: SUBSTRING function does not support NULL values (try 2)
Andrey Khitrin created IGNITE-19341: --- Summary: SQL: SUBSTRING function does not support NULL values (try 2) Key: IGNITE-19341 URL: https://issues.apache.org/jira/browse/IGNITE-19341 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin Assignee: Andrey Mashenkov Fix For: 3.0.0-beta2 ANSI99 SQL specification ("6.18 ") says the following: {code:java} 3) If is specified, then: a) Let C be the value of the , ..., and let S be the value of the . b) If is specified, then let L be the value of ... c) If either C, S, or L is the null value, then the result of the is the null value. {code} So, we should expect the following behavior: {code:sql} SUBSTRING('text' FROM 1 FOR NULL) -> NULL SUBSTRING('text' FROM NULL FOR 2) -> NULL SUBSTRING(NULL FROM 1 FOR 2) -> NULL {code} Instead, we got errors for these queries: {code:sql} sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR NULL);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR 2);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); (client freezes, no answer at all) {code} *Important*: the last query causes {{NullPointerException}} within DB: {code:java} 2022-12-30 07:32:46:210 + [WARNING][node1-srv-worker-1][ClientInboundMessageHandler] Error processing client request java.lang.NullPointerException at org.apache.ignite.internal.sql.SqlColumnTypeConverter.columnTypeToClass(SqlColumnTypeConverter.java:42) at org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.createColumnMetadata(JdbcQueryCursorHandlerImpl.java:162) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.queryMetadataAsync(JdbcQueryCursorHandlerImpl.java:133) at org.apache.ignite.client.handler.requests.jdbc.ClientJdbcQueryMetadataRequest.process(ClientJdbcQueryMetadataRequest.java:47) at org.apache.ignite.client.handler.ClientInboundMessageHandler.processOperation(ClientInboundMessageHandler.java:454) at org.apache.ignite.client.handler.ClientInboundMessageHandler.processOperation(ClientInboundMessageHandler.java:336) at org.apache.ignite.client.handler.ClientInboundMessageHandler.channelRead(ClientInboundMessageHandler.java:187) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at
[jira] [Commented] (IGNITE-18488) SQL: SUBSTRING function does not support NULL values
[ https://issues.apache.org/jira/browse/IGNITE-18488?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17714182#comment-17714182 ] Andrey Khitrin commented on IGNITE-18488: - [~amashenkov] [~korlov] Guys, do I understand correctly that the only 1 case of 3 was fixed here? {code:sql} sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); ╔═╗ ║ EXPR$0 ║ ╠═╣ ║ null║ ╚═╝ {code} I still got an error on the fresh AI3 for this query: {code:sql} sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR NULL);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' {code} And for this one: {code:sql} sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR 2);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' {code} Please correct me if I'm wrong. What should we do with remaining two cases? They're also a part of the ANSI99 SQL spec. > SQL: SUBSTRING function does not support NULL values > > > Key: IGNITE-18488 > URL: https://issues.apache.org/jira/browse/IGNITE-18488 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Assignee: Andrey Mashenkov >Priority: Major > Labels: ignite-3, sql > Fix For: 3.0.0-beta2 > > Time Spent: 10m > Remaining Estimate: 0h > > ANSI99 SQL specification ("6.18 ") says the following: > {code:java} > 3) If is specified, then: > a) Let C be the value of the , ..., and let S > be the value of the . > b) If is specified, then let L be the value of length> ... > c) If either C, S, or L is the null value, then the result of the > is the null value. > {code} > So, we should expect the following behavior: > {code:sql} > SUBSTRING('text' FROM 1 FOR NULL) -> NULL > SUBSTRING('text' FROM NULL FOR 2) -> NULL > SUBSTRING(NULL FROM 1 FOR 2) -> NULL > {code} > Instead, we got errors for these queries: > {code:sql} > sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR > NULL);]. Error message:From line 1, column 8 to line 1, column 40: Cannot > apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM > FOR )'. Supported form(s): 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); > SQL query execution error > Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR > 2);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply > 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR > )'. Supported form(s): 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > 'SUBSTRING( FROM )' > 'SUBSTRING( FROM FOR )' > sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); > (client freezes, no answer at all) > {code} > *Important*: the last query causes {{NullPointerException}} within DB: > {code:java} > 2022-12-30 07:32:46:210 + > [WARNING][node1-srv-worker-1][ClientInboundMessageHandler] Error processing > client request > java.lang.NullPointerException > at > org.apache.ignite.internal.sql.SqlColumnTypeConverter.columnTypeToClass(SqlColumnTypeConverter.java:42) > at > org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.createColumnMetadata(JdbcQueryCursorHandlerImpl.java:162) > at > java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) > at > java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) > at > java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) > at > java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) > at > java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) >
[jira] [Created] (IGNITE-18492) SQL: Inconsistent behavior of LENGTH limit for CHAR data type
Andrey Khitrin created IGNITE-18492: --- Summary: SQL: Inconsistent behavior of LENGTH limit for CHAR data type Key: IGNITE-18492 URL: https://issues.apache.org/jira/browse/IGNITE-18492 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin When I create a table with {{CHAR(length)}} column, it's still possible to insert character values with length greater than given limit. {code:sql} sql-cli> create table xx (pk int primary key, f1 char(5)); Updated 0 rows. sql-cli> insert into xx values (1, 'abcdefgh'); Updated 1 rows. sql-cli> select * from xx; ╔╤══╗ ║ PK │ F1 ║ ╠╪══╣ ║ 1 │ abcdefgh ║ ╚╧══╝ {code} In other hand, length limit is applied when I insert non-char value that's casted into {{CHAR}} implicitly. With the same table as above: {code:sql} sql-cli> insert into xx values (2, 1234567); Updated 1 rows. sql-cli> select * from xx; ╔╤══╗ ║ PK │ F1 ║ ╠╪══╣ ║ 2 │ 12345║ ╟┼──╢ ║ 1 │ abcdefgh ║ ╚╧══╝ {code} Behavior should be consistent: ether strip both values down to the given length limit, or deny to insert too long values in both cases (like it's done in other DBs, like postgresql). -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18488) SQL: SUBSTRING function does not support NULL values
Andrey Khitrin created IGNITE-18488: --- Summary: SQL: SUBSTRING function does not support NULL values Key: IGNITE-18488 URL: https://issues.apache.org/jira/browse/IGNITE-18488 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin ANSI99 SQL specification ("6.18 ") says the following: {code:java} 3) If is specified, then: a) Let C be the value of the , ..., and let S be the value of the . b) If is specified, then let L be the value of ... c) If either C, S, or L is the null value, then the result of the is the null value. {code} So, we should expect the following behavior: {code:sql} SUBSTRING('text' FROM 1 FOR NULL) -> NULL SUBSTRING('text' FROM NULL FOR 2) -> NULL SUBSTRING(NULL FROM 1 FOR 2) -> NULL {code} Instead, we got errors for these queries: {code:sql} sql-cli> SELECT SUBSTRING('text' FROM 1 FOR NULL); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM 1 FOR NULL);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING('text' FROM NULL FOR 2); SQL query execution error Exception while executing query [query=SELECT SUBSTRING('text' FROM NULL FOR 2);]. Error message:From line 1, column 8 to line 1, column 40: Cannot apply 'SUBSTRING' to arguments of type 'SUBSTRING( FROM FOR )'. Supported form(s): 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' 'SUBSTRING( FROM )' 'SUBSTRING( FROM FOR )' sql-cli> SELECT SUBSTRING(NULL FROM 1 FOR 2); (client freezes, no answer at all) {code} *Important*: the last query causes {{NullPointerException}} within DB: {code:java} 2022-12-30 07:32:46:210 + [WARNING][node1-srv-worker-1][ClientInboundMessageHandler] Error processing client request java.lang.NullPointerException at org.apache.ignite.internal.sql.SqlColumnTypeConverter.columnTypeToClass(SqlColumnTypeConverter.java:42) at org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.createColumnMetadata(JdbcQueryCursorHandlerImpl.java:162) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.apache.ignite.client.handler.JdbcQueryCursorHandlerImpl.queryMetadataAsync(JdbcQueryCursorHandlerImpl.java:133) at org.apache.ignite.client.handler.requests.jdbc.ClientJdbcQueryMetadataRequest.process(ClientJdbcQueryMetadataRequest.java:47) at org.apache.ignite.client.handler.ClientInboundMessageHandler.processOperation(ClientInboundMessageHandler.java:454) at org.apache.ignite.client.handler.ClientInboundMessageHandler.processOperation(ClientInboundMessageHandler.java:336) at org.apache.ignite.client.handler.ClientInboundMessageHandler.channelRead(ClientInboundMessageHandler.java:187) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at
[jira] [Commented] (IGNITE-18300) Node cannot properly start after failure in index creation
[ https://issues.apache.org/jira/browse/IGNITE-18300?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17641734#comment-17641734 ] Andrey Khitrin commented on IGNITE-18300: - Succesfully reproduced. # On a fresh DB, create a table and two indices, put some data: {code:sql} sql-cli> CREATE TABLE test_indices (field1 INTEGER PRIMARY KEY, field2 INTEGER, field3 INTEGER); Updated 0 rows. sql-cli> CREATE INDEX ti1 ON test_indices (field2); Updated 0 rows. sql-cli> INSERT INTO test_indices VALUES(1, 1, 1); Updated 1 rows. sql-cli> CREATE INDEX ti2 ON test_indices (field3, field1); Updated 0 rows. sql-cli> INSERT INTO test_indices VALUES(2, 1, 0); Updated 1 rows. sql-cli> SELECT * FROM test_indices; ╔╤╤╗ ║ FIELD1 │ FIELD2 │ FIELD3 ║ ╠╪╪╣ ║ 2 │ 1 │ 0 ║ ╟┼┼╢ ║ 1 │ 1 │ 1 ║ ╚╧╧╝ {code} 2. Exit from SQL console and restart DB (e.g., via `systemctl restart ignite3db.service`). 3. After restart, we got a block > Node cannot properly start after failure in index creation > -- > > Key: IGNITE-18300 > URL: https://issues.apache.org/jira/browse/IGNITE-18300 > Project: Ignite > Issue Type: Bug > Components: ignite-3 >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: sql > Attachments: ignite3-cli.dump, ignite3-db.dump, logs.tgz > > > I play with AI3 beta on a virtual machine (a single node). I tried to create > a SQL index on a table (unsuccessfully), and now I couldn't even work with a > node. > Symptoms: > # ignite3 CLI connects to DB node but cannot execute any command properly. > Because of auto completion, it asks DB for a list of existing tables and > waits for it forever. For end user, it looks like CLI freezes. Probably, > that's a separate issue. > # Ignite3 DB cannot respond to CLI because it's struck in endless waiting. > I don't remember well what caused this issue. Most probably, it happened > because of different `CREATE INDEX` commands I played with before. I've made > thread dumps both for CLI and DB processes, and also attached all exisitng DB > logs (within .tgz file). Hope this helps. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-18300) Node cannot properly start after failure in index creation
[ https://issues.apache.org/jira/browse/IGNITE-18300?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-18300: Summary: Node cannot properly start after failure in index creation (was: Node cannot properly start node after failure in index creation) > Node cannot properly start after failure in index creation > -- > > Key: IGNITE-18300 > URL: https://issues.apache.org/jira/browse/IGNITE-18300 > Project: Ignite > Issue Type: Bug > Components: ignite-3 >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: sql > Attachments: ignite3-cli.dump, ignite3-db.dump, logs.tgz > > > I play with AI3 beta on a virtual machine (a single node). I tried to create > a SQL index on a table (unsuccessfully), and now I couldn't even work with a > node. > Symptoms: > # ignite3 CLI connects to DB node but cannot execute any command properly. > Because of auto completion, it asks DB for a list of existing tables and > waits for it forever. For end user, it looks like CLI freezes. Probably, > that's a separate issue. > # Ignite3 DB cannot respond to CLI because it's struck in endless waiting. > I don't remember well what caused this issue. Most probably, it happened > because of different `CREATE INDEX` commands I played with before. I've made > thread dumps both for CLI and DB processes, and also attached all exisitng DB > logs (within .tgz file). Hope this helps. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18300) Node cannot properly start node after failure in index creation
Andrey Khitrin created IGNITE-18300: --- Summary: Node cannot properly start node after failure in index creation Key: IGNITE-18300 URL: https://issues.apache.org/jira/browse/IGNITE-18300 Project: Ignite Issue Type: Bug Components: ignite-3 Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin Attachments: ignite3-cli.dump, ignite3-db.dump, logs.tgz I play with AI3 beta on a virtual machine (a single node). I tried to create a SQL index on a table (unsuccessfully), and now I couldn't even work with a node. Symptoms: # ignite3 CLI connects to DB node but cannot execute any command properly. Because of auto completion, it asks DB for a list of existing tables and waits for it forever. For end user, it looks like CLI freezes. Probably, that's a separate issue. # Ignite3 DB cannot respond to CLI because it's struck in endless waiting. I don't remember well what caused this issue. Most probably, it happened because of different `CREATE INDEX` commands I played with before. I've made thread dumps both for CLI and DB processes, and also attached all exisitng DB logs (within .tgz file). Hope this helps. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-18218) Cluster initialization should be covered in docs better
[ https://issues.apache.org/jira/browse/IGNITE-18218?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-18218: Description: While playing with AI3 beta1 deb package, I've noticed that 'ignite3db' service doesn't join any cluster after being installed and started. That may be fine from the DB's point of view, but this behavior may not obvious for a mere user. In order to make AI3 ready to work, user needs to run 'ignite3 cluster init ...' first. Unfortunately, this point is not currently covered properly neither in [DEVNOTES.md|https://github.com/apache/ignite-3/blob/main/DEVNOTES.md] nor in [existing docs|https://ignite.apache.org/docs/3.0.0-beta/quick-start/getting-started-guide]. Command 'systemctl status ignite3db.service' says "active (running)", command 'ignite3 node status' shows "state: starting", DB log says "Components started, joining the cluster". Everything seem to work fine, but the next user's step is not obvious here. User may try to open SQL console but it will not work until cluster is initialized. I'm afraid a significant part of newcomers may be discouraged by this behavior. They could be a step close to the final line, but think "it doesn't work with no reason", and refuse to try AI3 anymore. To avoid this, some words about "cluster init" should be added to "Getting started guide" and, probably, to DEVNOTES. was: While playing with AI3 beta1 deb package, I've noticed that 'ignite3db' service doesn't join any cluster after being installed and started. That may be fine from the DB's point of view, but this behavior may not obvious for a mere user. In order to make AI3 ready to work, user needs to run 'ignite3 cluster init ...' first. Unfortunately, this point is not currently covered properly neither in [DEVNOTES.md|https://github.com/apache/ignite-3/blob/main/DEVNOTES.md] nor in [existing docs|https://ignite.apache.org/docs/3.0.0-beta/quick-start/getting-started-guide]. Command 'systemctl status ignite3db.service' says "active (running)", command 'ignite3 node status' shows "state: starting", DB log says "Components started, joining the cluster". Everything seem to work fine, but the next user's step is not obvious here. User may try to open SQL console but it will not work until cluster is initialized. I'm afraid a significant part of newcomers may be discouraged by this behavior. They could be a step close to the final line, but think "it doesn't work with no reason", and refuse to try AI3 anymore. To avoid this, some words about "cluster init" should be added to "Getting started guide" and, probably, to DEVNOTES. > Cluster initialization should be covered in docs better > --- > > Key: IGNITE-18218 > URL: https://issues.apache.org/jira/browse/IGNITE-18218 > Project: Ignite > Issue Type: Improvement > Components: documentation >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > While playing with AI3 beta1 deb package, I've noticed that 'ignite3db' > service doesn't join any cluster after being installed and started. That may > be fine from the DB's point of view, but this behavior may not obvious for a > mere user. In order to make AI3 ready to work, user needs to run 'ignite3 > cluster init ...' first. Unfortunately, this point is not currently covered > properly neither in > [DEVNOTES.md|https://github.com/apache/ignite-3/blob/main/DEVNOTES.md] nor in > [existing > docs|https://ignite.apache.org/docs/3.0.0-beta/quick-start/getting-started-guide]. > Command 'systemctl status ignite3db.service' says "active (running)", > command 'ignite3 node status' shows "state: starting", DB log says > "Components started, joining the cluster". Everything seem to work fine, but > the next user's step is not obvious here. User may try to open SQL console > but it will not work until cluster is initialized. > I'm afraid a significant part of newcomers may be discouraged by this > behavior. They could be a step close to the final line, but think "it doesn't > work with no reason", and refuse to try AI3 anymore. To avoid this, some > words about "cluster init" should be added to "Getting started guide" and, > probably, to DEVNOTES. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18218) Cluster initialization should be covered in docs better
Andrey Khitrin created IGNITE-18218: --- Summary: Cluster initialization should be covered in docs better Key: IGNITE-18218 URL: https://issues.apache.org/jira/browse/IGNITE-18218 Project: Ignite Issue Type: Improvement Components: documentation Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin While playing with AI3 beta1 deb package, I've noticed that 'ignite3db' service doesn't join any cluster after being installed and started. That may be fine from the DB's point of view, but this behavior may not obvious for a mere user. In order to make AI3 ready to work, user needs to run 'ignite3 cluster init ...' first. Unfortunately, this point is not currently covered properly neither in [DEVNOTES.md|https://github.com/apache/ignite-3/blob/main/DEVNOTES.md] nor in [existing docs|https://ignite.apache.org/docs/3.0.0-beta/quick-start/getting-started-guide]. Command 'systemctl status ignite3db.service' says "active (running)", command 'ignite3 node status' shows "state: starting", DB log says "Components started, joining the cluster". Everything seem to work fine, but the next user's step is not obvious here. User may try to open SQL console but it will not work until cluster is initialized. I'm afraid a significant part of newcomers may be discouraged by this behavior. They could be a step close to the final line, but think "it doesn't work with no reason", and refuse to try AI3 anymore. To avoid this, some words about "cluster init" should be added to "Getting started guide" and, probably, to DEVNOTES. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18191) Add specific Java launch arguments for Java 15+ for .NET platform
Andrey Khitrin created IGNITE-18191: --- Summary: Add specific Java launch arguments for Java 15+ for .NET platform Key: IGNITE-18191 URL: https://issues.apache.org/jira/browse/IGNITE-18191 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Andrey Khitrin Looks like .Net platform and examples do not support recent versions of Java. It requires a special set of JVM arguments to run AI on Java 15+ (see [jvmdefaults.sh|https://github.com/apache/ignite/blob/master/bin/include/jvmdefaults.sh]), but .Net runner only contains checks and arguments for Java 9+ (see [Jmv.cs|https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/Jni/Jvm.cs]). Looks like new arguments should be added here. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18175) SQL: value out of type bounds is converted into 0 during implicit casting
Andrey Khitrin created IGNITE-18175: --- Summary: SQL: value out of type bounds is converted into 0 during implicit casting Key: IGNITE-18175 URL: https://issues.apache.org/jira/browse/IGNITE-18175 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin A simple scenario: {code:sql} create table test_e011_INTEGER_from (key_field INT PRIMARY KEY, field1 INTEGER); insert into test_e011_INTEGER_from (key_field, field1) values (1, -2147483648); create table test_e011_SMALLINT (key_field INT PRIMARY KEY, field1_SMALLINT SMALLINT); insert into test_e011_SMALLINT (key_field, field1_SMALLINT) values (1, (select field1 from test_e011_INTEGER_from where key_field=1)); select * from test_e011_SMALLINT; {code} I expect it either to return '1, null' (like in postrgres or sqlite3) or to raise an error on insert (like in GG8) as value of -2147483648 is out of bounds for SMALLINT data type. Instead, '1, 0' is stored within test_e011_SMALLINT table and returned from select. In other words, -2147483648 was converted into 0. Such behavior seems as incorrect. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18174) SQL: implement expanded NULL predicate
Andrey Khitrin created IGNITE-18174: --- Summary: SQL: implement expanded NULL predicate Key: IGNITE-18174 URL: https://issues.apache.org/jira/browse/IGNITE-18174 Project: Ignite Issue Type: Improvement Components: sql Reporter: Andrey Khitrin "Expanded NULL predicate" is referenced in SQL standard as F481 feature. It allows to use something other than a column reference as row value expression. The following query works in AI2: {code:sql} create table tmp_simple_table (key_field INT PRIMARY KEY,x INT,y INT,z INT); insert into tmp_simple_table (key_field,x,y,z) values (1, 1,1,1); insert into tmp_simple_table (key_field,x,y,z) values (2, 2,2,2); insert into tmp_simple_table (key_field,x,y,z) values (3, null,3,null); insert into tmp_simple_table (key_field,x,y,z) values (4, 4,null,null); insert into tmp_simple_table (key_field,x,y,z) values (5, null,null,null); select x, y, z from tmp_simple_table t where (select x, z from tmp_simple_table where x=t.x and y=t.y and z=t.z) is not NULL; -- expanded NULL predicate {code} But in AI3 beta1 it's not implemented yet. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18173) SQL: implement EVERY and SOME aggregate functions
Andrey Khitrin created IGNITE-18173: --- Summary: SQL: implement EVERY and SOME aggregate functions Key: IGNITE-18173 URL: https://issues.apache.org/jira/browse/IGNITE-18173 Project: Ignite Issue Type: Improvement Components: sql Reporter: Andrey Khitrin Aggregate functions EVERY and SOME are part of SQL standard. Unfortunately, they're not implemented in AI3 beta1 yet. Could you please implement them? In AI2, they work in the following manner: {code:sql} create table tmp_table_age_name_wage (key_field INT PRIMARY KEY,AGE INT,field1 VARCHAR,field2 INT); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (1, 42,'John',10); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (2, 43,'Jack',5); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (3, 42,'Jen',3); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (4, 42,'Jim',7); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (5, 41,'Jess',3); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (6, 50,'Joe',4); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (7, 43,'Jeff',2); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (8, 32,'Joel',8); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (9, 33,'Joe',3); insert into tmp_table_age_name_wage (key_field,AGE,field1,field2) values (10, 41,'Jill',9); SELECT EVERY(AGE > 20) FROM tmp_table_age_name_wage;--> true SELECT EVERY(AGE > 40) FROM tmp_table_age_name_wage;--> false SELECT SOME(field2 = 9) FROM tmp_table_age_name_wage; --> true SELECT SOME(field2 <> 9) FROM tmp_table_age_name_wage; --> true {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18168) SQL: incorrect sum of several FLOAT values
Andrey Khitrin created IGNITE-18168: --- Summary: SQL: incorrect sum of several FLOAT values Key: IGNITE-18168 URL: https://issues.apache.org/jira/browse/IGNITE-18168 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin This behavior seems incorrect: {code:sql} create table xx (key_field INT PRIMARY KEY,field2 FLOAT); insert into xx (key_field,field2) values (1, 10); insert into xx (key_field,field2) values (2, 5); insert into xx (key_field,field2) values (3, 3); insert into xx (key_field,field2) values (4, 5.1); insert into xx (key_field,field2) values (5, 3); insert into xx (key_field,field2) values (6, 4); insert into xx (key_field,field2) values (7, 2); insert into xx (key_field,field2) values (8, 8); insert into xx (key_field,field2) values (9, 3); insert into xx (key_field,field2) values (10,9); insert into xx (key_field,field2) values (11,9); SELECT SUM(field2) FROM xx; --> returns 61.1015625, expected 61.1 {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18167) SQL: incorrect NULLIF behavior
Andrey Khitrin created IGNITE-18167: --- Summary: SQL: incorrect NULLIF behavior Key: IGNITE-18167 URL: https://issues.apache.org/jira/browse/IGNITE-18167 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin A SQL spec says the following: ??NULLIF (V1 , V2) is equivalent to the following : CASE WHEN V1 = V2 THEN NULL ELSE V1 END?? When I try to run it, the rule above is true only for the simplest cases. {code:sql} select NULLIF(25, 25); --> null(OK) select NULLIF(24, 25); --> 24 (OK) select NULLIF('test', 'abc'); --> 'test' (OK) select NULLIF('test', 'test'); --> '' (should be null!) select NULLIF(24 + 1, 26 - 1); --> error IGN-SQL-27(should be null!) {code} Probably, there are two defects: one is for wrong return value in case of textual data, and another one is for error when expression within NULLIF is used. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18166) SQL: LIKE predicate is not supported for BINARY data
Andrey Khitrin created IGNITE-18166: --- Summary: SQL: LIKE predicate is not supported for BINARY data Key: IGNITE-18166 URL: https://issues.apache.org/jira/browse/IGNITE-18166 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin A 'T022' feature in SQL standard allows to use LIKE predicate for BINARY data. Unfortunately, it is not supported in AI3 beta1: {code:sql} create table tmp_table_binary (key_field INT PRIMARY KEY,field1 BINARY); INSERT INTO tmp_table_binary (key_field, field1) values(1, '00ffaa'); INSERT INTO tmp_table_binary (key_field, field1) values(2, 'ffcc'); select * from tmp_table_binary where field1 like '%ff%'; -- expected to return both rows select * from tmp_table_binary where field1 like '_f%'; -- expected to return 'ffcc' select * from tmp_table_binary where field1 like '_fc_'; -- expected to return 'ffcc' {code} Instead of returning data, all queries show the following error: {code:java} Error: Exception while executing query [query=select * from tmp_table_binary where field1 like '%ff%']. Error message:From line 1, column 38 to line 1, column 55: Cannot apply 'LIKE' to arguments of type 'LIKE(, )'. Supported form(s): 'LIKE(, , )' (state=5,code=0) java.sql.SQLException: Exception while executing query [query=select * from tmp_table_binary where field1 like '%ff%']. Error message:From line 1, column 38 to line 1, column 55: Cannot apply 'LIKE' to arguments of type 'LIKE(, )'. Supported form(s): 'LIKE(, , )' at org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode.createJdbcSqlException(IgniteQueryErrorCode.java:57) at org.apache.ignite.internal.jdbc.JdbcStatement.execute0(JdbcStatement.java:148) at org.apache.ignite.internal.jdbc.JdbcStatement.execute(JdbcStatement.java:341) ... {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (IGNITE-17997) Whitespaces at the end are ignored during string comparison
[ https://issues.apache.org/jira/browse/IGNITE-17997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17625538#comment-17625538 ] Andrey Khitrin commented on IGNITE-17997: - Thank you, I see expected behavior with `VARCHAR`: {code:sql} sql-cli> select cast('a' AS VARCHAR) = cast('a' AS VARCHAR) as test; ╔═╗ ║ TEST║ ╠═╣ ║ true║ ╚═╝ sql-cli> select cast('a' AS VARCHAR) = cast('a ' AS VARCHAR) as test; ╔═╗ ║ TEST║ ╠═╣ ║ false ║ ╚═╝ {code} > Whitespaces at the end are ignored during string comparison > --- > > Key: IGNITE-17997 > URL: https://issues.apache.org/jira/browse/IGNITE-17997 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > > In 3.0.0-Beta-1: > {code:java} > sql-cli> select 'a' = 'a' as t1, 'a' = 'b' as t2, 'a' = 'a ' as t3, 'a' = ' > a' as t4; > ╔══╤═══╤══╤═══╗ > ║ T1 │ T2 │ T3 │ T4 ║ > ╠══╪═══╪══╪═══╣ > ║ true │ false │ true │ false ║ > ╚══╧═══╧══╧═══╝ > {code} > Tests T1, T2, and T4 show correct behavior. But in test T2 we see that string > 'a' is considered being equal to string 'a ' (same string but with > arbitrary amount of whitespaces at the end). This is incorrect behavior. > This issue may have the same nature as IGNITE-17996, but it's just a > hypothesis. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-18001) Ignite node may become unavailable after some play with SQL
Andrey Khitrin created IGNITE-18001: --- Summary: Ignite node may become unavailable after some play with SQL Key: IGNITE-18001 URL: https://issues.apache.org/jira/browse/IGNITE-18001 Project: Ignite Issue Type: Bug Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin Attachments: ignite3db-0.log, ignite3db-1.log Steps to reproduce: # Start AI3 node, init cluster # Connect to node via Ignite3 CLI # Open SQL console in Ignite3 CLI # Play with SQL queries: create tables, invoke select queries, drop tables, so on. Probably, this step is not needed. Probably, it may be important to perform some queries with errors. # Wait for some time (30-60 mins) having SQL console open. # Try to execute new query after the pause. It {*}hangs{*}. In DB log, a lot of the following errors occur (some of them could occur even before step 6 above): {code} 2022-10-27 18:15:57:391 +0400 [WARNING][%defaultNode%Raft-Group-Client-11][RaftGroupServiceImpl] Recoverable error duri ng the request type=ActionRequestImpl occurred (will be retried on the randomly selected node): java.util.concurrent.TimeoutException at java.base/java.util.concurrent.CompletableFuture$Timeout.run(CompletableFuture.java:2792) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecut or.java:304) 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:829) 2022-10-27 18:17:21:376 +0400 [INFO][%defaultNode%checkpoint-thread-1][Checkpoint] Skipping checkpoint (no pages were m odified) [checkpointBeforeWriteLockTime=0ms, checkpointWriteLockWait=0ms, checkpointListenersExecuteTime=0ms, checkpoin tWriteLockHoldTime=0ms, reason='timeout'] {code} After attempt to restart node (`./bin/ignite3db.sh stop && ./bin/ignite3db.sh start`) another stacktrace occurs in log: {code}2022-10-27 18:24:06:489 +0400 [INFO][ForkJoinPool.commonPool-worker-9][ClientHandlerModule] Thin client protocol started successfully[port=10800] 2022-10-27 18:24:06:490 +0400 [INFO][ForkJoinPool.commonPool-worker-9][IgniteImpl] Components started, performing recovery 2022-10-27 18:24:06:868 +0400 [INFO][ForkJoinPool.commonPool-worker-9][ConfigurationRegistry] Failed to notify configuration listener java.util.NoSuchElementException: table.tables.ee9c42e0-9b96-4164-b13b-8bec99d3171a.assignments at org.apache.ignite.internal.configuration.util.ConfigurationUtil.findEx(ConfigurationUtil.java:852) at org.apache.ignite.internal.configuration.ConfigurationChanger.getLatest(ConfigurationChanger.java:439) at org.apache.ignite.internal.configuration.direct.DirectPropertyProxy.value(DirectPropertyProxy.java:65) at org.apache.ignite.internal.table.distributed.TableManager.updateAssignmentInternal(TableManager.java:652) at org.apache.ignite.internal.table.distributed.TableManager.onUpdateAssignments(TableManager.java:616) at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier.notifyPublicListeners(ConfigurationNotifier.java:492) at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier$2.visitLeafNode(ConfigurationNotifier.java:374) at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier$2.visitLeafNode(ConfigurationNotifier.java:370) at org.apache.ignite.internal.schema.configuration.TableNode.traverseChildren(Unknown Source) at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier.notifyListeners(ConfigurationNotifier.java:370) at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier$2.visitNamedListNode(ConfigurationNotifier.java:460) at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier$2.visitNamedListNode(ConfigurationNotifier.java:370) at org.apache.ignite.internal.schema.configuration.TablesNode.traverseChildren(Unknown Source) at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier.notifyListeners(ConfigurationNotifier.java:370) at org.apache.ignite.internal.configuration.notifications.ConfigurationNotifier.notifyListeners(ConfigurationNotifier.java:88) at org.apache.ignite.internal.configuration.ConfigurationRegistry$2.visitInnerNode(ConfigurationRegistry.java:310) at org.apache.ignite.internal.configuration.ConfigurationRegistry$2.visitInnerNode(ConfigurationRegistry.java:292) at
[jira] [Commented] (IGNITE-17997) Whitespaces at the end are ignored during string comparison
[ https://issues.apache.org/jira/browse/IGNITE-17997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17625149#comment-17625149 ] Andrey Khitrin commented on IGNITE-17997: - Thank you. I've forgot about collations. As I can see, the same behavior could be achieved in other database engines, depending on data type and/or query options. E.g., in [sqlite3|https://www.sqlite.org/datatype3.html#collation]: {code:sql} sqlite> SELECT 'a' = 'a '; 0-- false sqlite> SELECT 'a' = 'a ' COLLATE RTRIM; 1-- true {code} In that case, I hardly can treat this behavior as a bug. At most, it's a different default, not obvious though. [~korlov] what would you say about IGNITE-17996? Does this behavior obey the same rules? Also, are there plans to support different collation schemes in the future? > Whitespaces at the end are ignored during string comparison > --- > > Key: IGNITE-17997 > URL: https://issues.apache.org/jira/browse/IGNITE-17997 > Project: Ignite > Issue Type: Bug > Components: sql >Affects Versions: 3.0.0-beta1 >Reporter: Andrey Khitrin >Priority: Major > > In 3.0.0-Beta-1: > {code:java} > sql-cli> select 'a' = 'a' as t1, 'a' = 'b' as t2, 'a' = 'a ' as t3, 'a' = ' > a' as t4; > ╔══╤═══╤══╤═══╗ > ║ T1 │ T2 │ T3 │ T4 ║ > ╠══╪═══╪══╪═══╣ > ║ true │ false │ true │ false ║ > ╚══╧═══╧══╧═══╝ > {code} > Tests T1, T2, and T4 show correct behavior. But in test T2 we see that string > 'a' is considered being equal to string 'a ' (same string but with > arbitrary amount of whitespaces at the end). This is incorrect behavior. > This issue may have the same nature as IGNITE-17996, but it's just a > hypothesis. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-17997) Whitespaces at the end are ignored during string comparison
Andrey Khitrin created IGNITE-17997: --- Summary: Whitespaces at the end are ignored during string comparison Key: IGNITE-17997 URL: https://issues.apache.org/jira/browse/IGNITE-17997 Project: Ignite Issue Type: Bug Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin In 3.0.0-Beta-1: {code:java} sql-cli> select 'a' = 'a' as t1, 'a' = 'b' as t2, 'a' = 'a ' as t3, 'a' = ' a' as t4; ╔══╤═══╤══╤═══╗ ║ T1 │ T2 │ T3 │ T4 ║ ╠══╪═══╪══╪═══╣ ║ true │ false │ true │ false ║ ╚══╧═══╧══╧═══╝ {code} Tests T1, T2, and T4 show correct behavior. But in test T2 we see that string 'a' is considered being equal to string 'a ' (same string but with arbitrary amount of whitespaces at the end). This is incorrect behavior. This issue may have the same nature as IGNITE-17996, but it's just a hypothesis. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-17996) Strange behavior of SQL CASE expression
Andrey Khitrin created IGNITE-17996: --- Summary: Strange behavior of SQL CASE expression Key: IGNITE-17996 URL: https://issues.apache.org/jira/browse/IGNITE-17996 Project: Ignite Issue Type: Bug Affects Versions: 3.0.0-beta1 Reporter: Andrey Khitrin I observe strange behavior in the next scenario: {code:java} sql-cli> create table xx (f1 int primary key); Updated 0 rows. sql-cli> insert into xx values (1); Updated 1 rows. sql-cli> insert into xx values (2); Updated 1 rows. sql-cli> select f1, case when f1 < 2 then 'foo' else 'barbar' end as s, length(case when f1 < 2 then 'foo' else 'barbar' end) as ls from xx; ╔╤╤╗ ║ F1 │ S │ LS ║ ╠╪╪╣ ║ 2 │ barbar │ 6 ║ ╟┼┼╢ ║ 1 │ foo │ 6 ║ ╚╧╧╝ {code} I expect `CASE` to return 'foo' value, but de-facto it returns 'foo ' ('foo' with 3 whitespaces at the end). Seems like this should be fixed. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-17953) NPE and closed connection on some malformed SQL requests using third-party SQL clients
Andrey Khitrin created IGNITE-17953: --- Summary: NPE and closed connection on some malformed SQL requests using third-party SQL clients Key: IGNITE-17953 URL: https://issues.apache.org/jira/browse/IGNITE-17953 Project: Ignite Issue Type: Bug Components: sql Reporter: Andrey Khitrin Fix For: 3.0.0-beta1 I try to run different SQL queries in AI3 using [SqlLine|https://github.com/julianhyde/sqlline] tool and fresh ignite-client JAR downloaded from CI. I tried both correct and some incorrect SQL queries. And it looks like some incorrect SQL queries lead to irrecoverable error on the client side. The stack trace is the following: {code:java} Oct 21, 2022 4:57:02 PM io.netty.channel.DefaultChannelPipeline onUnhandledInboundException WARNING: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception. java.lang.NullPointerException at org.apache.ignite.lang.ErrorGroup.errorMessage(ErrorGroup.java:193) at org.apache.ignite.lang.IgniteException.(IgniteException.java:190) at org.apache.ignite.internal.client.TcpClientChannel.readError(TcpClientChannel.java:336) at org.apache.ignite.internal.client.TcpClientChannel.processNextMessage(TcpClientChannel.java:301) at org.apache.ignite.internal.client.TcpClientChannel.onMessage(TcpClientChannel.java:160) at org.apache.ignite.internal.client.io.netty.NettyClientConnection.onMessage(NettyClientConnection.java:94) at org.apache.ignite.internal.client.io.netty.NettyClientMessageHandler.channelRead(NettyClientMessageHandler.java:34) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:829) Oct 21, 2022 4:58:07 PM io.netty.channel.DefaultChannelPipeline onUnhandledInboundException WARNING: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception. java.io.IOException: Connection reset by peer at java.base/sun.nio.ch.FileDispatcherImpl.read0(Native Method) at java.base/sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) at java.base/sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:276) at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:233) at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:223) at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:356) at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:258) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:357) at
[jira] [Created] (IGNITE-17174) Incomplete documentation in examples module
Andrey Khitrin created IGNITE-17174: --- Summary: Incomplete documentation in examples module Key: IGNITE-17174 URL: https://issues.apache.org/jira/browse/IGNITE-17174 Project: Ignite Issue Type: Bug Components: examples Affects Versions: 3.0.0-alpha5 Reporter: Andrey Khitrin In AI3 Alpha 5, there are few documentation issues related to examples: # Some examples do not have description in `README.md`: KeyValueViewPojoExample, RecordViewPojoExample, TransactionsExample. # One example doesn't contain run instruction in Javadoc: SqlApiExample # Class StorageEngineExample has misleading name. It's not a runnable example (with main() method) but it's named like other examples. -- This message was sent by Atlassian Jira (v8.20.7#820007)
[jira] [Created] (IGNITE-17173) Examples module cannot be built due to SNAPSHOT maven dependencies
Andrey Khitrin created IGNITE-17173: --- Summary: Examples module cannot be built due to SNAPSHOT maven dependencies Key: IGNITE-17173 URL: https://issues.apache.org/jira/browse/IGNITE-17173 Project: Ignite Issue Type: Bug Components: examples Affects Versions: 3.0.0-alpha5 Reporter: Andrey Khitrin Currently, `examples` module (in git tree) depends on `-SNAPSHOT` versions of Apache Ignite. This easily causes inability to run them in a way described in README. A mere user may want to run examples in the following way: # Clone source code from Github. # Open examples module in IDE # Try to run examples using instructions provided Unfortunately, this will not work because of `-SNAPSHOT` versioning of examples module. Snapshot builds of AI3 modules that examples module depends on are not published on any publicly accessible repository. Hence, instead of working example, user could only get a distracting compilation error. In theory, there could be 2 ways to deal with it: # Only use examples from distribution ZIP file. This version doesn't have `-SNAPSHOT` dependencies, so it could be built easily. Alas, this way is not quite obvious for one who get used to work with OSS via GitHub primarily. In addition, this way is not available for pre-release testing. # Build all dependencies (e.g., a whole AI3) from the source locally. Again, it's not documented, and it could really take significant time. And it's still far from the "{_}Import the examples project into your IDE{_}" claim. Something should be done with it. Possibly, examples module should have its own life cycle (maybe even in a separate repository). Possibly, few additional instructions should be written for solving typical user problems described above. -- This message was sent by Atlassian Jira (v8.20.7#820007)
[jira] [Updated] (IGNITE-17129) cli tool dosn’t expand tilde in a config path
[ https://issues.apache.org/jira/browse/IGNITE-17129?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrey Khitrin updated IGNITE-17129: Labels: ignite-3 (was: ) > cli tool dosn’t expand tilde in a config path > -- > > Key: IGNITE-17129 > URL: https://issues.apache.org/jira/browse/IGNITE-17129 > Project: Ignite > Issue Type: Bug >Affects Versions: 3.0.0-alpha5 >Reporter: Andrey Khitrin >Priority: Major > Labels: ignite-3 > > Many Linux users use tilde ({{{}~{}}}) as a shortcut for a user's home > directory. CLI tool could expand environment variables (like {{{}$HOME{}}}) > in config path, but fails to expand tilde. > An example: > {code:java} > $ ./ignite node start > --config=~/work/apache/ignite-3/examples/config/ignite-config.json > my-first-node > Starting a new Ignite node... > Can't start the node. Read logs for details: > /home/zloddey/opt/ai3/ignite-log/my-first-node.log > $ cat /home/zloddey/opt/ai3/ignite-log/my-first-node.log > Exception in thread "main" class org.apache.ignite.lang.IgniteException: > Unable to read user specific configuration. > at > org.apache.ignite.internal.app.IgnitionImpl.start(IgnitionImpl.java:97) > at org.apache.ignite.IgnitionManager.start(IgnitionManager.java:105) > at > org.apache.ignite.app.IgniteCliRunner.start(IgniteCliRunner.java:109) > at org.apache.ignite.app.IgniteCliRunner.main(IgniteCliRunner.java:44) > Caused by: java.nio.file.NoSuchFileException: > /home/zloddey/opt/ai3/~/work/apache/ignite-3/examples/config/ignite-config.json > at > java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) > at > java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) > at > java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) > at > java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) > at java.base/java.nio.file.Files.newByteChannel(Files.java:371) > at java.base/java.nio.file.Files.newByteChannel(Files.java:422) > at java.base/java.nio.file.Files.readAllBytes(Files.java:3206) > at java.base/java.nio.file.Files.readString(Files.java:3284) > at java.base/java.nio.file.Files.readString(Files.java:3243) > at > org.apache.ignite.internal.app.IgnitionImpl.start(IgnitionImpl.java:92) > ... 3 more > {code} > When I use {{/home/zloddey}} or {{$HOME}} instead of tilde, it works fine. -- This message was sent by Atlassian Jira (v8.20.7#820007)
[jira] [Created] (IGNITE-17129) cli tool dosn’t expand tilde in a config path
Andrey Khitrin created IGNITE-17129: --- Summary: cli tool dosn’t expand tilde in a config path Key: IGNITE-17129 URL: https://issues.apache.org/jira/browse/IGNITE-17129 Project: Ignite Issue Type: Bug Affects Versions: 3.0.0-alpha5 Reporter: Andrey Khitrin Many Linux users use tilde ({{{}~{}}}) as a shortcut for a user's home directory. CLI tool could expand environment variables (like {{{}$HOME{}}}) in config path, but fails to expand tilde. An example: {code:java} $ ./ignite node start --config=~/work/apache/ignite-3/examples/config/ignite-config.json my-first-node Starting a new Ignite node... Can't start the node. Read logs for details: /home/zloddey/opt/ai3/ignite-log/my-first-node.log $ cat /home/zloddey/opt/ai3/ignite-log/my-first-node.log Exception in thread "main" class org.apache.ignite.lang.IgniteException: Unable to read user specific configuration. at org.apache.ignite.internal.app.IgnitionImpl.start(IgnitionImpl.java:97) at org.apache.ignite.IgnitionManager.start(IgnitionManager.java:105) at org.apache.ignite.app.IgniteCliRunner.start(IgniteCliRunner.java:109) at org.apache.ignite.app.IgniteCliRunner.main(IgniteCliRunner.java:44) Caused by: java.nio.file.NoSuchFileException: /home/zloddey/opt/ai3/~/work/apache/ignite-3/examples/config/ignite-config.json at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) at java.base/java.nio.file.Files.newByteChannel(Files.java:371) at java.base/java.nio.file.Files.newByteChannel(Files.java:422) at java.base/java.nio.file.Files.readAllBytes(Files.java:3206) at java.base/java.nio.file.Files.readString(Files.java:3284) at java.base/java.nio.file.Files.readString(Files.java:3243) at org.apache.ignite.internal.app.IgnitionImpl.start(IgnitionImpl.java:92) ... 3 more {code} When I use {{/home/zloddey}} or {{$HOME}} instead of tilde, it works fine. -- This message was sent by Atlassian Jira (v8.20.7#820007)
[jira] [Commented] (IGNITE-17088) SQL API: Add examples.
[ https://issues.apache.org/jira/browse/IGNITE-17088?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17551125#comment-17551125 ] Andrey Khitrin commented on IGNITE-17088: - Hi! I've tried to run this example and found it failing with {{UnsupportedOperationException}} (due to IGNITE-17057 probably). Is it OK to have a failing example in Alpha release? > SQL API: Add examples. > -- > > Key: IGNITE-17088 > URL: https://issues.apache.org/jira/browse/IGNITE-17088 > Project: Ignite > Issue Type: Improvement > Components: sql >Reporter: Andrey Mashenkov >Assignee: Andrey Mashenkov >Priority: Major > Labels: ignite-3 > Fix For: 3.0.0-alpha5 > > Time Spent: 10m > Remaining Estimate: 0h > > Add examples of using SQL API. -- This message was sent by Atlassian Jira (v8.20.7#820007)
[jira] [Created] (IGNITE-17128) PersistentPageMemoryStorageExample cannot be run twice
Andrey Khitrin created IGNITE-17128: --- Summary: PersistentPageMemoryStorageExample cannot be run twice Key: IGNITE-17128 URL: https://issues.apache.org/jira/browse/IGNITE-17128 Project: Ignite Issue Type: Bug Components: examples Affects Versions: 3.0.0-alpha5 Reporter: Andrey Khitrin {*}Issue{*}: example PersistentPageMemoryStorageExample cannot be run twice. At the first attempt it runs fine. But at the second attempt, it fails with the following exception: {code:java} Exception in thread "main" java.sql.SQLException: Exception while executing query INSERT INTO ACCOUNTS (ACCOUNT_ID, FIRST_NAME, LAST_NAME, BALANCE) values (?, ?, ?, ?). Error message: java.util.concurrent.CompletionException: class org.apache.ignite.lang.IgniteException: Failed to INSERT some keys because they are already in cache. [rows=[Row[1, John, Doe, 1000.0]]] 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.uniHandle(CompletableFuture.java:932) at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088) at org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.lambda$closeAsync$0(AsyncRootNode.java:194) at java.base/java.util.concurrent.LinkedBlockingQueue.forEachFrom(LinkedBlockingQueue.java:1010) at java.base/java.util.concurrent.LinkedBlockingQueue.forEach(LinkedBlockingQueue.java:979) at org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.closeAsync(AsyncRootNode.java:194) at org.apache.ignite.internal.sql.engine.exec.rel.AsyncRootNode.onError(AsyncRootNode.java:149) at org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:157) at org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:157) at org.apache.ignite.internal.sql.engine.exec.rel.AbstractNode.onError(AbstractNode.java:157) at org.apache.ignite.internal.sql.engine.exec.ExecutionContext.lambda$execute$0(ExecutionContext.java:298) at org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:78) 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:829) Caused by: class org.apache.ignite.lang.IgniteException: Failed to INSERT some keys because they are already in cache. [rows=[Row[1, John, Doe, 1000.0]]] at org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.lambda$requestNextAsync$0(AsyncSqlCursorImpl.java:74) at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930) ... 16 more Caused by: class org.apache.ignite.lang.IgniteInternalException: Failed to INSERT some keys because they are already in cache. [rows=[Row[1, John, Doe, 1000.0]]] at org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.conflictKeysException(ModifyNode.java:256) at org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.flushTuples(ModifyNode.java:233) at org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.tryEnd(ModifyNode.java:175) at org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.end(ModifyNode.java:148) at org.apache.ignite.internal.sql.engine.exec.rel.ProjectNode.end(ProjectNode.java:81) at org.apache.ignite.internal.sql.engine.exec.rel.ScanNode.push(ScanNode.java:132) at org.apache.ignite.internal.sql.engine.exec.ExecutionContext.lambda$execute$0(ExecutionContext.java:295) ... 4 more at org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode.createJdbcSqlException(IgniteQueryErrorCode.java:57) at org.apache.ignite.internal.jdbc.JdbcStatement.execute0(JdbcStatement.java:147) at org.apache.ignite.internal.jdbc.JdbcPreparedStatement.executeWithArguments(JdbcPreparedStatement.java:657) at org.apache.ignite.internal.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:136) at org.apache.ignite.example.storage.PersistentPageMemoryStorageExample.main(PersistentPageMemoryStorageExample.java:105)Process finished with exit code 1 {code} This could be mitigated by re-creation of ignite working environment, but I'm not sure whether this behavior is desired. -- This message was sent by Atlassian Jira (v8.20.7#820007)