Ilya Shishkov created IGNITE-13553: -------------------------------------- Summary: Node failure with ClassNotFoundException when indexed field of QueryEntity differs from type used in put operation Key: IGNITE-13553 URL: https://issues.apache.org/jira/browse/IGNITE-13553 Project: Ignite Issue Type: Bug Components: sql, thin client Affects Versions: 2.8.1, 2.9, 2.10 Reporter: Ilya Shishkov
Failures occur under these conditions: # Data classes are not present in server classpaths, peer-classloading is not used because thin client is used. # Manual construction of QueryEntity via #setFields, #setIndexes etc. is used instead of constructor of QueryEntity in conjunction with @QuerySqlField for data clases. # One of the indexed fields of QueryEntity has type different from type of corresponding field of data object instance, eg: {code:java|title=QueryEntity} fields.put("name", "java.lang.String"); fields.put("wrongTypeEmbeddable", "java.lang.String"); /* This is wrong type */ QueryEntity qryEntity = new QueryEntity() .setKeyType("java.lang.Integer") .setValueType("org.apache.ignite.wrongtype.WrongTypeEntity") /* FQDN should be used */ .setFields(fields) .setIndexes(Collections.singleton( new QueryIndex("wrongTypeEmbeddable") /* Wrong type field is indexed */)); {code} {code:java|title=Embedded field type in put operation is different} cache.put(0, new WrongTypeEntity("name", new WrongTypeEmbeddable(256, "testField") /* wrongTypeEmbeddable field */)); {code} How to reproduce: # Start server nodes with default condig via ignite.sh # Run reproducer: For Apache Ignite 2.8.1 failures are identical for atomic and transactional caches: {code:java} [17:45:23,108][SEVERE][sys-stripe-0-#1][] JVM will be halted immediately due to the failure: [failureCtx=FailureContext [type=CRITICAL_ERROR, err=class o.a.i.binary.BinaryInvalidTypeException: o.a.i.wrongtype.WrongTypeEmbeddable]] {code} For AI, built and assemblied from master, failure is supressed for atomic and occur only for transactional caches: {code:java} [17:39:09,305][SEVERE][sys-stripe-10-#11][] JVM will be halted immediately due to the failure: [failureCtx=FailureContext [type=CRITICAL_ERROR, err=class o.a.i.i.transactions.IgniteTxHeuristicCheckedException: Committing a transaction has produced runtime exception]] {code} Root cause for all failures is: {code:java} Caused by: java.lang.ClassNotFoundException: org.apache.ignite.wrongtype.WrongTypeEmbeddable {code} Logs: -- This message was sent by Atlassian Jira (v8.3.4#803005)