Search in sources :

Example 26 with IgniteCache

use of org.apache.ignite.IgniteCache in project ignite by apache.

the class CacheStartupInDeploymentModesTest method doCheckStarted.

/**
 * @param mode Deployment mode.
 * @throws Exception If failed.
 */
private void doCheckStarted(DeploymentMode mode) throws Exception {
    startGridsMultiThreaded(2);
    checkTopology(2);
    assertEquals(mode, ignite(0).configuration().getDeploymentMode());
    assert ignite(0).configuration().getMarshaller() instanceof BinaryMarshaller;
    IgniteCache rCache = ignite(0).cache(REPLICATED_CACHE);
    checkPutCache(rCache);
    IgniteCache pCache = ignite(0).cache(PARTITIONED_CACHE);
    checkPutCache(pCache);
}
Also used : BinaryMarshaller(org.apache.ignite.internal.binary.BinaryMarshaller) IgniteCache(org.apache.ignite.IgniteCache)

Example 27 with IgniteCache

use of org.apache.ignite.IgniteCache in project ignite by apache.

the class CacheStoreUsageMultinodeDynamicStartAbstractTest method checkStoreWithDynamicStart.

/**
 * @param clientStart {@code True} if start cache from client node.
 * @throws Exception If failed.
 */
private void checkStoreWithDynamicStart(boolean clientStart) throws Exception {
    cacheStore = true;
    CacheConfiguration ccfg = cacheConfiguration();
    assertNotNull(ccfg.getCacheStoreFactory());
    Ignite srv = ignite(0);
    Ignite client = ignite(3);
    Ignite node = clientStart ? client : srv;
    IgniteCache cache = nearCache ? node.createCache(ccfg, new NearCacheConfiguration()) : node.createCache(ccfg);
    assertNotNull(cache);
    try {
        if (nearCache)
            client.createNearCache(DEFAULT_CACHE_NAME, new NearCacheConfiguration<>());
        checkStoreUpdate(true);
    } finally {
        cache = srv.cache(DEFAULT_CACHE_NAME);
        if (cache != null)
            cache.destroy();
    }
}
Also used : IgniteCache(org.apache.ignite.IgniteCache) Ignite(org.apache.ignite.Ignite) CacheConfiguration(org.apache.ignite.configuration.CacheConfiguration) NearCacheConfiguration(org.apache.ignite.configuration.NearCacheConfiguration) NearCacheConfiguration(org.apache.ignite.configuration.NearCacheConfiguration)

Example 28 with IgniteCache

use of org.apache.ignite.IgniteCache in project ignite by apache.

the class GridCacheAbstractFailoverSelfTest method testConstantTopologyChange.

/**
 * @param concurrency Concurrency control.
 * @param isolation Isolation level.
 * @throws Exception If failed.
 */
protected void testConstantTopologyChange(@Nullable final TransactionConcurrency concurrency, @Nullable final TransactionIsolation isolation) throws Exception {
    final boolean tx = concurrency != null && isolation != null;
    if (tx)
        put(ignite(0), jcache(), ENTRY_CNT, concurrency, isolation);
    else
        put(jcache(), ENTRY_CNT);
    check(jcache(), ENTRY_CNT);
    final int half = ENTRY_CNT / 2;
    final AtomicReference<Exception> err = new AtomicReference<>();
    IgniteInternalFuture<?> fut = GridTestUtils.runMultiThreadedAsync(new CA() {

        @Override
        public void apply() {
            info("Run topology change.");
            try {
                String name = "new-node-" + Thread.currentThread().getName();
                for (int i = 0; i < TOP_CHANGE_CNT && err.get() == null; i++) {
                    info("Topology change " + i);
                    try {
                        final Ignite g = startGrid(name);
                        IgniteCache<String, Object> cache = g.cache(DEFAULT_CACHE_NAME);
                        for (int k = half; k < ENTRY_CNT; k++) {
                            String key = "key" + k;
                            assertNotNull("Failed to get key: 'key" + k + "'", cache.getAsync(key).get(30_000));
                        }
                    } finally {
                        G.stop(name, false);
                    }
                }
            } catch (Exception e) {
                err.set(e);
                log.error("Unexpected exception in topology-change-thread: " + e, e);
            }
        }
    }, TOP_CHANGE_THREAD_CNT, "topology-change-thread");
    try {
        while (!fut.isDone()) {
            if (tx) {
                remove(grid(0), jcache(), half, concurrency, isolation);
                put(grid(0), jcache(), half, concurrency, isolation);
            } else {
                remove(jcache(), half);
                put(jcache(), half);
            }
        }
    } catch (Exception e) {
        err.set(e);
        log.error("Unexpected exception: " + e, e);
        throw e;
    }
    fut.get();
    Exception err0 = err.get();
    if (err0 != null)
        throw err0;
}
Also used : IgniteCache(org.apache.ignite.IgniteCache) AtomicReference(java.util.concurrent.atomic.AtomicReference) Ignite(org.apache.ignite.Ignite) CachePartialUpdateException(org.apache.ignite.cache.CachePartialUpdateException) CacheException(javax.cache.CacheException) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) ClusterTopologyCheckedException(org.apache.ignite.internal.cluster.ClusterTopologyCheckedException) CA(org.apache.ignite.internal.util.typedef.CA)

Example 29 with IgniteCache

use of org.apache.ignite.IgniteCache in project ignite by apache.

the class CacheSerializableTransactionsTest method testTxConflictReplace.

/**
 * @throws Exception If failed.
 */
public void testTxConflictReplace() throws Exception {
    Ignite ignite0 = ignite(0);
    final IgniteTransactions txs = ignite0.transactions();
    for (CacheConfiguration<Integer, Integer> ccfg : cacheConfigurations()) {
        logCacheInfo(ccfg);
        try {
            IgniteCache<Integer, Integer> cache = ignite0.createCache(ccfg);
            List<Integer> keys = testKeys(cache);
            for (final Integer key : keys) {
                log.info("Test key: " + key);
                try {
                    try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                        boolean replace = cache.replace(key, 2);
                        assertFalse(replace);
                        updateKey(cache, key, 1);
                        tx.commit();
                    }
                    fail();
                } catch (TransactionOptimisticException e) {
                    log.info("Expected exception: " + e);
                }
                checkValue(key, 1, cache.getName());
                try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                    boolean replace = cache.replace(key, 2);
                    assertTrue(replace);
                    tx.commit();
                }
                checkValue(key, 2, cache.getName());
                cache.remove(key);
                try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                    boolean replace = cache.replace(key, 2);
                    assertFalse(replace);
                    tx.commit();
                }
                checkValue(key, null, cache.getName());
                try {
                    try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                        boolean replace = cache.replace(key, 2);
                        assertFalse(replace);
                        updateKey(cache, key, 3);
                        tx.commit();
                    }
                    fail();
                } catch (TransactionOptimisticException e) {
                    log.info("Expected exception: " + e);
                }
                checkValue(key, 3, cache.getName());
                try {
                    try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                        boolean replace = cache.replace(key, 2);
                        assertTrue(replace);
                        txAsync(cache, OPTIMISTIC, SERIALIZABLE, new IgniteClosure<IgniteCache<Integer, Integer>, Void>() {

                            @Override
                            public Void apply(IgniteCache<Integer, Integer> cache) {
                                cache.remove(key);
                                return null;
                            }
                        });
                        tx.commit();
                    }
                    fail();
                } catch (TransactionOptimisticException e) {
                    log.info("Expected exception: " + e);
                }
                checkValue(key, null, cache.getName());
                cache.put(key, 1);
                try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                    boolean replace = cache.replace(key, 2);
                    assertTrue(replace);
                    tx.commit();
                }
                checkValue(key, 2, cache.getName());
            }
        } finally {
            destroyCache(ccfg.getName());
        }
    }
}
Also used : TransactionOptimisticException(org.apache.ignite.transactions.TransactionOptimisticException) IgniteCache(org.apache.ignite.IgniteCache) IgniteTransactions(org.apache.ignite.IgniteTransactions) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Transaction(org.apache.ignite.transactions.Transaction) Ignite(org.apache.ignite.Ignite)

Example 30 with IgniteCache

use of org.apache.ignite.IgniteCache in project ignite by apache.

the class CacheSerializableTransactionsTest method txNoConflictUpdate.

/**
 * @throws Exception If failed.
 * @param noVal If {@code true} there is no cache value when do update in tx.
 * @param rmv If {@code true} tests remove, otherwise put.
 * @param getAfterUpdate If {@code true} tries to get value in tx after update.
 */
private void txNoConflictUpdate(boolean noVal, boolean rmv, boolean getAfterUpdate) throws Exception {
    Ignite ignite0 = ignite(0);
    final IgniteTransactions txs = ignite0.transactions();
    for (CacheConfiguration<Integer, Integer> ccfg : cacheConfigurations()) {
        logCacheInfo(ccfg);
        try {
            IgniteCache<Integer, Integer> cache = ignite0.createCache(ccfg);
            List<Integer> keys = testKeys(cache);
            for (Integer key : keys) {
                log.info("Test key: " + key);
                if (!noVal)
                    cache.put(key, -1);
                try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                    if (rmv)
                        cache.remove(key);
                    else
                        cache.put(key, 2);
                    if (getAfterUpdate) {
                        Object val = cache.get(key);
                        if (rmv)
                            assertNull(val);
                        else
                            assertEquals(2, val);
                    }
                    if (!rmv)
                        updateKey(cache, key, 1);
                    tx.commit();
                }
                checkValue(key, rmv ? null : 2, cache.getName());
                try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                    cache.put(key, 3);
                    tx.commit();
                }
                checkValue(key, 3, cache.getName());
            }
            Map<Integer, Integer> map = new HashMap<>();
            for (int i = 0; i < 100; i++) map.put(i, i);
            try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                if (rmv)
                    cache.removeAll(map.keySet());
                else
                    cache.putAll(map);
                if (getAfterUpdate) {
                    Map<Integer, Integer> res = cache.getAll(map.keySet());
                    if (rmv) {
                        for (Integer key : map.keySet()) assertNull(res.get(key));
                    } else {
                        for (Integer key : map.keySet()) assertEquals(map.get(key), res.get(key));
                    }
                }
                txAsync(cache, PESSIMISTIC, REPEATABLE_READ, new IgniteClosure<IgniteCache<Integer, Integer>, Void>() {

                    @Override
                    public Void apply(IgniteCache<Integer, Integer> cache) {
                        Map<Integer, Integer> map = new HashMap<>();
                        for (int i = 0; i < 100; i++) map.put(i, -1);
                        cache.putAll(map);
                        return null;
                    }
                });
                tx.commit();
            }
            for (int i = 0; i < 100; i++) checkValue(i, rmv ? null : i, cache.getName());
        } finally {
            destroyCache(ccfg.getName());
        }
    }
}
Also used : ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) IgniteCache(org.apache.ignite.IgniteCache) IgniteTransactions(org.apache.ignite.IgniteTransactions) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Transaction(org.apache.ignite.transactions.Transaction) Ignite(org.apache.ignite.Ignite) Map(java.util.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) TreeMap(java.util.TreeMap)

Aggregations

IgniteCache (org.apache.ignite.IgniteCache)403 Ignite (org.apache.ignite.Ignite)233 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)137 Cache (javax.cache.Cache)98 Transaction (org.apache.ignite.transactions.Transaction)87 ArrayList (java.util.ArrayList)69 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)65 CacheConfiguration (org.apache.ignite.configuration.CacheConfiguration)60 Map (java.util.Map)55 IgniteException (org.apache.ignite.IgniteException)55 List (java.util.List)51 ThreadLocalRandom (java.util.concurrent.ThreadLocalRandom)48 IgniteCheckedException (org.apache.ignite.IgniteCheckedException)46 HashMap (java.util.HashMap)45 CacheException (javax.cache.CacheException)43 Random (java.util.Random)37 SqlFieldsQuery (org.apache.ignite.cache.query.SqlFieldsQuery)32 CountDownLatch (java.util.concurrent.CountDownLatch)30 ClusterNode (org.apache.ignite.cluster.ClusterNode)30 IgniteInternalFuture (org.apache.ignite.internal.IgniteInternalFuture)28