Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 3E888200D48 for ; Wed, 29 Nov 2017 17:47:07 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 3D645160C04; Wed, 29 Nov 2017 16:47:07 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 114AF160C02 for ; Wed, 29 Nov 2017 17:47:05 +0100 (CET) Received: (qmail 36679 invoked by uid 500); 29 Nov 2017 16:47:05 -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 36670 invoked by uid 99); 29 Nov 2017 16:47:05 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Nov 2017 16:47:05 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 6C9D81808DF for ; Wed, 29 Nov 2017 16:47:04 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -99.202 X-Spam-Level: X-Spam-Status: No, score=-99.202 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id 7-XUg1-JVeBZ for ; Wed, 29 Nov 2017 16:47:01 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 1EA215F231 for ; Wed, 29 Nov 2017 16:47:01 +0000 (UTC) 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 96AFAE0E0B for ; Wed, 29 Nov 2017 16:47:00 +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 27B1421058 for ; Wed, 29 Nov 2017 16:47:00 +0000 (UTC) Date: Wed, 29 Nov 2017 16:47:00 +0000 (UTC) From: "Pavel Tupitsyn (JIRA)" To: issues@ignite.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (IGNITE-7072) IgniteCache.replace(k, v, nv) does not work in binary mode without classes MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Wed, 29 Nov 2017 16:47:07 -0000 [ https://issues.apache.org/jira/browse/IGNITE-7072?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-7072: ----------------------------------- Description: {{IgniteCache.replace(K key, V oldVal, V newVal)}} method deserializes cache values in order to compare them, which causes exception when classes are not present on server: {code} class org.apache.ignite.IgniteCheckedException: Unknown pair [platformId=0, typeId=-1690383137] at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7260) at org.apache.ignite.internal.processors.cache.GridCacheContext.isAll(GridCacheContext.java:1242) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.onEntriesLocked(GridDhtTxPrepareFuture.java:464) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare0(GridDhtTxPrepareFuture.java:1223) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.mapIfLocked(GridDhtTxPrepareFuture.java:666) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare(GridDhtTxPrepareFuture.java:1040) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.prepareAsyncLocal(GridNearTxLocal.java:3452) at org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.prepareColocatedTx(IgniteTxHandler.java:257) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFuture.proceedPrepare(GridNearOptimisticTxPrepareFuture.java:574) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFuture.prepareSingle(GridNearOptimisticTxPrepareFuture.java:401) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFuture.prepare0(GridNearOptimisticTxPrepareFuture.java:344) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFutureAdapter.prepareOnTopology(GridNearOptimisticTxPrepareFutureAdapter.java:137) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFutureAdapter.prepare(GridNearOptimisticTxPrepareFutureAdapter.java:74) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.prepareNearTxLocal(GridNearTxLocal.java:3161) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.commitNearTxLocalAsync(GridNearTxLocal.java:3221) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.optimisticPutFuture(GridNearTxLocal.java:2391) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync0(GridNearTxLocal.java:622) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync(GridNearTxLocal.java:385) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$34.op(GridCacheAdapter.java:2707) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$AsyncOp.op(GridCacheAdapter.java:5120) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOp(GridCacheAdapter.java:4260) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$AsyncOpRetryFuture.execute(GridCacheAdapter.java:4841) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOp(GridCacheAdapter.java:4173) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAsync0(GridCacheAdapter.java:2705) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAsync(GridCacheAdapter.java:2689) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.replaceAsync(GridCacheAdapter.java:2776) at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.replaceAsync(IgniteCacheProxyImpl.java:1182) at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.replaceAsync(GatewayProtectedCacheProxy.java:1082) at org.apache.ignite.internal.processors.platform.cache.PlatformCache.processInStreamOutLong(PlatformCache.java:677) at org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67) Caused by: java.lang.ClassNotFoundException: Unknown pair [platformId=0, typeId=-1690383137] at org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:378) at org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:328) at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:688) at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1755) at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1714) at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:797) at org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143) at org.apache.ignite.internal.processors.cache.GridCacheUtils.value(GridCacheUtils.java:1298) at org.apache.ignite.internal.processors.cache.CacheEntryPredicateContainsValue.apply(CacheEntryPredicateContainsValue.java:64) at org.apache.ignite.internal.processors.cache.CacheEntryPredicateContainsValue.apply(CacheEntryPredicateContainsValue.java:32) at org.apache.ignite.internal.processors.cache.GridCacheContext.isAll(GridCacheContext.java:1237) {code} Same problem with {{boolean remove(K key, V oldVal)}}. To reproduce: * Create key and value with {{BinaryObjectBuilder}} so that there are no Java classes for specified type name * Call {{cache.withKeepBinary().replace(k, v, nv)}} After the fix make sure to un-ignore tests (search entire repo for {{IGNITE-7072}} text, .NET has a couple). was: {{IgniteCache.replace(K key, V oldVal, V newVal)}} method deserializes cache values in order to compare them, which causes exception when classes are not present on server: {code} class org.apache.ignite.IgniteCheckedException: Unknown pair [platformId=0, typeId=-1690383137] at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7260) at org.apache.ignite.internal.processors.cache.GridCacheContext.isAll(GridCacheContext.java:1242) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.onEntriesLocked(GridDhtTxPrepareFuture.java:464) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare0(GridDhtTxPrepareFuture.java:1223) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.mapIfLocked(GridDhtTxPrepareFuture.java:666) at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare(GridDhtTxPrepareFuture.java:1040) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.prepareAsyncLocal(GridNearTxLocal.java:3452) at org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.prepareColocatedTx(IgniteTxHandler.java:257) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFuture.proceedPrepare(GridNearOptimisticTxPrepareFuture.java:574) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFuture.prepareSingle(GridNearOptimisticTxPrepareFuture.java:401) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFuture.prepare0(GridNearOptimisticTxPrepareFuture.java:344) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFutureAdapter.prepareOnTopology(GridNearOptimisticTxPrepareFutureAdapter.java:137) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFutureAdapter.prepare(GridNearOptimisticTxPrepareFutureAdapter.java:74) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.prepareNearTxLocal(GridNearTxLocal.java:3161) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.commitNearTxLocalAsync(GridNearTxLocal.java:3221) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.optimisticPutFuture(GridNearTxLocal.java:2391) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync0(GridNearTxLocal.java:622) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync(GridNearTxLocal.java:385) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$34.op(GridCacheAdapter.java:2707) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$AsyncOp.op(GridCacheAdapter.java:5120) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOp(GridCacheAdapter.java:4260) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$AsyncOpRetryFuture.execute(GridCacheAdapter.java:4841) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOp(GridCacheAdapter.java:4173) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAsync0(GridCacheAdapter.java:2705) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAsync(GridCacheAdapter.java:2689) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.replaceAsync(GridCacheAdapter.java:2776) at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.replaceAsync(IgniteCacheProxyImpl.java:1182) at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.replaceAsync(GatewayProtectedCacheProxy.java:1082) at org.apache.ignite.internal.processors.platform.cache.PlatformCache.processInStreamOutLong(PlatformCache.java:677) at org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67) Caused by: java.lang.ClassNotFoundException: Unknown pair [platformId=0, typeId=-1690383137] at org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:378) at org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:328) at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:688) at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1755) at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1714) at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:797) at org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143) at org.apache.ignite.internal.processors.cache.GridCacheUtils.value(GridCacheUtils.java:1298) at org.apache.ignite.internal.processors.cache.CacheEntryPredicateContainsValue.apply(CacheEntryPredicateContainsValue.java:64) at org.apache.ignite.internal.processors.cache.CacheEntryPredicateContainsValue.apply(CacheEntryPredicateContainsValue.java:32) at org.apache.ignite.internal.processors.cache.GridCacheContext.isAll(GridCacheContext.java:1237) {code} To reproduce: * Create key and value with {{BinaryObjectBuilder}} so that there are no Java classes for specified type name * Call {{cache.withKeepBinary().replace(k, v, nv)}} After the fix make sure to un-ignore tests (search entire repo for {{IGNITE-7072}} text, .NET has a couple). > IgniteCache.replace(k, v, nv) does not work in binary mode without classes > -------------------------------------------------------------------------- > > Key: IGNITE-7072 > URL: https://issues.apache.org/jira/browse/IGNITE-7072 > Project: Ignite > Issue Type: Bug > Components: cache > Reporter: Pavel Tupitsyn > Fix For: 2.4 > > > {{IgniteCache.replace(K key, V oldVal, V newVal)}} method deserializes cache values in order to compare them, which causes exception when classes are not present on server: > {code} > class org.apache.ignite.IgniteCheckedException: Unknown pair [platformId=0, typeId=-1690383137] > at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7260) > at org.apache.ignite.internal.processors.cache.GridCacheContext.isAll(GridCacheContext.java:1242) > at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.onEntriesLocked(GridDhtTxPrepareFuture.java:464) > at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare0(GridDhtTxPrepareFuture.java:1223) > at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.mapIfLocked(GridDhtTxPrepareFuture.java:666) > at org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare(GridDhtTxPrepareFuture.java:1040) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.prepareAsyncLocal(GridNearTxLocal.java:3452) > at org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.prepareColocatedTx(IgniteTxHandler.java:257) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFuture.proceedPrepare(GridNearOptimisticTxPrepareFuture.java:574) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFuture.prepareSingle(GridNearOptimisticTxPrepareFuture.java:401) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFuture.prepare0(GridNearOptimisticTxPrepareFuture.java:344) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFutureAdapter.prepareOnTopology(GridNearOptimisticTxPrepareFutureAdapter.java:137) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFutureAdapter.prepare(GridNearOptimisticTxPrepareFutureAdapter.java:74) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.prepareNearTxLocal(GridNearTxLocal.java:3161) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.commitNearTxLocalAsync(GridNearTxLocal.java:3221) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.optimisticPutFuture(GridNearTxLocal.java:2391) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync0(GridNearTxLocal.java:622) > at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync(GridNearTxLocal.java:385) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter$34.op(GridCacheAdapter.java:2707) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter$AsyncOp.op(GridCacheAdapter.java:5120) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOp(GridCacheAdapter.java:4260) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter$AsyncOpRetryFuture.execute(GridCacheAdapter.java:4841) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOp(GridCacheAdapter.java:4173) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAsync0(GridCacheAdapter.java:2705) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAsync(GridCacheAdapter.java:2689) > at org.apache.ignite.internal.processors.cache.GridCacheAdapter.replaceAsync(GridCacheAdapter.java:2776) > at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.replaceAsync(IgniteCacheProxyImpl.java:1182) > at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.replaceAsync(GatewayProtectedCacheProxy.java:1082) > at org.apache.ignite.internal.processors.platform.cache.PlatformCache.processInStreamOutLong(PlatformCache.java:677) > at org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67) > Caused by: java.lang.ClassNotFoundException: Unknown pair [platformId=0, typeId=-1690383137] > at org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:378) > at org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:328) > at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:688) > at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1755) > at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1714) > at org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:797) > at org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:143) > at org.apache.ignite.internal.processors.cache.GridCacheUtils.value(GridCacheUtils.java:1298) > at org.apache.ignite.internal.processors.cache.CacheEntryPredicateContainsValue.apply(CacheEntryPredicateContainsValue.java:64) > at org.apache.ignite.internal.processors.cache.CacheEntryPredicateContainsValue.apply(CacheEntryPredicateContainsValue.java:32) > at org.apache.ignite.internal.processors.cache.GridCacheContext.isAll(GridCacheContext.java:1237) > {code} > Same problem with {{boolean remove(K key, V oldVal)}}. > To reproduce: > * Create key and value with {{BinaryObjectBuilder}} so that there are no Java classes for specified type name > * Call {{cache.withKeepBinary().replace(k, v, nv)}} > After the fix make sure to un-ignore tests (search entire repo for {{IGNITE-7072}} text, .NET has a couple). -- This message was sent by Atlassian JIRA (v6.4.14#64029)