Ilya Shishkov created IGNITE-26261:
--------------------------------------

             Summary: Key class change leads to critical failure and B+Tree 
corruption
                 Key: IGNITE-26261
                 URL: https://issues.apache.org/jira/browse/IGNITE-26261
             Project: Ignite
          Issue Type: Task
            Reporter: Ilya Shishkov


It seems, than we have insufficient validation when inserting entries with 
changed class of key to cache with indexing.

When we try to put entry with new key class, there are some possible scenarios:
# Some data become unavailable with SQL.
# Unexpected SQL requests failures.
# Node failures.
# B+Tree corruption. As I see, there are no possibility to rebuild indexes, 
maintenance mode also fails to rebuild index. It is impossible to restore data 
with standard utilities.

In all cases, root cause is such error:
{code}
org.apache.ignite.binary.BinaryObjectException: Failed to get field because 
type ID of passed object differs from type ID this BinaryField belongs to 
[expected=[typeId=449234053, 
typeName=org.apache.ignite.KeyClassChangeTest$OtherIntKey], 
actual=[typeId=1318599563, 
typeName=org.apache.ignite.KeyClassChangeTest$IntKey], fieldId=106079, 
fieldName=key, fieldType=int]
{code}

How to reproduce (TBD):
# Create cache with query entity, where key class contains field, annotated 
both {{@AffinityKeyMapped}} and {{@QuerySqlField}} annotations. For node and 
SQL failures 



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

Reply via email to