[jira] [Commented] (IGNITE-4538) BinaryObjectImpl: lack of context information upon deserialization
[ https://issues.apache.org/jira/browse/IGNITE-4538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15869574#comment-15869574 ] Vladimir Ozerov commented on IGNITE-4538: - [~ein], LGTM. Merged to {{ignite-2.0}}. > BinaryObjectImpl: lack of context information upon deserialization > -- > > Key: IGNITE-4538 > URL: https://issues.apache.org/jira/browse/IGNITE-4538 > Project: Ignite > Issue Type: Improvement > Components: binary >Affects Versions: 1.7, 1.8 >Reporter: Alexandr Kuramshin >Assignee: Vladimir Ozerov > Fix For: 2.0 > > > Taking an error we don't know the cache name was accessed, the type of > BinaryClassDescriptor was used, and the entry was accessed (the key of an > entry should be logged with respect to the *include sensitive* system > property). > Such context information should be appended by wrapping inner exception on > the every key stack frame. > {noformat} > org.apache.ignite.binary.BinaryObjectException: Unexpected flag value > [pos=24, expected=4, actual=9] > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.checkFlagNoHandles(BinaryReaderExImpl.java:1423) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.readLongNullable(BinaryReaderExImpl.java:723) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:677) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read(BinaryFieldAccessor.java:639) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:818) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1481) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:717) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinary(CacheObjectContext.java:272) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:160) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:147) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1706) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$PeekValueExpiryAwareIterator.advance(GridCacheQueryManager.java:2875) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$PeekValueExpiryAwareIterator.(GridCacheQueryManager.java:2814) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$PeekValueExpiryAwareIterator.(GridCacheQueryManager.java:2752) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$5.(GridCacheQueryManager.java:863) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.scanIterator(GridCacheQueryManager.java:863) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.scanQueryLocal(GridCacheQueryManager.java:1436) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryAdapter.executeScanQuery(GridCacheQueryAdapter.java:552) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.GridCacheAdapter.igniteIterator(GridCacheAdapter.java:4115) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.GridCacheAdapter.igniteIterator(GridCacheAdapter.java:4092) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] >
[jira] [Commented] (IGNITE-4538) BinaryObjectImpl: lack of context information upon deserialization
[ https://issues.apache.org/jira/browse/IGNITE-4538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15851335#comment-15851335 ] Vladimir Ozerov commented on IGNITE-4538: - [~ein], my comments: 1) I accidentally merged your branch with other unrelated branch. I reverted changes, but now your PR is based on {{ignite-2.0}}, not on {{master}}. 2) Please see and review my changes to exception handling in {{BinaryClassDescriptor}} and {{BinaryFieldAccessor}}. 3) Changes to {{BinaryUtils}} are invalid: - "HANDLE" is not a field type and hence should not reside in {{FIELD_TYPE_NAMES}}. - Assertion in {{fieldTypeName}} is incorrect: you may easily receive arbitrary flag value in case of broken format, which is nevertheless within array boundaries. 4) {{BinaryReaderExImpl}}: - {{wrapFieldName}} - Invalid JavaDoc format - {{wrapFieldName}} - why don't you check for {{SENSITIVE}} flag? - Why do you catch only {{BinaryObjectException}}, but not {{Exception}}? - You wrap exceptions only for primitives. What about dozens of other field types? > BinaryObjectImpl: lack of context information upon deserialization > -- > > Key: IGNITE-4538 > URL: https://issues.apache.org/jira/browse/IGNITE-4538 > Project: Ignite > Issue Type: Improvement > Components: binary >Affects Versions: 1.7, 1.8 >Reporter: Alexandr Kuramshin >Assignee: Vladimir Ozerov > Fix For: 2.0 > > > Taking an error we don't know the cache name was accessed, the type of > BinaryClassDescriptor was used, and the entry was accessed (the key of an > entry should be logged with respect to the *include sensitive* system > property). > Such context information should be appended by wrapping inner exception on > the every key stack frame. > {noformat} > org.apache.ignite.binary.BinaryObjectException: Unexpected flag value > [pos=24, expected=4, actual=9] > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.checkFlagNoHandles(BinaryReaderExImpl.java:1423) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.readLongNullable(BinaryReaderExImpl.java:723) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:677) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read(BinaryFieldAccessor.java:639) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:818) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1481) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:717) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinary(CacheObjectContext.java:272) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:160) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:147) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1706) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$PeekValueExpiryAwareIterator.advance(GridCacheQueryManager.java:2875) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$PeekValueExpiryAwareIterator.(GridCacheQueryManager.java:2814) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$PeekValueExpiryAwareIterator.(GridCacheQueryManager.java:2752) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$5.(GridCacheQueryManager.java:863) > ~[ignite-core-1.10.1.ea7.jar:1.10.1.ea7] > at >