據我所知,GridGain 6有一些自定義的序列化,並且還爲各種目的使用H2。GridGain GridH2IndexingSpi序列化與我們的H2數據庫衝突
我們使用H2作爲序列化的對象存儲。例如,這裏是表格模式的相關部分。
CREATE TABLE IF NOT EXISTS QUEUE (ID IDENTITY PRIMARY KEY, OBJECT OTHER NOT NULL ....)
嘗試插入一行時,出現以下錯誤。最後幾行表明GridH2IndexingSpi已配置並且失敗(即使我的測試未在網格上運行)。由於spi源和我的調試器看起來不同步,並且行號沒有意義,所以我無法輕鬆進行進一步調試。
從我能夠在Utils.java中進行調試,看起來gridgain序列化器已經在H2(靜態!!!!)中配置並正在使用。
有關如何解決或避免這種情況的任何想法?我已經嘗試過各種H2版本,比如1.3.176(gridgain使用)和更新的1.4.177,但正如所料,它們沒有什麼區別,因爲問題在於使用索引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
是的,正如我所提到的那樣,它是負責的靜態序列化程序。現在我們的解決方法是可以接受的,當gridgain符合新的H2版本時,我會考慮整合每db序列化器。 –