ignite-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrey Mashenkov <andrey.mashen...@gmail.com>
Subject Re: BinaryObject model replace() in client/server topology fails with ClassNotFoundFunction
Date Mon, 11 Sep 2017 11:00:38 GMT
I've created a ticket for this [1].
As a workaround you can try to use cache.invoke() with own comparison
implementation inside EntryProcessor.

Unfortunately, there is no release dated filled on apache ignite releases
page [2].
Usually, new Ignite release become available twice a year.

[1] https://issues.apache.org/jira/browse/IGNITE-6332
[2]
https://issues.apache.org/jira/projects/IGNITE?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page

On Thu, Sep 7, 2017 at 9:50 PM, sai kiran nukala <saikiran939@gmail.com>
wrote:

> Thanks for the reply.
>
> How do I file a ticket ?
>
> I know it is still early stage, usually how long it takes to fix this bug
> and release a version because we need this functionality working for our
> use case.
>
> On Sep 7, 2017 10:22 PM, "Andrey Mashenkov" <andrey.mashenkov@gmail.com>
> wrote:
>
> Hi,
> Looks like a bug and CacheEntryPredicateContainsValue shouldn't
> deserialize value to compare BinaryObjects in case of replace() operation
> .
> Feel free to fill a ticket for this.
>
>
>
> On Thu, Sep 7, 2017 at 9:50 AM, saikiran939 <saikiran939@gmail.com> wrote:
>
>> Hi Team,
>>
>> Our team on working on a usecase in which we don't want to have any
>> classes
>> on Ignite Server node's classpath. To achieve this we are making use of
>> BinaryObject based querying and putting/replacing values into cache.
>>
>> We are also using Optimistic Locking to replace the values into cache
>> using
>> "binaryObjectcache.replace(key, oldValue, newValue)" API - this method
>> fails
>> with ClassNotFoundException when used in client/server topology if the
>> cache
>> value class is not present at server's classpath. Sample piece of code is
>> given below:
>>
>> String key = "key1";
>> CacheValue entry1 = new CacheValue("putsomevalue");
>> IgniteCache<String, CacheValue> cache = ignite.getOrCreateCache(cacheC
>> fg);
>> cache.put(key, entry1); //put works fine even if there is no class present
>> in server's classpath
>>
>> CacheValue replaceEntry1 = cache.get(key);
>> replaceEntry1.location= "test";
>>
>> IgniteCache<String, BinaryObject> binaryCacheProjection =
>> cache.withKeepBinary();
>> BinaryObject oldValueInBinary = binaryCacheProjection.get(key);
>> BinaryObject newValueInBinary = ignite.binary().toBinary(replaceEntry1);
>> binaryCacheProjection.replace(key, oldValueInBinary, newValueInBinary);
>>
>> The last replace() method call fails with below exception, is this bug in
>> ignite because put() API works or is there anyway to workaround this
>> exception ? I think from the stacktrace ignite server is trying to
>> deserialize value object even if it is binary. I get the same exception
>> with
>> normal cache.replace() API .
>>
>> Exception in thread "main"
>> org.apache.ignite.cache.CachePartialUpdateException: Failed to update
>> keys
>> (retry update if possible).: [OP21|SHARED]
>>         at
>> org.apache.ignite.internal.processors.cache.GridCacheUtils.c
>> onvertToCacheException(GridCacheUtils.java:1488)
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheProxy
>> .cacheException(IgniteCacheProxy.java:2021)
>>         at
>> org.apache.ignite.internal.processors.cache.IgniteCacheProxy
>> .replace(IgniteCacheProxy.java:1393)
>>         at
>> com.ignite.binary.TestReplaceBinaryObject.populateCache(Test
>> ReplaceBinaryObject.java:166)
>>         at
>> com.ignite.binary.TestReplaceBinaryObject.main(TestReplaceBi
>> naryObject.java:60)
>>         at com.ignite.binary.IgniteDriver.main(IgniteDriver.java:11)
>> Caused by: class
>> org.apache.ignite.internal.processors.cache.CachePartialUpda
>> teCheckedException:
>> Failed to update keys (retry update if possible).: [OP21|SHARED]
>>         at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridNearAtomicSingleUpdateFuture.onResult(GridNearAto
>> micSingleUpdateFuture.java:232)
>>         at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache.processNearAtomicUpdateResponse(Gr
>> idDhtAtomicCache.java:2969)
>>         at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache.access$700(GridDhtAtomicCache.java:130)
>>         at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache$6.apply(GridDhtAtomicCache.java:274)
>>         at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache$6.apply(GridDhtAtomicCache.java:272)
>>         at
>> org.apache.ignite.internal.processors.cache.GridCacheIoManag
>> er.processMessage(GridCacheIoManager.java:748)
>>         at
>> org.apache.ignite.internal.processors.cache.GridCacheIoManag
>> er.onMessage0(GridCacheIoManager.java:353)
>>         at
>> org.apache.ignite.internal.processors.cache.GridCacheIoManag
>> er.handleMessage(GridCacheIoManager.java:277)
>>         at
>> org.apache.ignite.internal.processors.cache.GridCacheIoManag
>> er.access$000(GridCacheIoManager.java:88)
>>         at
>> org.apache.ignite.internal.processors.cache.GridCacheIoManag
>> er$1.onMessage(GridCacheIoManager.java:231)
>>         at
>> org.apache.ignite.internal.managers.communication.GridIoMana
>> ger.invokeListener(GridIoManager.java:1238)
>>         at
>> org.apache.ignite.internal.managers.communication.GridIoMana
>> ger.processRegularMessage0(GridIoManager.java:866)
>>         at
>> org.apache.ignite.internal.managers.communication.GridIoMana
>> ger.access$1700(GridIoManager.java:106)
>>         at
>> org.apache.ignite.internal.managers.communication.GridIoMana
>> ger$5.run(GridIoManager.java:829)
>>         at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
>> Executor.java:1145)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
>> lExecutor.java:615)
>>         at java.lang.Thread.run(Thread.java:722)
>>         Suppressed: class org.apache.ignite.IgniteCheckedException:
>> Failed to
>> update keys on primary node.
>>                 at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridNearAtomicUpdateResponse.addFailedKey(GridNearAto
>> micUpdateResponse.java:350)
>>                 at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2393)
>>                 at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAto
>> micCache.java:1652)
>>                 at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtom
>> icCache.java:1490)
>>                 at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(Gri
>> dDhtAtomicCache.java:2950)
>>                 at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache.access$600(GridDhtAtomicCache.java:130)
>>                 at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
>>                 at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:266)
>>                 ... 12 more
>>                 Suppressed: class org.apache.ignite.IgniteChecke
>> dException:
>> com.ignite.binary.CacheValue
>>                         at
>> org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7142)
>>                         at
>> org.apache.ignite.internal.processors.cache.GridCacheContext
>> .isAllLocked(GridCacheContext.java:1252)
>>                         at
>> org.apache.ignite.internal.processors.cache.GridCacheMapEntr
>> y.innerUpdate(GridCacheMapEntry.java:2241)
>>                         at
>> org.apache.ignite.internal.processors.cache.distributed.dht.
>> atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2252)
>>                         ... 18 more
>>                 Caused by: java.lang.ClassNotFoundException:
>> com.ignite.binary.CacheValue
>>                         at java.net.URLClassLoader$1.run(
>> URLClassLoader.java:366)
>>                         at java.net.URLClassLoader$1.run(
>> URLClassLoader.java:355)
>>                         at java.security.AccessController.doPrivileged(Native
>> Method)
>>                         at java.net.URLClassLoader.findCl
>> ass(URLClassLoader.java:354)
>>                         at java.lang.ClassLoader.loadClas
>> s(ClassLoader.java:423)
>>                         at sun.misc.Launcher$AppClassLoad
>> er.loadClass(Launcher.java:308)
>>                         at java.lang.ClassLoader.loadClas
>> s(ClassLoader.java:356)
>>                         at java.lang.Class.forName0(Native Method)
>>                         at java.lang.Class.forName(Class.java:266)
>>                         at
>> org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUt
>> ils.java:8350)
>>                         at
>> org.apache.ignite.internal.MarshallerContextAdapter.getClass
>> (MarshallerContextAdapter.java:185)
>>                         at
>> org.apache.ignite.internal.binary.BinaryContext.descriptorFo
>> rTypeId(BinaryContext.java:662)
>>                         at
>> org.apache.ignite.internal.binary.BinaryReaderExImpl.deseria
>> lize(BinaryReaderExImpl.java:1474)
>>                         at
>> org.apache.ignite.internal.binary.BinaryObjectImpl.deseriali
>> zeValue(BinaryObjectImpl.java:585)
>>                         at
>> org.apache.ignite.internal.binary.BinaryObjectImpl.value(Bin
>> aryObjectImpl.java:142)
>>                         at
>> org.apache.ignite.internal.processors.cache.GridCacheUtils.v
>> alue(GridCacheUtils.java:1512)
>>                         at
>> org.apache.ignite.internal.processors.cache.CacheEntryPredic
>> ateContainsValue.apply(CacheEntryPredicateContainsValue.java:63)
>>                         at
>> org.apache.ignite.internal.processors.cache.CacheEntryPredic
>> ateContainsValue.apply(CacheEntryPredicateContainsValue.java:32)
>>                         at
>> org.apache.ignite.internal.processors.cache.GridCacheContext
>> .isAllLocked(GridCacheContext.java:1246)
>>                         ... 20 more
>>
>>
>>
>>
>>
>> --
>> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>>
>
>
>
> --
> Best regards,
> Andrey V. Mashenkov
>
>
>


-- 
Best regards,
Andrey V. Mashenkov

Mime
View raw message