Repository: incubator-ignite Updated Branches: refs/heads/ignite-990 [created] 3440a8c29
#ignite-990: Add getAllOutTx method to IgniteCache. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/746cee2f Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/746cee2f Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/746cee2f Branch: refs/heads/ignite-990 Commit: 746cee2f102a9b8b25df2f57ff519fc6b4b1bfdb Parents: 97d0bc1 Author: ivasilinets <ivasilin...@gridgain.com> Authored: Wed Jun 3 17:33:13 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Wed Jun 3 17:33:13 2015 +0300 ---------------------------------------------------------------------- .../java/org/apache/ignite/IgniteCache.java | 11 ++++++++++ .../processors/cache/GridCacheAdapter.java | 9 +++++++- .../processors/cache/GridCacheProxyImpl.java | 14 +++++++++++- .../processors/cache/IgniteCacheProxy.java | 23 ++++++++++++++++++++ .../processors/cache/IgniteInternalCache.java | 12 +++++++++- .../processors/igfs/IgfsMetaManager.java | 2 +- .../GridCacheExAbstractFullApiSelfTest.java | 2 +- 7 files changed, 68 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/746cee2f/modules/core/src/main/java/org/apache/ignite/IgniteCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java index f9007a2..ed03f9b 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java @@ -311,6 +311,17 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS @IgniteAsyncSupported @Override public Map<K, V> getAll(Set<? extends K> keys); + /** + * Gets values from cache. Will bypass started transaction, if any, i.e. will not enlist entries + * and will not lock any keys if pessimistic transaction is started by thread. + * + * @param keys Keys to get values for. + * @return Value. + * @throws IgniteCheckedException If failed. + */ + @IgniteAsyncSupported + @Nullable public Map<K, V> getAllOutTx(Set<? extends K> keys) throws IgniteCheckedException; + /** {@inheritDoc} */ @IgniteAsyncSupported @Override public boolean containsKey(K key); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/746cee2f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java index 9d98ce7..3267438 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java @@ -1220,13 +1220,20 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V } /** {@inheritDoc} */ - @Nullable @Override public Map<K, V> getAllOutTx(List<K> keys) throws IgniteCheckedException { + @Nullable @Override public Map<K, V> getAllOutTx(Set<? extends K> keys) throws IgniteCheckedException { String taskName = ctx.kernalContext().job().currentTaskName(); return getAllAsync(keys, !ctx.config().isReadFromBackup(), /*skip tx*/true, null, null, taskName, true, false) .get(); } + /** {@inheritDoc} */ + @Override public IgniteInternalFuture<Map<K, V>> getAllOutTxAsync(Set<? extends K> keys) { + String taskName = ctx.kernalContext().job().currentTaskName(); + + return getAllAsync(keys, !ctx.config().isReadFromBackup(), /*skip tx*/true, null, null, taskName, true, false); + } + /** * @param keys Keys. * @param reload Reload flag. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/746cee2f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java index 9a6d08a..43bb19d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java @@ -329,7 +329,7 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte } /** {@inheritDoc} */ - @Nullable @Override public Map<K, V> getAllOutTx(List<K> keys) throws IgniteCheckedException { + @Nullable @Override public Map<K, V> getAllOutTx(Set<? extends K> keys) throws IgniteCheckedException { CacheOperationContext prev = gate.enter(opCtx); try { @@ -341,6 +341,18 @@ public class GridCacheProxyImpl<K, V> implements IgniteInternalCache<K, V>, Exte } /** {@inheritDoc} */ + @Nullable @Override public IgniteInternalFuture<Map<K, V>> getAllOutTxAsync(Set<? extends K> keys) throws IgniteCheckedException { + CacheOperationContext prev = gate.enter(opCtx); + + try { + return delegate.getAllOutTxAsync(keys); + } + finally { + gate.leave(prev); + } + } + + /** {@inheritDoc} */ @Override public boolean isIgfsDataCache() { CacheOperationContext prev = gate.enter(opCtx); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/746cee2f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java index f840015..4390993 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java @@ -699,6 +699,29 @@ public class IgniteCacheProxy<K, V> extends AsyncSupportAdapter<IgniteCache<K, V } } + /** {@inheritDoc} */ + @Override public Map<K, V> getAllOutTx(Set<? extends K> keys) { + try { + CacheOperationContext prev = onEnter(opCtx); + + try { + if (isAsync()) { + setFuture(delegate.getAllOutTxAsync(keys)); + + return null; + } + else + return delegate.getAllOutTx(keys); + } + finally { + onLeave(prev); + } + } + catch (IgniteCheckedException e) { + throw cacheException(e); + } + } + /** * @param keys Keys. * @return Values map. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/746cee2f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java index ccce1b7..e291f45 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java @@ -1623,7 +1623,17 @@ public interface IgniteInternalCache<K, V> extends Iterable<Cache.Entry<K, V>> { * @return Value. * @throws IgniteCheckedException If failed. */ - @Nullable public Map<K, V> getAllOutTx(List<K> keys) throws IgniteCheckedException; + @Nullable public Map<K, V> getAllOutTx(Set<? extends K> keys) throws IgniteCheckedException; + + /** + * Gets values from cache. Will bypass started transaction, if any, i.e. will not enlist entries + * and will not lock any keys if pessimistic transaction is started by thread. + * + * @param keys Keys to get values for. + * @return Future for getAllOutTx operation. + * @throws IgniteCheckedException If failed. + */ + @Nullable IgniteInternalFuture<Map<K, V>> getAllOutTxAsync(Set<? extends K> keys) throws IgniteCheckedException; /** * Checks whether this cache is IGFS data cache. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/746cee2f/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java index e33e0d4..b98c5d8 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java @@ -669,7 +669,7 @@ public class IgfsMetaManager extends IgfsManager { private Map<String, IgfsListingEntry> directoryListing(IgniteUuid fileId, boolean skipTx) throws IgniteCheckedException { assert fileId != null; - IgfsFileInfo info = skipTx ? id2InfoPrj.getAllOutTx(Collections.singletonList(fileId)).get(fileId) : + IgfsFileInfo info = skipTx ? id2InfoPrj.getAllOutTx(Collections.singleton(fileId)).get(fileId) : id2InfoPrj.get(fileId); return info == null ? Collections.<String, IgfsListingEntry>emptyMap() : info.listing(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/746cee2f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheExAbstractFullApiSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheExAbstractFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheExAbstractFullApiSelfTest.java index 7a1b7cc..dada45d 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheExAbstractFullApiSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheExAbstractFullApiSelfTest.java @@ -85,7 +85,7 @@ public abstract class GridCacheExAbstractFullApiSelfTest extends GridCacheAbstra } } - cache.getAllOutTx(F.asList("key" + key)); + cache.getAllOutTx(F.asSet("key" + key)); } assertTrue(GridTestUtils.waitForCondition(new PA() {