anton-vinogradov commented on PR #13372:
URL: https://github.com/apache/ignite/pull/13372#issuecomment-4995778150
@zstan You're right that Ignite's own Java code doesn't call these methods —
but Calcite does, at engine init.
In `calcite-core` **1.42** the class
`org.apache.calcite.runtime.SqlFunctions` gained **59 methods** whose
signatures use joou unsigned types (`org.joou.ULong plus(ULong, ULong)`,
`checkedPlus(...)`, etc.). These are new in 1.42 — 1.40 had no joou at all.
The node dies while building the engine, not while running a query. Stack
(reproduced locally without joou on the classpath):
```
java.lang.NoClassDefFoundError: org/joou/ULong
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at org.apache.calcite.linq4j.tree.Types.lookupMethod(Types.java:288)
at org.apache.calcite.util.BuiltInMethod.<init>(BuiltInMethod.java:1043)
at org.apache.calcite.util.BuiltInMethod.<clinit>(BuiltInMethod.java:320)
at
o.a.i.i.processors.query.calcite.exec.exp.RexImpTable.<init>(RexImpTable.java:300)
... IgniteScalarFunction.create -> SchemaHolderImpl.onFunctionCreated ->
cache start
```
`BuiltInMethod.<clinit>` calls `Class.getDeclaredMethods0`, which resolves
**every** method signature of the referenced classes, including the joou-typed
ones — so the class must be on the classpath even though nothing invokes those
methods.
**Why Java suites are green:** Surefire builds its classpath from the full
transitive Maven graph, where `joou` is present transitively via `calcite-core`
— declared explicitly or not. The failure only appears in classpaths assembled
from `target/libs`, which `copy-libs` fills with **direct** dependencies only
(`excludeTransitive=true`). That's exactly why this module already
hand-declares guava, janino, avatica, jackson, etc. — `joou` was the one that
got missed. Both the C++ dev node and `libs/optional/ignite-calcite` in the
release are built from `target/libs`, so both break; Surefire never does.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]