/** * @param tx Transaction. * @param keys Keys to load. * @param filter Filter. * @return Future. */ GridFuture<Map<K, V>> txLoadAsync(GridNearTxLocal<K, V> tx, @Nullable Collection<? extends K> keys, @Nullable GridPredicate<GridCacheEntry<K, V>>[] filter, boolean deserializePortable) { assert tx != null; GridNearGetFuture<K, V> fut = new GridNearGetFuture<>(ctx, keys, false, false, tx, filter, CU.subjectId(tx, ctx), tx.resolveTaskName(), deserializePortable); // init() will register future for responses if it has remote mappings. fut.init(); return fut; }
/** {@inheritDoc} */ @Override public GridFuture<Boolean> loadMissing(boolean async, final Collection<? extends K> keys, boolean deserializePortable, final GridBiInClosure<K, V> c) { return cctx.colocated().loadAsync(keys, /*reload*/false, /*force primary*/false, topologyVersion(), CU.subjectId(this, cctx), resolveTaskName(), deserializePortable, null) .chain(new C1<GridFuture<Map<K, V>>, Boolean>() { @Override public Boolean apply(GridFuture<Map<K, V>> f) { try { Map<K, V> map = f.get(); // Must loop through keys, not map entries, // as map entries may not have all the keys. for (K key : keys) c.apply(key, map.get(key)); return true; } catch (Exception e) { setRollbackOnly(); throw new GridClosureException(e); } } }); }
/*events*/true, /*temporary*/true, CU.subjectId(GridCacheTxLocalAdapter.this, cctx), transformClo, resolveTaskName(),
CU.subjectId(tx, ctx), null, tx != null ? tx.resolveTaskName() : null,
CU.subjectId(this, cctx), transformClo, resolveTaskName(),
CU.subjectId(this, cctx), transform ? F.first(txEntry.transformClosures()) : null, resolveTaskName(),
cctx.events().addEvent(entry.partition(), entry.key(), tx, null, EVT_CACHE_OBJECT_READ, newVal, newVal != null, oldVal, hasBytes, CU.subjectId(tx, cctx), null, inTx() ? tx.resolveTaskName() : null);
cached.innerRemove(this, eventNodeId(), nodeId, false, false, true, true, topVer, txEntry.filters(), replicate ? DR_BACKUP : DR_NONE, near() ? null : explicitVer, CU.subjectId(this, cctx), resolveTaskName()); else { txEntry.ttl(), true, true, topVer, txEntry.filters(), replicate ? DR_BACKUP : DR_NONE, txEntry.drExpireTime(), near() ? null : explicitVer, CU.subjectId(this, cctx), resolveTaskName()); cached.innerRemove(this, eventNodeId(), nodeId, false, false, true, true, topVer, txEntry.filters(), replicate ? DR_BACKUP : DR_NONE, near() ? null : explicitVer, CU.subjectId(this, cctx), resolveTaskName());