Search in sources :

Example 1 with CacheWriteSynchronizationMode

use of org.apache.ignite.cache.CacheWriteSynchronizationMode in project ignite by apache.

the class GridDhtAtomicAbstractUpdateFuture method addWriteEntry.

/**
 * @param affAssignment Affinity assignment.
 * @param entry Entry to map.
 * @param val Value to write.
 * @param entryProcessor Entry processor.
 * @param ttl TTL (optional).
 * @param conflictExpireTime Conflict expire time (optional).
 * @param conflictVer Conflict version (optional).
 * @param addPrevVal If {@code true} sends previous value to backups.
 * @param prevVal Previous value.
 * @param updateCntr Partition update counter.
 */
@SuppressWarnings("ForLoopReplaceableByForEach")
final void addWriteEntry(AffinityAssignment affAssignment, GridDhtCacheEntry entry, @Nullable CacheObject val, EntryProcessor<Object, Object, Object> entryProcessor, long ttl, long conflictExpireTime, @Nullable GridCacheVersion conflictVer, boolean addPrevVal, @Nullable CacheObject prevVal, long updateCntr) {
    AffinityTopologyVersion topVer = updateReq.topologyVersion();
    List<ClusterNode> affNodes = affAssignment.get(entry.partition());
    // Client has seen that rebalancing finished, it is safe to use affinity mapping.
    List<ClusterNode> dhtNodes = updateReq.affinityMapping() ? affNodes : cctx.dht().topology().nodes(entry.partition(), affAssignment, affNodes);
    if (dhtNodes == null)
        dhtNodes = affNodes;
    if (log.isDebugEnabled())
        log.debug("Mapping entry to DHT nodes [nodes=" + U.nodeIds(dhtNodes) + ", entry=" + entry + ']');
    CacheWriteSynchronizationMode syncMode = updateReq.writeSynchronizationMode();
    addDhtKey(entry.key(), dhtNodes);
    for (int i = 0; i < dhtNodes.size(); i++) {
        ClusterNode node = dhtNodes.get(i);
        UUID nodeId = node.id();
        if (!nodeId.equals(cctx.localNodeId())) {
            GridDhtAtomicAbstractUpdateRequest updateReq = mappings.get(nodeId);
            if (updateReq == null) {
                updateReq = createRequest(node.id(), futId, writeVer, syncMode, topVer, ttl, conflictExpireTime, conflictVer);
                mappings.put(nodeId, updateReq);
            }
            updateReq.addWriteValue(entry.key(), val, entryProcessor, ttl, conflictExpireTime, conflictVer, addPrevVal, prevVal, updateCntr);
        }
    }
}
Also used : ClusterNode(org.apache.ignite.cluster.ClusterNode) AffinityTopologyVersion(org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion) CacheWriteSynchronizationMode(org.apache.ignite.cache.CacheWriteSynchronizationMode) UUID(java.util.UUID)

Example 2 with CacheWriteSynchronizationMode

use of org.apache.ignite.cache.CacheWriteSynchronizationMode in project ignite by apache.

the class GridDhtAtomicAbstractUpdateFuture method addNearWriteEntries.

/**
 * @param nearNode Near node.
 * @param readers Entry readers.
 * @param entry Entry.
 * @param val Value.
 * @param entryProcessor Entry processor..
 * @param ttl TTL for near cache update (optional).
 * @param expireTime Expire time for near cache update (optional).
 */
final void addNearWriteEntries(ClusterNode nearNode, GridDhtCacheEntry.ReaderId[] readers, GridDhtCacheEntry entry, @Nullable CacheObject val, EntryProcessor<Object, Object, Object> entryProcessor, long ttl, long expireTime) {
    assert readers != null;
    CacheWriteSynchronizationMode syncMode = updateReq.writeSynchronizationMode();
    addNearKey(entry.key(), readers);
    AffinityTopologyVersion topVer = updateReq.topologyVersion();
    for (int i = 0; i < readers.length; i++) {
        GridDhtCacheEntry.ReaderId reader = readers[i];
        if (nearNode.id().equals(reader.nodeId()))
            continue;
        GridDhtAtomicAbstractUpdateRequest updateReq = mappings.get(reader.nodeId());
        if (updateReq == null) {
            ClusterNode node = cctx.discovery().node(reader.nodeId());
            // Node left the grid.
            if (node == null) {
                try {
                    entry.removeReader(reader.nodeId(), -1L);
                } catch (GridCacheEntryRemovedException ignore) {
                    // Assume hold entry lock.
                    assert false;
                }
                continue;
            }
            updateReq = createRequest(node.id(), futId, writeVer, syncMode, topVer, ttl, expireTime, null);
            mappings.put(node.id(), updateReq);
            addedReader = true;
        }
        updateReq.addNearWriteValue(entry.key(), val, entryProcessor, ttl, expireTime);
    }
}
Also used : ClusterNode(org.apache.ignite.cluster.ClusterNode) GridDhtCacheEntry(org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry) AffinityTopologyVersion(org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion) CacheWriteSynchronizationMode(org.apache.ignite.cache.CacheWriteSynchronizationMode) GridCacheEntryRemovedException(org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException)

Example 3 with CacheWriteSynchronizationMode

use of org.apache.ignite.cache.CacheWriteSynchronizationMode in project ignite by apache.

the class AbstractDataTypesCoverageTest method parameters.

/**
 * @return Test parameters.
 */
@Parameterized.Parameters(name = "atomicityMode={1}, cacheMode={2}, ttlFactory={3}, backups={4}," + " evictionFactory={5}, onheapCacheEnabled={6}, writeSyncMode={7}, persistenceEnabled={8}, useBinaryArrays={9}")
public static Collection parameters() {
    Set<Object[]> params = new HashSet<>();
    Object[] baseParamLine = { null, CacheAtomicityMode.ATOMIC, CacheMode.PARTITIONED, null, 2, null, false, CacheWriteSynchronizationMode.FULL_SYNC, false, DFLT_IGNITE_USE_BINARY_ARRAYS };
    Object[] paramLine = null;
    for (CacheAtomicityMode atomicityMode : CacheAtomicityMode.values()) {
        paramLine = Arrays.copyOf(baseParamLine, baseParamLine.length);
        paramLine[1] = atomicityMode;
        params.add(paramLine);
    }
    for (CacheMode cacheMode : CacheMode.values()) {
        paramLine = Arrays.copyOf(baseParamLine, baseParamLine.length);
        paramLine[2] = cacheMode;
        params.add(paramLine);
    }
    assert paramLine != null;
    if ((paramLine[1]) != CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT) {
        for (Factory ttlFactory : TTL_FACTORIES) {
            paramLine = Arrays.copyOf(baseParamLine, baseParamLine.length);
            paramLine[3] = ttlFactory;
            params.add(paramLine);
        }
    }
    for (int backups : new int[] { 0, 1, 2 }) {
        paramLine = Arrays.copyOf(baseParamLine, baseParamLine.length);
        paramLine[4] = backups;
        params.add(paramLine);
    }
    for (Factory evictionFactory : EVICTION_FACTORIES) {
        paramLine = Arrays.copyOf(baseParamLine, baseParamLine.length);
        paramLine[5] = evictionFactory;
        params.add(paramLine);
    }
    for (Boolean onheapCacheEnabled : BOOLEANS) {
        paramLine = Arrays.copyOf(baseParamLine, baseParamLine.length);
        paramLine[6] = onheapCacheEnabled;
        params.add(paramLine);
    }
    for (CacheWriteSynchronizationMode writeSyncMode : CacheWriteSynchronizationMode.values()) {
        paramLine = Arrays.copyOf(baseParamLine, baseParamLine.length);
        paramLine[7] = writeSyncMode;
        params.add(paramLine);
    }
    for (boolean persistenceEnabled : BOOLEANS) {
        paramLine = Arrays.copyOf(baseParamLine, baseParamLine.length);
        paramLine[8] = persistenceEnabled;
        params.add(paramLine);
    }
    for (boolean useTypedArrays : BOOLEANS) {
        paramLine = Arrays.copyOf(baseParamLine, baseParamLine.length);
        paramLine[9] = useTypedArrays;
        params.add(paramLine);
    }
    for (Object[] pLine : params) pLine[0] = UUID.randomUUID();
    return params;
}
Also used : CacheWriteSynchronizationMode(org.apache.ignite.cache.CacheWriteSynchronizationMode) FifoEvictionPolicyFactory(org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicyFactory) Factory(javax.cache.configuration.Factory) CacheAtomicityMode(org.apache.ignite.cache.CacheAtomicityMode) CacheMode(org.apache.ignite.cache.CacheMode) HashSet(java.util.HashSet)

Example 4 with CacheWriteSynchronizationMode

use of org.apache.ignite.cache.CacheWriteSynchronizationMode in project ignite by apache.

the class JmhCacheAbstractBenchmark method cacheConfiguration.

/**
 * Create cache configuration.
 *
 * @return Cache configuration.
 */
protected CacheConfiguration cacheConfiguration() {
    CacheConfiguration cacheCfg = new CacheConfiguration();
    cacheCfg.setName(DEFAULT_CACHE_NAME);
    cacheCfg.setCacheMode(CacheMode.PARTITIONED);
    cacheCfg.setRebalanceMode(CacheRebalanceMode.SYNC);
    // Set atomicity mode.
    CacheAtomicityMode atomicityMode = enumProperty(PROP_ATOMICITY_MODE, CacheAtomicityMode.class);
    if (atomicityMode != null)
        cacheCfg.setAtomicityMode(atomicityMode);
    // Set write synchronization mode.
    CacheWriteSynchronizationMode writeSyncMode = enumProperty(PROP_WRITE_SYNC_MODE, CacheWriteSynchronizationMode.class);
    if (writeSyncMode != null)
        cacheCfg.setWriteSynchronizationMode(writeSyncMode);
    // Set backups.
    cacheCfg.setBackups(intProperty(PROP_BACKUPS));
    return cacheCfg;
}
Also used : CacheWriteSynchronizationMode(org.apache.ignite.cache.CacheWriteSynchronizationMode) CacheAtomicityMode(org.apache.ignite.cache.CacheAtomicityMode) CacheConfiguration(org.apache.ignite.configuration.CacheConfiguration)

Example 5 with CacheWriteSynchronizationMode

use of org.apache.ignite.cache.CacheWriteSynchronizationMode in project ignite by apache.

the class TxPessimisticDeadlockDetectionTest method testDeadlocksPartitionedNear.

/**
 * @throws Exception If failed.
 */
@Test
public void testDeadlocksPartitionedNear() throws Exception {
    for (CacheWriteSynchronizationMode syncMode : CacheWriteSynchronizationMode.values()) {
        doTestDeadlocks(createCache(PARTITIONED, syncMode, true), ORDINAL_START_KEY);
        doTestDeadlocks(createCache(PARTITIONED, syncMode, true), CUSTOM_START_KEY);
    }
}
Also used : CacheWriteSynchronizationMode(org.apache.ignite.cache.CacheWriteSynchronizationMode) Test(org.junit.Test)

Aggregations

CacheWriteSynchronizationMode (org.apache.ignite.cache.CacheWriteSynchronizationMode)20 Test (org.junit.Test)9 ClusterNode (org.apache.ignite.cluster.ClusterNode)5 CacheAtomicityMode (org.apache.ignite.cache.CacheAtomicityMode)4 AffinityTopologyVersion (org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion)4 UUID (java.util.UUID)3 IgniteCache (org.apache.ignite.IgniteCache)3 CacheConfiguration (org.apache.ignite.configuration.CacheConfiguration)3 HashSet (java.util.HashSet)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1 CacheException (javax.cache.CacheException)1 Factory (javax.cache.configuration.Factory)1 IgniteCheckedException (org.apache.ignite.IgniteCheckedException)1 IgniteClientDisconnectedException (org.apache.ignite.IgniteClientDisconnectedException)1 IgniteException (org.apache.ignite.IgniteException)1 CacheMode (org.apache.ignite.cache.CacheMode)1 FifoEvictionPolicyFactory (org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicyFactory)1 NearCacheConfiguration (org.apache.ignite.configuration.NearCacheConfiguration)1 DiscoveryEvent (org.apache.ignite.events.DiscoveryEvent)1