ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Kosarev (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-7674) It is possible to create BinaryObject with wrong field type and that can lead to broken Transaction (TransactionHeuristicException)
Date Mon, 12 Feb 2018 14:10:00 GMT
Sergey Kosarev created IGNITE-7674:
--------------------------------------

             Summary: It is possible to create BinaryObject with wrong field type and that
can lead to broken Transaction (TransactionHeuristicException)
                 Key: IGNITE-7674
                 URL: https://issues.apache.org/jira/browse/IGNITE-7674
             Project: Ignite
          Issue Type: Bug
          Components: binary, sql
    Affects Versions: 2.3
            Reporter: Sergey Kosarev


Usuaully if we have any data in a cache, if we try to create BynaryObject with the same field
name and another type we BinaryObjectException is thrown

Wrong value has been set [typeName=org.apache.ignite.internal.binary.Foo, fieldName=intField,
fieldType=int, assignedValueType=String]

, but there are cases we can create an inconsistent BinaryObject

suppose we haveĀ 

{code:java}
class Foo {
    private String strField;

    private int intField;

    public Foo(String strField, int intField) {
        this.intField = intField;
        this.strField = strField;
    }
}{code}

case 1
{code:java}
binary.builder(Foo.class.getName())
    .removeField("intField")
    .build()
    .toBuilder()
    .setField("intField", "String")
    .build();{code}

case 2 (if we remove all fields schema flag is cleared )
{code:java}
fooCache.<Integer, BinaryObject>withKeepBinary().get(1)
    .toBuilder()
    .removeField("intField")
    .removeField("strField")
    .build()
    .toBuilder()
    .setField("intField", "String")
    .build(){code}

It is especially bad when we have an index on this field and cache is transactional.
if we put wrong BinaryObject into the cache, we got TransactionHeuristicException on commit
and broken transaction (data can be comitted or not in some cases)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message