[
https://issues.apache.org/jira/browse/IGNITE-21172?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrey Mashenkov updated IGNITE-21172:
--------------------------------------
Description:
Run the following test (add to ItTablesApiTest):
{code}
@Test
public void useAfterDrop() {
Ignite ignite0 = clusterNodes.get(0);
Table tbl = createTable(ignite0, TABLE_NAME);
RecordView<Tuple> view = tbl.recordView();
sql(ignite0, "DROP TABLE " + TABLE_NAME);
view.insert(null, Tuple.create().set("key", 1L).set("valInt",
1).set("valStr", "1"));
}
{code}
Result:
{code}
org.apache.ignite.lang.IgniteException: IGN-CMN-65535
TraceId:2292b265-aa9f-4ba4-a8d0-8ea93a2101ef
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:117)
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.lambda$convertToPublicFuture$2(IgniteExceptionMapperUtil.java:132)
at
java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
at
java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:946)
at
java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2272)
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.convertToPublicFuture(IgniteExceptionMapperUtil.java:130)
at
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:127)
at
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:102)
at
org.apache.ignite.internal.table.RecordBinaryViewImpl.insertAsync(RecordBinaryViewImpl.java:168)
at
org.apache.ignite.internal.table.RecordBinaryViewImpl.insert(RecordBinaryViewImpl.java:160)
at
org.apache.ignite.internal.table.RecordBinaryViewImpl.insert(RecordBinaryViewImpl.java:47)
at
org.apache.ignite.internal.runner.app.ItTablesApiTest.useAfterDrop(ItTablesApiTest.java:164)
Caused by: java.lang.NullPointerException
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:2100)
at
org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.schemaVersionAt(SchemaVersionsImpl.java:52)
at
org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.schemaVersionAtNow(SchemaVersionsImpl.java:68)
at
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:107)
... 75 more
{code}
was:
Run the following test with *disabled assertions* (add to ItTablesApiTest):
{code}
@Test
public void useAfterDrop() {
Ignite ignite0 = clusterNodes.get(0);
Table tbl = createTable(ignite0, TABLE_NAME);
RecordView<Tuple> view = tbl.recordView();
sql(ignite0, "DROP TABLE " + TABLE_NAME);
view.insert(null, Tuple.create().set("key", 1L).set("valInt",
1).set("valStr", "1"));
}
{code}
Result:
{code}
org.apache.ignite.lang.IgniteException: IGN-CMN-65535
TraceId:2292b265-aa9f-4ba4-a8d0-8ea93a2101ef
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:117)
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.lambda$convertToPublicFuture$2(IgniteExceptionMapperUtil.java:132)
at
java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
at
java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:946)
at
java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2272)
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.convertToPublicFuture(IgniteExceptionMapperUtil.java:130)
at
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:127)
at
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:102)
at
org.apache.ignite.internal.table.RecordBinaryViewImpl.insertAsync(RecordBinaryViewImpl.java:168)
at
org.apache.ignite.internal.table.RecordBinaryViewImpl.insert(RecordBinaryViewImpl.java:160)
at
org.apache.ignite.internal.table.RecordBinaryViewImpl.insert(RecordBinaryViewImpl.java:47)
at
org.apache.ignite.internal.runner.app.ItTablesApiTest.useAfterDrop(ItTablesApiTest.java:164)
Caused by: java.lang.NullPointerException
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:2100)
at
org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.schemaVersionAt(SchemaVersionsImpl.java:52)
at
org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.schemaVersionAtNow(SchemaVersionsImpl.java:68)
at
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:107)
... 75 more
{code}
With enabled assertions there is an unfriendly exception:
{code}
org.apache.ignite.lang.IgniteException: IGN-CMN-65535
TraceId:f84af536-d752-4887-8096-b15d6e0a0efc No table in the catalog after
schema sync, table 5, ts HybridTimestamp [physical=2023-12-28 11:20:59:574
+0200, logical=0, composite=111657304691441664]
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:88)
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.lambda$convertToPublicFuture$2(IgniteExceptionMapperUtil.java:132)
at
java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
at
java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:946)
at
java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2272)
at
org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.convertToPublicFuture(IgniteExceptionMapperUtil.java:130)
at
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:127)
at
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:102)
at
org.apache.ignite.internal.table.RecordBinaryViewImpl.insertAsync(RecordBinaryViewImpl.java:168)
at
org.apache.ignite.internal.table.RecordBinaryViewImpl.insert(RecordBinaryViewImpl.java:160)
at
org.apache.ignite.internal.table.RecordBinaryViewImpl.insert(RecordBinaryViewImpl.java:47)
at
org.apache.ignite.internal.runner.app.ItTablesApiTest.useAfterDrop(ItTablesApiTest.java:164)
Caused by: java.lang.AssertionError: No table in the catalog after schema sync,
table 5, ts HybridTimestamp [physical=2023-12-28 11:20:59:574 +0200, logical=0,
composite=111657304691441664]
at
org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.lambda$tableDescriptor$0(SchemaVersionsImpl.java:60)
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:2100)
at
org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.tableDescriptor(SchemaVersionsImpl.java:57)
at
org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.schemaVersionAt(SchemaVersionsImpl.java:51)
at
org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.schemaVersionAtNow(SchemaVersionsImpl.java:68)
at
org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:107)
... 75 more
{code}
> Table operation fails with invalid exception after table drop
> -------------------------------------------------------------
>
> Key: IGNITE-21172
> URL: https://issues.apache.org/jira/browse/IGNITE-21172
> Project: Ignite
> Issue Type: Bug
> Reporter: Pavel Tupitsyn
> Assignee: Andrey Mashenkov
> Priority: Major
> Labels: ignite-3
> Fix For: 3.0.0-beta2
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Run the following test (add to ItTablesApiTest):
> {code}
> @Test
> public void useAfterDrop() {
> Ignite ignite0 = clusterNodes.get(0);
> Table tbl = createTable(ignite0, TABLE_NAME);
> RecordView<Tuple> view = tbl.recordView();
> sql(ignite0, "DROP TABLE " + TABLE_NAME);
> view.insert(null, Tuple.create().set("key", 1L).set("valInt",
> 1).set("valStr", "1"));
> }
> {code}
> Result:
> {code}
> org.apache.ignite.lang.IgniteException: IGN-CMN-65535
> TraceId:2292b265-aa9f-4ba4-a8d0-8ea93a2101ef
> at
> org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:117)
> at
> org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.lambda$convertToPublicFuture$2(IgniteExceptionMapperUtil.java:132)
> at
> java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
> at
> java.base/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:946)
> at
> java.base/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2272)
> at
> org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.convertToPublicFuture(IgniteExceptionMapperUtil.java:130)
> at
> org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:127)
> at
> org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:102)
> at
> org.apache.ignite.internal.table.RecordBinaryViewImpl.insertAsync(RecordBinaryViewImpl.java:168)
> at
> org.apache.ignite.internal.table.RecordBinaryViewImpl.insert(RecordBinaryViewImpl.java:160)
> at
> org.apache.ignite.internal.table.RecordBinaryViewImpl.insert(RecordBinaryViewImpl.java:47)
> at
> org.apache.ignite.internal.runner.app.ItTablesApiTest.useAfterDrop(ItTablesApiTest.java:164)
> Caused by: java.lang.NullPointerException
> 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:2100)
> at
> org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.schemaVersionAt(SchemaVersionsImpl.java:52)
> at
> org.apache.ignite.internal.table.distributed.schema.SchemaVersionsImpl.schemaVersionAtNow(SchemaVersionsImpl.java:68)
> at
> org.apache.ignite.internal.table.AbstractTableView.withSchemaSync(AbstractTableView.java:107)
> ... 75 more
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)