You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by "Sergey Evdokimov (JIRA)" <ji...@apache.org> on 2015/02/16 16:57:11 UTC
[jira] [Assigned] (IGNITE-76) CME in tx map with optimistic txs
[ https://issues.apache.org/jira/browse/IGNITE-76?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Evdokimov reassigned IGNITE-76:
--------------------------------------
Assignee: Sergey Evdokimov (was: Yakov Zhdanov)
> CME in tx map with optimistic txs
> ---------------------------------
>
> Key: IGNITE-76
> URL: https://issues.apache.org/jira/browse/IGNITE-76
> Project: Ignite
> Issue Type: Bug
> Reporter: Yakov Zhdanov
> Assignee: Sergey Evdokimov
> Priority: Blocker
>
> {code}
> public class GridGainBulkUpdateBenchmark extends GridGainCacheAbstractBenchmark<String, BigDecimal> {
> /** */
> public static final int SHIFT = 1_000_000;
> /** {@inheritDoc} */
> @Override public void setUp(BenchmarkConfiguration cfg) throws Exception {
> super.setUp(cfg);
> println(cfg, "Populating data...");
> long start = System.nanoTime();
> try (GridDataLoader<String, BigDecimal> dataLdr = grid().dataLoader(cache.name())) {
> for (int i = 0; i < args.range() && !Thread.currentThread().isInterrupted(); i++) {
> dataLdr.addData(String.valueOf(SHIFT + i), BigDecimal.valueOf(i));
> if (i % 100000 == 0)
> println(cfg, "Populated cache: " + i);
> }
> }
> println(cfg, "Finished populating data in " + ((System.nanoTime() - start) / 1_000_000) + " ms.");
> }
> /** {@inheritDoc} */
> @Override public boolean test(Map<Object, Object> ctx) throws Exception {
> Map<String, BigDecimal> changesMap = generateBatch();
> try (GridCacheTx tx = cache().txStart()) {
> final Map<String, BigDecimal> oldVals = cache().getAll(changesMap.keySet());
> final Map<String, BigDecimal> newVals = new HashMap<>(oldVals.size());
> for (Map.Entry<String, BigDecimal> ent : oldVals.entrySet())
> newVals.put(ent.getKey(), ent.getValue().add(changesMap.get(ent.getKey())));
> cache().putAll(newVals);
> tx.commit();
> }
> return true;
> }
> /**
> * @return Batch.
> */
> private Map<String, BigDecimal> generateBatch() {
> SortedMap<String, BigDecimal> batch = new TreeMap<>();
> while (batch.size() < args.batchSize()) {
> String key = String.valueOf(nextRandom(SHIFT, SHIFT + args.range()));
> batch.put(key, BigDecimal.valueOf(nextRandom(1000)));
> }
> return batch;
> }
> /** {@inheritDoc} */
> @Override protected GridCache<String, BigDecimal> cache() {
> return grid().cache("tx");
> }
> }
> {code}
> {noformat}
> Dec 25, 2014 1:40:35 PM org.gridgain.grid.logger.java.GridJavaLogger error
> SEVERE: <tx> Failed processing message [senderId=432325aa-0f4c-4dad-bfeb-077c2fe0ab7e]
> java.util.ConcurrentModificationException
> at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:711)
> at java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:744)
> at java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:742)
> at org.gridgain.grid.kernal.processors.cache.GridCacheTxMap$1$1.advance(GridCacheTxMap.java:133)
> at org.gridgain.grid.kernal.processors.cache.GridCacheTxMap$1$1.next(GridCacheTxMap.java:120)
> at org.gridgain.grid.kernal.processors.cache.GridCacheTxMap$1$1.next(GridCacheTxMap.java:100)
> at java.util.AbstractMap$2$1.next(AbstractMap.java:396)
> at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.checkLocks(GridDhtTxPrepareFuture.java:224)
> at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.mapIfLocked(GridDhtTxPrepareFuture.java:369)
> at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare(GridDhtTxPrepareFuture.java:569)
> at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtTxLocal.prepareAsync(GridDhtTxLocal.java:425)
> at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter.prepareTx(GridDhtTransactionalCacheAdapter.java:244)
> at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter.processNearTxPrepareRequest(GridDhtTransactionalCacheAdapter.java:991)
> at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter.access$100(GridDhtTransactionalCacheAdapter.java:53)
> at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$4.apply(GridDhtTransactionalCacheAdapter.java:109)
> at org.gridgain.grid.kernal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$4.apply(GridDhtTransactionalCacheAdapter.java:107)
> at org.gridgain.grid.kernal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:304)
> at org.gridgain.grid.kernal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:230)
> at org.gridgain.grid.kernal.processors.cache.GridCacheIoManager.access$200(GridCacheIoManager.java:49)
> at org.gridgain.grid.kernal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:142)
> at org.gridgain.grid.kernal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:662)
> at org.gridgain.grid.kernal.managers.communication.GridIoManager.access$1900(GridIoManager.java:62)
> at org.gridgain.grid.kernal.managers.communication.GridIoManager$6.body(GridIoManager.java:623)
> at org.gridgain.grid.util.worker.GridWorker.run(GridWorker.java:151)
> 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:744)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)