私が理解しているように、GridGain 6 にはいくつかのカスタマイズされたシリアライゼーションがあり、さまざまな目的で H2 を利用しています。
H2 をシリアル化されたオブジェクト ストアとして使用します。たとえば、テーブル スキーマの関連部分を次に示します。
CREATE TABLE IF NOT EXISTS QUEUE (ID IDENTITY PRIMARY KEY, OBJECT OTHER NOT NULL ....)
行を挿入しようとすると、次のエラーが発生します。最後の数行は、GridH2IndexingSpi が構成されており、何かで失敗していることを示しています (私のテストはグリッドで実行されていませんが)。spi ソースとデバッガーが同期していないようで、行番号が無意味であるため、これ以上簡単にデバッグできませんでした。
Utils.java でデバッグできたことから、gridgain シリアライザーが H2 で (静的に !!!!) 構成され、使用されているようです。
この状況を解決または回避する方法について何か考えはありますか? 1.3.176 (gridgain が使用) や新しい 1.4.177 などのさまざまな H2 バージョンを試しましたが、問題はインデックス spi の使用にあるため、予想どおり、違いはありません。
問題を説明するために、小さな H2 / Gridgain プロジェクト プロジェクトを作成してみてください。
ありがとう
Exception in thread "pool-4-thread-1" org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL []; SQL state [90026]; error code [90026]; Serialization failed, cause: "java.lang.NullPointerException"; SQL statement:
INSERT INTO QUEUE (OBJECT....) VALUES (?,?,?,?) [90026-170]; nested exception is org.h2.jdbc.JdbcSQLException: Serialization failed, cause: "java.lang.NullPointerException"; SQL statement:
INSERT INTO QUEUE (OBJECT, ....) VALUES (?,?,?,?) [90026-170]
....
Caused by: org.h2.jdbc.JdbcSQLException: Serialization failed, cause: "java.lang.NullPointerException"; SQL statement:
INSERT INTO QUEUE (OBJECT, ....) VALUES (?,?,?,?) [90026-170]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:158)
....
Caused by: java.lang.NullPointerException
at org.gridgain.grid.spi.indexing.h2.GridH2IndexingSpi.access$100(GridH2IndexingSpi.java:145)
at org.gridgain.grid.spi.indexing.h2.GridH2IndexingSpi$1.serialize(GridH2IndexingSpi.java:201)
at org.h2.util.Utils.serialize(Utils.java:273)
... 27 more