Andrey Belyaev created IGNITE-16318:
---------------------------------------
Summary: Missing schema with b+ corruption error in cache
interceptor
Key: IGNITE-16318
URL: https://issues.apache.org/jira/browse/IGNITE-16318
Project: Ignite
Issue Type: Bug
Components: binary, cache
Reporter: Andrey Belyaev
Code example:
{code:java}
LinkedHashMap<String, String> fields = new LinkedHashMap<>();
fields.put("A", "java.lang.String");
fields.put("B", "java.lang.String");
fields.put("C", "java.lang.String");
Set<String> keyFields = new LinkedHashSet<>();
keyFields.add("A");
CacheInterceptorAdapter cacheInterceptorAdapter = new
CacheInterceptorAdapter<BinaryObject, BinaryObject>() {
@Nullable
@Override public BinaryObject onBeforePut(Cache.Entry<BinaryObject,
BinaryObject> entry, BinaryObject newVal) {
BinaryObjectBuilder newValBuilder = newVal.toBuilder();
Object bValue = newValBuilder.getField("B");
return newValBuilder.build();
}
};
CacheConfiguration cacheConfiguration = new CacheConfiguration<>()
.setName("TEST_CACHE")
.setKeyConfiguration(new CacheKeyConfiguration()
.setTypeName("TEST_CACHE_KEY")
.setAffinityKeyFieldName("InternalId"))
.setQueryEntities(Collections.singleton(new QueryEntity()
.setTableName("TEST_CACHE")
.setKeyType("TEST_CACHE_KEY")
.setValueType("TEST_CACHE_VALUE")
.setFields(fields)
.setKeyFields(keyFields)))
.setInterceptor(cacheInterceptorAdapter);
IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
.setCacheConfiguration(cacheConfiguration);
try (Ignite ignite = Ignition.start(igniteConfiguration)) {
IgniteCache testCache = ignite.getOrCreateCache("TEST_CACHE");
// putSql
testCache.query(new SqlFieldsQuery("INSERT INTO TEST_CACHE (A) VALUES
('123')"));
} {code}
Exception:
{code:java}
[2022-01-18 13:12:32,727][ERROR][main][CacheObjectBinaryProcessorImpl] Timed
out while waiting for schema update [typeId=1147851335, schemaId=0]
[2022-01-18 13:12:32,730][ERROR][main][root] Critical system error detected.
Will be handled accordingly to configured handler
[hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0,
super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet
[SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]],
failureCtx=FailureContext [type=CRITICAL_ERROR, err=class
o.a.i.i.processors.cache.persistence.tree.CorruptedTreeException: B+Tree is
corrupted [groupId=-838655627, pageIds=[844420635166307], msg=Runtime failure
on search row: SearchRow [key=TEST_CACHE_KEY [idHash=100929741,
hash=-639470899, A=123], hash=-639470899, cacheId=0]]]]
class
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
B+Tree is corrupted [groupId=-838655627, pageIds=[844420635166307],
msg=Runtime failure on search row: SearchRow [key=TEST_CACHE_KEY
[idHash=100929741, hash=-639470899, A=123], hash=-639470899, cacheId=0]]
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.corruptedTreeException(BPlusTree.java:6237)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1988)
at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1742)
at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1725)
at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:449)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2331)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2553)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2016)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1833)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1692)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.sendSingleRequest(GridNearAtomicAbstractUpdateFuture.java:300)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.map(GridNearAtomicSingleUpdateFuture.java:481)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:441)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.map(GridNearAtomicAbstractUpdateFuture.java:249)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update0(GridDhtAtomicCache.java:1147)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.put0(GridDhtAtomicCache.java:615)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2571)
at
org.apache.ignite.internal.processors.cache.GridCacheAdapter.putIfAbsent(GridCacheAdapter.java:3018)
at
org.apache.ignite.internal.processors.query.h2.dml.DmlUtils.dmlDoInsert(DmlUtils.java:209)
at
org.apache.ignite.internal.processors.query.h2.dml.DmlUtils.processSelectResult(DmlUtils.java:175)
at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeUpdateNonTransactional(IgniteH2Indexing.java:2903)
at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeUpdate(IgniteH2Indexing.java:2748)
at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeUpdateDistributed(IgniteH2Indexing.java:2674)
at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.executeDml(IgniteH2Indexing.java:1260)
at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:1182)
at
org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:2883)
at
org.apache.ignite.internal.processors.query.GridQueryProcessor$2.applyx(GridQueryProcessor.java:2879)
at
org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
at
org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:3478)
at
org.apache.ignite.internal.processors.query.GridQueryProcessor.lambda$querySqlFields$3(GridQueryProcessor.java:2899)
at
org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuerySafe(GridQueryProcessor.java:2934)
at
org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:2873)
at
org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:2800)
at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:839)
at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:787)
at
org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.query(GatewayProtectedCacheProxy.java:430)
at org.apache.ignite.examples.BBExample.main(BBExample.java:61)
Caused by: class org.apache.ignite.binary.BinaryObjectException: Cannot find
schema for object with compact footer [typeName=TEST_CACHE_VALUE,
typeId=1147851335, missingSchemaId=0, existingSchemaIds=[-2128831035]]
at
org.apache.ignite.internal.binary.BinaryReaderExImpl.getOrCreateSchema(BinaryReaderExImpl.java:2044)
at
org.apache.ignite.internal.binary.builder.BinaryBuilderReader.schema(BinaryBuilderReader.java:117)
at
org.apache.ignite.internal.binary.builder.BinaryObjectBuilderImpl.ensureReadCacheInit(BinaryObjectBuilderImpl.java:497)
at
org.apache.ignite.internal.binary.builder.BinaryObjectBuilderImpl.getField(BinaryObjectBuilderImpl.java:553)
at org.apache.ignite.examples.BBExample$1.onBeforePut(BBExample.java:39)
at org.apache.ignite.examples.BBExample$1.onBeforePut(BBExample.java:35)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6441)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6243)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5927)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:4093)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5200(BPlusTree.java:3987)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2065)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1955)
... 35 more
[2022-01-18 13:12:32,731][ERROR][main][FailureProcessor] A critical problem
with in-memory data structures was detected.
[2022-01-18 13:12:32,731][ERROR][main][FailureProcessor] No deadlocked threads
detected.
[2022-01-18 13:12:32,746][ERROR][main][FailureProcessor] Thread dump at
2022/01/18 13:12:32 MSK {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)