[ https://issues.apache.org/jira/browse/IGNITE-7674?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Kosarev updated IGNITE-7674: ----------------------------------- Attachment: BinaryObjectChangeFieldTypeTest.java > 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 > Priority: Major > Attachments: BinaryObjectChangeFieldTypeTest.java > > > 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)