Hi All, As a simple native persistence node, if kill and reboot sometime NPE may thrown.
From the code the really root cause should be the BPlusTree#doPut #putDown's Result is not Expected, But even in the CacheObjectBinaryProcessorImpl#metadata the holder != null should be checked earlier Regards Aaron org.apache.ignite.IgniteCheckedException: null at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7252) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:259) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:207) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:159) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2289) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110) ~[ignite-core-2.3.0.jar!/:2.3.0] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131] Caused by: java.lang.NullPointerException at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.metadata(CacheObjectBinaryProcessorImpl.java:538) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$2.metadata(CacheObjectBinaryProcessorImpl.java:194) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.binary.BinaryContext.metadata(BinaryContext.java:1266) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.binary.BinaryReaderExImpl.getOrCreateSchema(BinaryReaderExImpl.java:2005) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:284) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:183) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.binary.BinaryObjectImpl.reader(BinaryObjectImpl.java:830) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.binary.BinaryObjectImpl.reader(BinaryObjectImpl.java:845) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.binary.BinaryObjectImpl.field(BinaryObjectImpl.java:308) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.property.QueryBinaryProperty.fieldValue(QueryBinaryProperty.java:245) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.property.QueryBinaryProperty.value(QueryBinaryProperty.java:139) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.h2.H2RowDescriptor.columnValue(H2RowDescriptor.java:303) ~[ignite-indexing-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.h2.opt.GridH2KeyValueRowOnheap.getValue(GridH2KeyValueRowOnheap.java:160) ~[ignite-indexing-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.h2.opt.GridH2KeyValueRowOnheap.toString(GridH2KeyValueRowOnheap.java:209) ~[ignite-indexing-2.3.0.jar!/:2.3.0] at java.lang.String.valueOf(String.java:2994) ~[?:1.8.0_131] at java.lang.StringBuilder.append(StringBuilder.java:131) ~[?:1.8.0_131] at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doPut(BPlusTree.java:2039) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.put(BPlusTree.java:1977) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex.put(H2TreeIndex.java:197) ~[ignite-indexing-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.doUpdate(GridH2Table.java:472) ~[ignite-indexing-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:423) ~[ignite-indexing-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:559) ~[ignite-indexing-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:1747) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:425) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.finishUpdate(IgniteCacheOffheapManagerImpl.java:1344) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.update(IgniteCacheOffheapManagerImpl.java:1316) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.update(GridCacheOffheapManager.java:1235) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.update(IgniteCacheOffheapManagerImpl.java:358) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.applyUpdate(GridCacheDatabaseSharedManager.java:1782) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.applyLastUpdates(GridCacheDatabaseSharedManager.java:1637) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.restoreState(GridCacheDatabaseSharedManager.java:1072) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.beforeExchange(GridCacheDatabaseSharedManager.java:863) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.distributedExchange(GridDhtPartitionsExchangeFuture.java:1019) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:651) ~[ignite-core-2.3.0.jar!/:2.3.0] at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2279) ~[ignite-core-2.3.0.jar!/:2.3.0] Aaron.Kuai