From user-return-17161-archive-asf-public=cust-asf.ponee.io@ignite.apache.org Wed Jan 10 21:05:07 2018 Return-Path: X-Original-To: archive-asf-public@eu.ponee.io Delivered-To: archive-asf-public@eu.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by mx-eu-01.ponee.io (Postfix) with ESMTP id 8E3B418076D for ; Wed, 10 Jan 2018 21:05:07 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 7C2C1160C42; Wed, 10 Jan 2018 20:05: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 54AAE160C2E for ; Wed, 10 Jan 2018 21:05:06 +0100 (CET) Received: (qmail 10603 invoked by uid 500); 10 Jan 2018 20:05:05 -0000 Mailing-List: contact user-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@ignite.apache.org Delivered-To: mailing list user@ignite.apache.org Received: (qmail 10593 invoked by uid 99); 10 Jan 2018 20:05:05 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Jan 2018 20:05:05 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id BF85EC36C5 for ; Wed, 10 Jan 2018 20:05:04 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.98 X-Spam-Level: * X-Spam-Status: No, score=1.98 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=principled-io.20150623.gappssmtp.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id cH_TdlxoAuQi for ; Wed, 10 Jan 2018 20:05:02 +0000 (UTC) Received: from mail-ot0-f170.google.com (mail-ot0-f170.google.com [74.125.82.170]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 5F1125F39E for ; Wed, 10 Jan 2018 20:05:02 +0000 (UTC) Received: by mail-ot0-f170.google.com with SMTP id g59so167394otg.11 for ; Wed, 10 Jan 2018 12:05:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=principled-io.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=STT88kasq6NcYBezuRmHgYGkIEAFoww6mqskXnoOkNM=; b=BwQ4CEodr4MyrxGJfobO8/oryjWx19CVWOr2AbGLoArlAaYqyxICQ/3Lhn2PlYiEOC MfmJ564FgojNqy3ZNZPACtKZAsPDeHTEBS9JGgey0XmG5bHD5P6V3hZP7QcWPn77++4T 2Gb5AYw9D/urKVzcjtlBBf1Lfx7JIji/LHf4M7Q7nynskcTjA4bobBrYrfjMCLLtMSm4 pUMS7Q04MOO/1tZacubkWIvQsAZjqmQW7LUxfLV5ZtCq+78XPe38wPdOPNwyROyQKogj wWREi+Pha1FxGioM90j0hQVcixnYqzO3pzZzJzeL/+0iRNZsB/DOstsRaDsUsaT87VxP cS2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=STT88kasq6NcYBezuRmHgYGkIEAFoww6mqskXnoOkNM=; b=fNGZuFgrH+7Y1wmZ/jWUJLTWAfd5Sum2HrftOSMVlumja7v3XdVwm3dKfsGkqS+FLr qxmjeCayhy1OEUDYzRE8OeH+gOl2GR6xYnexOFtdwZBoGrFgYVhB7b8FZnrmgHWLmvzD hAJrOKt5u8raEaMSnS6bfZk8dvjjv3OgJd7HIiExcXBjctc2vCPrf9ZGY1TQtDELVNvL 9KQkTMgmMb58K77hhZrahQ6cAez19OIjyxjL08wT3G9OSP83kGaUNCxSV97r+kGaRoU4 mEXpPfy9ahRwCWz0IrKoGrbe1rCM8CKj10BOvrk/RfsSceOU05FmueVaj1hmG4j248iE mwXQ== X-Gm-Message-State: AKwxytfW68ehLqZJFFCxvKI3MD1EaXnTVcwW6Qu4bqaU+zW7Bq8OcHKy psMk+QVI7NInF0SLZs8SU0+vFINhWggX0cxxU4pQRENM X-Google-Smtp-Source: ACJfBouHwwq5h+4S2TrqVxxI3Fvsru3e81z8IzwLBWizkVZP6KPhRLEp187wTU0JJWLZjtXkng2HrAfa3/hILpRuupI= X-Received: by 10.157.56.138 with SMTP id p10mr6707587otc.76.1515614700998; Wed, 10 Jan 2018 12:05:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.22.136 with HTTP; Wed, 10 Jan 2018 12:05:00 -0800 (PST) In-Reply-To: <1515591983088-0.post@n6.nabble.com> References: <1515546232872-0.post@n6.nabble.com> <1515591983088-0.post@n6.nabble.com> From: Larry Mark Date: Wed, 10 Jan 2018 15:05:00 -0500 Message-ID: Subject: Re: IgniteOutOfMemoryException when using putAll instead of put To: user@ignite.apache.org Content-Type: multipart/alternative; boundary="001a11c11210dea29c0562718b6a" --001a11c11210dea29c0562718b6a Content-Type: text/plain; charset="UTF-8" Thanks for the quick response. I have observed similar behavior with 3rd party persistence read through IF I set indexed types for the cache. Test case - Load up the cache using put with 35,000 entries ( keys 1 -> 35,000). Read every key using Get(key) This is the use case that I want to use in my application, where I have an active subset of my data in memory and if a key is accessed that is not in memory, it is read in from a postgres database. I am only doing read through, not write through since there is a different path for the data to get into postgres. I can see from cache metrics ( shown below ) that I perform 34011 reads, of which there are 6093 hits and 27,918 misses and then I get the OOM error. This only happens if indexed types are set on the cache. Is this expected behavior? If I am not using sql query on the cache , only using get and put, does it matter if I do not set indexedTypes? Does it help or hurt performance in any way? Cache metrics and stack trace shown below. CacheMetricsSnapshot [reads=34011, puts=35000, hits=6093, misses=27918, txCommits=0, txRollbacks=0, evicts=0, removes=0, putAvgTimeNanos=190.56557, getAvgTimeNanos=53.07989, rmvAvgTimeNanos=0.0, commitAvgTimeNanos=0.0, rollbackAvgTimeNanos=0.0, cacheName=fubar, offHeapGets=0, offHeapPuts=0, offHeapRemoves=0, offHeapEvicts=0, offHeapHits=0, offHeapMisses=0, offHeapEntriesCnt=33726, heapEntriesCnt=2, offHeapPrimaryEntriesCnt=33726, offHeapBackupEntriesCnt=0, offHeapAllocatedSize=0, size=33726, keySize=33726, isEmpty=false, dhtEvictQueueCurrSize=-1, txThreadMapSize=0, txXidMapSize=0, txCommitQueueSize=0, txPrepareQueueSize=0, txStartVerCountsSize=0, txCommittedVersionsSize=0, txRolledbackVersionsSize=0, txDhtThreadMapSize=0, txDhtXidMapSize=-1, txDhtCommitQueueSize=0, txDhtPrepareQueueSize=0, txDhtStartVerCountsSize=0, txDhtCommittedVersionsSize=-1, txDhtRolledbackVersionsSize=-1, isWriteBehindEnabled=false, writeBehindFlushSize=-1, writeBehindFlushThreadCnt=-1, writeBehindFlushFreq=-1, writeBehindStoreBatchSize=-1, writeBehindTotalCriticalOverflowCnt=-1, writeBehindCriticalOverflowCnt=-1, writeBehindErrorRetryCnt=-1, writeBehindBufSize=-1, totalPartitionsCnt=1024, rebalancingPartitionsCnt=0, keysToRebalanceLeft=0, rebalancingKeysRate=0, rebalancingBytesRate=0, rebalanceStartTime=0, rebalanceFinishTime=0, keyType=java.lang.Object, valType=java.lang.Object, isStoreByVal=true, isStatisticsEnabled=true, isManagementEnabled=false, isReadThrough=true, isWriteThrough=false] [14:46:05,572][ERROR][sys-#52][GridPartitionedSingleGetFuture] Failed to get values from dht cache [fut=GridFutureAdapter [ignoreInterrupts=false, state=DONE, res=class o.a.i.IgniteCheckedException: Not enough memory allocated (consider increasing data region size or enabling evictions) [policyName=RefData, size=22.0 MB], hash=315679498]] class org.apache.ignite.IgniteCheckedException: Not enough memory allocated (consider increasing data region size or enabling evictions) [policyName=RefData, size=22.0 MB] at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7252) at org.apache.ignite.internal.processors.closure.GridClosureProcessor$2.body(GridClosureProcessor.java:975) at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: class org.apache.ignite.internal.mem.IgniteOutOfMemoryException: Not enough memory allocated (consider increasing data region size or enabling evictions) [policyName=RefData, size=22.0 MB] at org.apache.ignite.internal.pagemem.impl.PageMemoryNoStoreImpl.allocatePage(PageMemoryNoStoreImpl.java:292) at org.apache.ignite.internal.processors.cache.persistence.DataStructure.allocatePageNoReuse(DataStructure.java:117) at org.apache.ignite.internal.processors.cache.persistence.DataStructure.allocatePage(DataStructure.java:105) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$8400(BPlusTree.java:81) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Put.insertWithSplit(BPlusTree.java:2703) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Put.insert(BPlusTree.java:2665) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Put.access$2500(BPlusTree.java:2547) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Insert.run0(BPlusTree.java:411) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Insert.run0(BPlusTree.java:392) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:4697) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:4682) at org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.writePage(PageHandler.java:342) at org.apache.ignite.internal.processors.cache.persistence.DataStructure.write(DataStructure.java:261) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$11100(BPlusTree.java:81) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Put.tryInsert(BPlusTree.java:2859) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Put.access$7600(BPlusTree.java:2547) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.putDown(BPlusTree.java:2285) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.putDown(BPlusTree.java:2266) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.putDown(BPlusTree.java:2266) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doPut(BPlusTree.java:2006) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.put(BPlusTree.java:1977) at org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex.put(H2TreeIndex.java:197) at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.addToIndex(GridH2Table.java:537) at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.doUpdate(GridH2Table.java:488) at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:423) at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:559) at org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:1747) at org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:425) at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.finishUpdate(IgniteCacheOffheapManagerImpl.java:1354) at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1209) at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:343) at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.storeValue(GridCacheMapEntry.java:3191) at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.versionedValue(GridCacheMapEntry.java:2726) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$16$1.apply(GridCacheAdapter.java:2032) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$16$1.apply(GridCacheAdapter.java:2011) at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadAllFromStore(GridCacheStoreManagerAdapter.java:423) at org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.loadAll(GridCacheStoreManagerAdapter.java:389) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$16.call(GridCacheAdapter.java:2011) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$16.call(GridCacheAdapter.java:2009) at org.apache.ignite.internal.processors.cache.GridCacheContext$3.call(GridCacheContext.java:1412) at org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6631) at org.apache.ignite.internal.processors.closure.GridClosureProcessor$2.body(GridClosureProcessor.java:967) On Wed, Jan 10, 2018 at 8:46 AM, Alexey Popov wrote: > Hi, > > You are right, cache.putAll() can't evict the entries from the batch it is > working on, and you can get Ignite OOME. > This is expected behavior because putAll get locks for all provided entry > keys. That is critical: > 1) for transactional caches and > 2) any caches backed up by 3-rd party persistence store. > > There was an intention to optimize this behavior for atomic caches without > cache store [1] but it seems it will not be implemented. So, you could rely > on this behavior. > > [1] https://issues.apache.org/jira/browse/IGNITE-514. > > Thank you, > Alexey > > > > > -- > Sent from: http://apache-ignite-users.70518.x6.nabble.com/ > --001a11c11210dea29c0562718b6a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks for the quick response.=C2=A0 I have observed simil= ar behavior with 3rd party persistence read through IF I set indexed types = for the cache.

Test case - Load up the cache using put w= ith 35,000 entries ( keys 1 -> 35,000).
Read every key using G= et(key)

This is the use case that I want to use in= my application, where I have an active subset of my data in memory and if = a key is accessed that is not in memory, it is read in from a postgres data= base.=C2=A0 =C2=A0 I am only doing read through, not write through since th= ere is a different path for the data to get into postgres.=C2=A0=C2=A0
=
I can see from cache metrics ( shown below ) that I perform = 34011 reads, of which there are 6093 hits and 27,918 misses and then I get = the OOM error.=C2=A0 This only happens if indexed types are set on the cach= e.=C2=A0 Is this expected behavior?=C2=A0 If I am not using sql query on th= e cache , only using get and put, does it matter if I do not set indexedTyp= es?=C2=A0 Does it help or hurt performance in any way?

=
Cache metrics and stack trace shown below.

CacheMetricsSnapshot [reads=3D34011, puts=3D35000, hits=3D6093, misses= =3D27918, txCommits=3D0, txRollbacks=3D0, evicts=3D0, removes=3D0, putAvgTi= meNanos=3D190.56557, getAvgTimeNanos=3D53.07989, rmvAvgTimeNanos=3D0.0, com= mitAvgTimeNanos=3D0.0, rollbackAvgTimeNanos=3D0.0, cacheName=3Dfubar, offHe= apGets=3D0, offHeapPuts=3D0, offHeapRemoves=3D0, offHeapEvicts=3D0, offHeap= Hits=3D0, offHeapMisses=3D0, offHeapEntriesCnt=3D33726, heapEntriesCnt=3D2,= offHeapPrimaryEntriesCnt=3D33726, offHeapBackupEntriesCnt=3D0, offHeapAllo= catedSize=3D0, size=3D33726, keySize=3D33726, isEmpty=3Dfalse, dhtEvictQueu= eCurrSize=3D-1, txThreadMapSize=3D0, txXidMapSize=3D0, txCommitQueueSize=3D= 0, txPrepareQueueSize=3D0, txStartVerCountsSize=3D0, txCommittedVersionsSiz= e=3D0, txRolledbackVersionsSize=3D0, txDhtThreadMapSize=3D0, txDhtXidMapSiz= e=3D-1, txDhtCommitQueueSize=3D0, txDhtPrepareQueueSize=3D0, txDhtStartVerC= ountsSize=3D0, txDhtCommittedVersionsSize=3D-1, txDhtRolledbackVersionsSize= =3D-1, isWriteBehindEnabled=3Dfalse, writeBehindFlushSize=3D-1, writeBehind= FlushThreadCnt=3D-1, writeBehindFlushFreq=3D-1, writeBehindStoreBatchSize= =3D-1, writeBehindTotalCriticalOverflowCnt=3D-1, writeBehindCriticalOverflo= wCnt=3D-1, writeBehindErrorRetryCnt=3D-1, writeBehindBufSize=3D-1, totalPar= titionsCnt=3D1024, rebalancingPartitionsCnt=3D0, keysToRebalanceLeft=3D0, r= ebalancingKeysRate=3D0, rebalancingBytesRate=3D0, rebalanceStartTime=3D0, r= ebalanceFinishTime=3D0, keyType=3Djava.lang.Object, valType=3Djava.lang.Obj= ect, isStoreByVal=3Dtrue, isStatisticsEnabled=3Dtrue, isManagementEnabled= =3Dfalse, isReadThrough=3Dtrue, isWriteThrough=3Dfalse]

[14:46:05,572][ERROR][sys-#52][GridPartitio= nedSingleGetFuture] Failed to get values from dht cache [fut=3DGridFutureAd= apter [ignoreInterrupts=3Dfalse, state=3DDONE, res=3Dclass o.a.i.IgniteChec= kedException: Not enough memory allocated (consider increasing data region = size or enabling evictions) [policyName=3DRefData, size=3D22.0 MB], hash=3D= 315679498]]
class org.apache.ignite.IgniteCheckedException: Not e= nough memory allocated (consider increasing data region size or enabling ev= ictions) [policyName=3DRefData, size=3D22.0 MB]
at org.apache.ignite.internal.util.IgniteUtils.cast(= IgniteUtils.java:7252)
at= org.apache.ignite.internal.processors.closure.GridClosureProcessor$2.body(= GridClosureProcessor.java:975)
<= /span>at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.j= ava:110)
at java.util.con= current.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoo= lExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: class org.apache.ignite.internal.mem.IgniteOutOfMemoryException= : Not enough memory allocated (consider increasing data region size or enab= ling evictions) [policyName=3DRefData, size=3D22.0 MB]
at org.apache.ignite.internal.pagemem.impl.Pa= geMemoryNoStoreImpl.allocatePage(PageMemoryNoStoreImpl.java:292)
= at org.apache.ignite.internal.proce= ssors.cache.persistence.DataStructure.allocatePageNoReuse(DataStructure.jav= a:117)
at org.apache.igni= te.internal.processors.cache.persistence.DataStructure.allocatePage(DataStr= ucture.java:105)
at org.a= pache.ignite.internal.processors.cache.persistence.tree.BPlusTree.access$84= 00(BPlusTree.java:81)
at = org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Put.= insertWithSplit(BPlusTree.java:2703)
at org.apache.ignite.internal.processors.cache.persistence.tree= .BPlusTree$Put.insert(BPlusTree.java:2665)
at org.apache.ignite.internal.processors.cache.persistenc= e.tree.BPlusTree$Put.access$2500(BPlusTree.java:2547)
at org.apache.ignite.internal.processors.cache= .persistence.tree.BPlusTree$Insert.run0(BPlusTree.java:411)
at org.apache.ignite.internal.processors= .cache.persistence.tree.BPlusTree$Insert.run0(BPlusTree.java:392)
at org.apache.ignite.internal.proc= essors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:4= 697)
at org.apache.ignite= .internal.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BP= lusTree.java:4682)
at org= .apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler.= writePage(PageHandler.java:342)
= at org.apache.ignite.internal.processors.cache.persistence.DataStruc= ture.write(DataStructure.java:261)
at org.apache.ignite.internal.processors.cache.persistence.tree.B= PlusTree.access$11100(BPlusTree.java:81)
at org.apache.ignite.internal.processors.cache.persistence.= tree.BPlusTree$Put.tryInsert(BPlusTree.java:2859)
at org.apache.ignite.internal.processors.cache.per= sistence.tree.BPlusTree$Put.access$7600(BPlusTree.java:2547)
at org.apache.ignite.internal.processor= s.cache.persistence.tree.BPlusTree.putDown(BPlusTree.java:2285)
<= span style=3D"white-space:pre"> at org.apache.ignite.internal.proces= sors.cache.persistence.tree.BPlusTree.putDown(BPlusTree.java:2266)
at org.apache.ignite.internal.pro= cessors.cache.persistence.tree.BPlusTree.putDown(BPlusTree.java:2266)=
at org.apache.ignite.internal.= processors.cache.persistence.tree.BPlusTree.doPut(BPlusTree.java:2006)
at org.apache.ignite.internal= .processors.cache.persistence.tree.BPlusTree.put(BPlusTree.java:1977)
=
at org.apache.ignite.internal.= processors.query.h2.database.H2TreeIndex.put(H2TreeIndex.java:197)
at org.apache.ignite.internal.pro= cessors.query.h2.opt.GridH2Table.addToIndex(GridH2Table.java:537)
at org.apache.ignite.internal.proc= essors.query.h2.opt.GridH2Table.doUpdate(GridH2Table.java:488)
at org.apache.ignite.internal.process= ors.query.h2.opt.GridH2Table.update(GridH2Table.java:423)
at org.apache.ignite.internal.processors.q= uery.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:559)
at org.apache.ignite.internal.processors.q= uery.GridQueryProcessor.store(GridQueryProcessor.java:1747)
at org.apache.ignite.internal.processors= .cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:425)
at org.apache.ignite.intern= al.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.finish= Update(IgniteCacheOffheapManagerImpl.java:1354)
at org.apache.ignite.internal.processors.cache.Ignit= eCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManage= rImpl.java:1209)
at org.a= pache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke= (IgniteCacheOffheapManagerImpl.java:343)
at org.apache.ignite.internal.processors.cache.GridCacheMap= Entry.storeValue(GridCacheMapEntry.java:3191)
at org.apache.ignite.internal.processors.cache.GridCac= heMapEntry.versionedValue(GridCacheMapEntry.java:2726)
at org.apache.ignite.internal.processors.cach= e.GridCacheAdapter$16$1.apply(GridCacheAdapter.java:2032)
at org.apache.ignite.internal.processors.c= ache.GridCacheAdapter$16$1.apply(GridCacheAdapter.java:2011)
at org.apache.ignite.internal.processor= s.cache.store.GridCacheStoreManagerAdapter.loadAllFromStore(GridCacheStoreM= anagerAdapter.java:423)
a= t org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAd= apter.loadAll(GridCacheStoreManagerAdapter.java:389)
at org.apache.ignite.internal.processors.cache= .GridCacheAdapter$16.call(GridCacheAdapter.java:2011)
at org.apache.ignite.internal.processors.cache= .GridCacheAdapter$16.call(GridCacheAdapter.java:2009)
at org.apache.ignite.internal.processors.cache= .GridCacheContext$3.call(GridCacheContext.java:1412)
at org.apache.ignite.internal.util.IgniteUtils= .wrapThreadLoader(IgniteUtils.java:6631)
at org.apache.ignite.internal.processors.closure.GridClosur= eProcessor$2.body(GridClosureProcessor.java:967)

<= br>




On Wed, Jan 10, 2018= at 8:46 AM, Alexey Popov <tank2.alex@gmail.com> wrote:
Hi,

You are right, cache.putAll() can't evict the entries from the batch it= is
working on, and you can get Ignite OOME.
This is expected behavior because putAll get locks for all provided entry keys. That is critical:
1) for transactional caches and
2) any caches backed up by 3-rd party persistence store.

There was an intention to optimize this behavior for atomic caches without<= br> cache store [1] but it seems it will not be implemented. So, you could rely=
on this behavior.

[1] https://issues.apache.org/jira/browse/IGNIT= E-514.

Thank you,
Alexey

--001a11c11210dea29c0562718b6a--