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)

Reply via email to