Hello Team

Our configuration is as follows :
Ignite Version : 2.8.1
Server nodes : 3
Native Persistence : yes

Cache Mode : Replicated
Write Sync Mode : FULL_SYNC

Updates/Inserts : Through entry processor .

No. of caches : ~ 30
No. of records per cache : ~30k


Our entry processor code looks something  like this :
class ProjectCacheEntryProcessor implements
CacheEntryProcessor<String, Integer, Object> {

            public Object process(MutableEntry<BinaryObject, BinaryObject>
entry,
Object... arguments) throws EntryProcessorException {
                BinaryObject value = entry.getValue();
              BinaryObjectBuilder builder;
 
                if (value == null ) {
        builder = ignite.binary().builder(tablename);

                } else {
                builder =value.toBuilder();
                                   
                }

      If ( some logic ){
            Builder.setField(columname,<somevalue> )
      }

      entry.setValue(builder.build())

}

}


It is noticed that when we populate the caches for the first time  ( i.e.
sync data in from other db ) , where all the updates are happening in
parallel in separate threads ( around 10 tables at a time ) , update/insert
for some records show 'UnRegisteredBinaryObjectException' on some server
nodes . ( We dont get this exception if we sync any single cache alone )

The detailed message for this says :
class org.apache.ignite.internal.UnregisteredBinaryTypeException: Attempted
to update binary metadata inside a critical synchronization block (will be
automatically retried). This exception must not be wrapped to any other
exception class. If you encounter this exception outside of EntryProcessor,
please report to Apache Ignite dev-list. Debug info [typeId=-1816288802,
binaryMetadata=null, fut=MetadataUpdateResultFuture [key=SyncKey
[typeId=-1816288802, ver=3]]]

Because of that message , we had not caught this exception. But looks like
this causes the data not inserted on that node . Since this exception is not
caught , client doesn't receive any exception for the update/insert of the
record. This causes data inconsistency between nodes for the data of any
given replicated cache.

Kindly let us know the below :
1. What is the correct/recommended way to handle
UnregisteredBinaryTypeException
2. Considering that we are using FULL_SYNC mode, shouldnt this exception
have propagated to the client and prevent the record update rather than
cause data inconsistency between the server nodes for a REPLICATED cache.

What is the right way to handle any RunTimeExceptions ? Should we catch
these and propagate it to the clients ?

regards,
Veena.




--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to