From issues-return-94629-archive-asf-public=cust-asf.ponee.io@ignite.apache.org Tue Apr 2 10:41:03 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 452CA180672 for ; Tue, 2 Apr 2019 12:41:03 +0200 (CEST) Received: (qmail 35539 invoked by uid 500); 2 Apr 2019 10:41:02 -0000 Mailing-List: contact issues-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list issues@ignite.apache.org Received: (qmail 35530 invoked by uid 99); 2 Apr 2019 10:41:02 -0000 Received: from mailrelay1-us-west.apache.org (HELO mailrelay1-us-west.apache.org) (209.188.14.139) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 02 Apr 2019 10:41:02 +0000 Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id AC903E25D3 for ; Tue, 2 Apr 2019 10:41:01 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 23B202459D for ; Tue, 2 Apr 2019 10:41:01 +0000 (UTC) Date: Tue, 2 Apr 2019 10:41:01 +0000 (UTC) From: "Sergey Antonov (JIRA)" To: issues@ignite.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Assigned] (IGNITE-10789) CacheInterceptor on server node get BinaryObject if put was invoked by ClientCache. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/IGNITE-10789?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sergey Antonov reassigned IGNITE-10789: --------------------------------------- Assignee: (was: Sergey Antonov) > CacheInterceptor on server node get BinaryObject if put was invoked by ClientCache. > ----------------------------------------------------------------------------------- > > Key: IGNITE-10789 > URL: https://issues.apache.org/jira/browse/IGNITE-10789 > Project: Ignite > Issue Type: Bug > Components: cache > Affects Versions: 2.7 > Reporter: Sergey Antonov > Priority: Major > Fix For: 2.8 > > Time Spent: 20m > Remaining Estimate: 0h > > Cache interceptor on server node expects deserialized object, but gets BinaryObject in case of put was from thin client. > The exception is following: > {noformat} > [2018-12-21 17:25:08,213][ERROR][client-connector-#53%cache.Test20%][ClientListenerNioListener] Failed to process client request [req=o.a.i.i.processors.platform.client.cache.ClientCachePutRequest@72009659] > org.apache.ignite.cache.CachePartialUpdateException: Failed to update keys (retry update if possible).: [key] > at org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1313) > at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:1754) > at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1107) > at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:820) > at org.apache.ignite.internal.processors.platform.client.cache.ClientCachePutRequest.process(ClientCachePutRequest.java:40) > at org.apache.ignite.internal.processors.platform.client.ClientRequestHandler.handle(ClientRequestHandler.java:52) > at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:174) > at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:48) > at org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279) > at org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109) > at org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97) > at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) > at org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Caused by: class org.apache.ignite.internal.processors.cache.CachePartialUpdateCheckedException: Failed to update keys (retry update if possible).: [key] > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.onPrimaryError(GridNearAtomicAbstractUpdateFuture.java:397) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.onPrimaryResponse(GridNearAtomicSingleUpdateFuture.java:252) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture$1.apply(GridNearAtomicAbstractUpdateFuture.java:304) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture$1.apply(GridNearAtomicAbstractUpdateFuture.java:301) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicAbstractUpdateFuture.map(GridDhtAtomicAbstractUpdateFuture.java:394) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1942) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1671) > 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:482) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:442) > 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:1153) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.put0(GridDhtAtomicCache.java:613) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2499) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2476) > at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1104) > ... 13 more > Suppressed: class org.apache.ignite.IgniteCheckedException: Failed to update keys. > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.UpdateErrors.addFailedKey(UpdateErrors.java:108) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateResponse.addFailedKey(GridNearAtomicUpdateResponse.java:327) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2703) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2019) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1848) > ... 23 more > Suppressed: class org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException: Runtime failure on search row: SearchRow [key=KeyCacheObjectImpl [part=606, val=key, hasValBytes=true], hash=106079, cacheId=0] > at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1817) > at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1663) > at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1646) > at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:440) > at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2335) > at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2562) > ... 25 more > Caused by: java.lang.ClassCastException: org.apache.ignite.internal.binary.BinaryObjectImpl cannot be cast to org.apache.ignite.cache.Test2$ThinBinaryValue > at org.apache.ignite.cache.Test2$ThinBinaryValueInterceptor.onBeforePut(Test2.java:64) > at org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6339) > at org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6138) > at org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5838) > at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:3758) > at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3652) > at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:1900) > at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1784) > ... 30 more > {noformat} > Reproducer: > {code:java} > import javax.cache.Cache; > import org.apache.ignite.Ignition; > import org.apache.ignite.client.ClientCache; > import org.apache.ignite.client.IgniteClient; > import org.apache.ignite.configuration.CacheConfiguration; > import org.apache.ignite.configuration.ClientConfiguration; > import org.apache.ignite.configuration.ClientConnectorConfiguration; > import org.apache.ignite.configuration.IgniteConfiguration; > import org.apache.ignite.failure.StopNodeFailureHandler; > import org.apache.ignite.internal.IgniteEx; > import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; > import org.jetbrains.annotations.Nullable; > import org.junit.Test; > import org.junit.runner.RunWith; > import org.junit.runners.JUnit4; > @RunWith(JUnit4.class) > public class ThinClientPutCacheInterceptorTest extends GridCommonAbstractTest { > @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { > return super.getConfiguration(igniteInstanceName) > .setCacheConfiguration(new CacheConfiguration("test").setInterceptor(new ThinBinaryValueInterceptor())) > .setClientConnectorConfiguration(new ClientConnectorConfiguration()) > .setFailureHandler(new StopNodeFailureHandler()); > } > @Test > public void test() throws Exception { > try (IgniteEx ignite = startGrid(0)) { > ignite.cluster().active(true); > ClientConfiguration ccfg = new ClientConfiguration() > .setAddresses("127.0.0.1:" + ignite.configuration().getClientConnectorConfiguration().getPort()); > try (IgniteClient igniteClient = Ignition.startClient(ccfg)) { > ClientCache cache = igniteClient.cache("test"); > cache.put("key", new ThinBinaryValue()); > } > } > } > private static class ThinBinaryValueInterceptor extends CacheInterceptorAdapter { > @Nullable @Override > public ThinBinaryValue onBeforePut(Cache.Entry entry, ThinBinaryValue newVal) { > return super.onBeforePut(entry, newVal); > } > } > private static class ThinBinaryValue { > } > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)