[
https://issues.apache.org/jira/browse/IGNITE-6915?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16288998#comment-16288998
]
Kirill Shirokov commented on IGNITE-6915:
-----------------------------------------
Note that the fix substantially minimizes the probability of this bug. Still,
under extremely rare circumstances two tables in the same cache can still
erroneously share b+tree. This can happen when both Optimized Marshaller and
persistence is enabled, and two different value types for which the tables are
created are:
1) both Externalizable
2) have the same simple name
3) have the same first letters of the packages
4) have the same hash code of the fully qualified class name (see
H2TreeIndex.mangleClassName() for details)
or
simple class name length is close to 250 characters (see
MetadataStorage.MAX_IDX_NAME_LEN)
> SQL: Failed to invoke getter method (type=class java.lang.String)
> -----------------------------------------------------------------
>
> Key: IGNITE-6915
> URL: https://issues.apache.org/jira/browse/IGNITE-6915
> Project: Ignite
> Issue Type: Bug
> Components: sql
> Reporter: Pavel Konstantinov
> Assignee: Kirill Shirokov
> Attachments: export-query-Query123-all.csv, screenshot-1.png
>
>
> cluster configuration:
> - 2 server nodes (one with a load, OPTIMIZED marshaller)
> - cache populated with data
> Executed ' select * from "cache".Person '
> !screenshot-1.png!
> {code}
> Caused by: org.h2.jdbc.JdbcSQLException: ┬эєЄЁхээ ю°шсър: "class
> org.apache.ignite.IgniteCheckedException: Failed to invoke getter method
> [type=class java.lang.String, property=firstName]"
> General error: "class org.apache.ignite.IgniteCheckedException: Failed to
> invoke getter method [type=class java.lang.String, property=firstName]"; SQL
> statement:
> SELECT
> __Z0.FIRSTNAME __C0_0,
> __Z0.LASTNAME __C0_1,
> __Z0.RANK __C0_2,
> __Z0.TITLE __C0_3,
> __Z0.AGE __C0_4,
> __Z0.SALARY __C0_5,
> __Z0.ID __C0_6,
> __Z0.DEPID __C0_7
> FROM "c_partitioned".PERSON __Z0 [50000-195]
> at
> org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
> at org.h2.message.DbException.get(DbException.java:168)
> at org.h2.message.DbException.convert(DbException.java:295)
> at
> org.apache.ignite.internal.processors.query.h2.H2RowDescriptor.columnValue(H2RowDescriptor.java:348)
> at
> org.apache.ignite.internal.processors.query.h2.opt.GridH2AbstractKeyValueRow.getValue(GridH2AbstractKeyValueRow.java:236)
> at org.h2.table.TableFilter.getValue(TableFilter.java:1083)
> at
> org.h2.expression.ExpressionColumn.getValue(ExpressionColumn.java:186)
> at org.h2.expression.Alias.getValue(Alias.java:36)
> at
> org.h2.command.dml.Select$LazyResultQueryFlat.fetchNextRow(Select.java:1459)
> at org.h2.result.LazyResult.hasNext(LazyResult.java:79)
> at org.h2.result.LazyResult.next(LazyResult.java:59)
> at org.h2.command.dml.Select.queryFlat(Select.java:519)
> at org.h2.command.dml.Select.queryWithoutCache(Select.java:625)
> at org.h2.command.dml.Query.queryWithoutCacheLazyCheck(Query.java:114)
> at org.h2.command.dml.Query.query(Query.java:352)
> at org.h2.command.dml.Query.query(Query.java:333)
> at org.h2.command.CommandContainer.query(CommandContainer.java:113)
> at org.h2.command.Command.executeQuery(Command.java:201)
> at
> org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:111)
> at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeSqlQuery(IgniteH2Indexing.java:967)
> ... 31 more
> Caused by: class org.apache.ignite.IgniteCheckedException: Failed to invoke
> getter method [type=class java.lang.String, property=firstName]
> at
> org.apache.ignite.internal.processors.query.property.QueryReadOnlyMethodsAccessor.getValue(QueryReadOnlyMethodsAccessor.java:51)
> at
> org.apache.ignite.internal.processors.query.property.QueryClassProperty.value(QueryClassProperty.java:82)
> at
> org.apache.ignite.internal.processors.query.h2.H2RowDescriptor.columnValue(H2RowDescriptor.java:345)
> ... 47 more
> Caused by: java.lang.IllegalArgumentException: object is not an instance of
> declaring class
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at
> org.apache.ignite.internal.processors.query.property.QueryReadOnlyMethodsAccessor.getValue(QueryReadOnlyMethodsAccessor.java:48)
> ... 49 more
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)