Repository: incubator-ignite Updated Branches: refs/heads/ignite-1197 [created] 8c4153355
Added handling for GridDhtInvalidPartitionException Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/8c415335 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/8c415335 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/8c415335 Branch: refs/heads/ignite-1197 Commit: 8c415335541f2b582003a9dc93f77adf319525b7 Parents: 63944d4 Author: Yakov Zhdanov <yzhda...@gridgain.com> Authored: Thu Aug 6 15:54:48 2015 +0300 Committer: Yakov Zhdanov <yzhda...@gridgain.com> Committed: Thu Aug 6 15:54:48 2015 +0300 ---------------------------------------------------------------------- .../distributed/dht/GridDhtLocalPartition.java | 51 ++++++++++++++------ 1 file changed, 37 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8c415335/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java index 87c7f0e..192795a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java @@ -645,33 +645,56 @@ public class GridDhtLocalPartition implements Comparable<GridDhtLocalPartition>, return null; return new Iterator<GridDhtCacheEntry>() { - /** */ GridDhtCacheEntry lastEntry; - @Override public boolean hasNext() { - return it.hasNext(); + { + lastEntry = advance(); } - @Override public GridDhtCacheEntry next() { - Map.Entry<byte[], GridCacheSwapEntry> entry = it.next(); + private GridDhtCacheEntry advance() { + if (it.hasNext()) { + Map.Entry<byte[], GridCacheSwapEntry> entry = it.next(); - byte[] keyBytes = entry.getKey(); + byte[] keyBytes = entry.getKey(); - try { - KeyCacheObject key = cctx.toCacheKeyObject(keyBytes); + try { + KeyCacheObject key = cctx.toCacheKeyObject(keyBytes); - lastEntry = (GridDhtCacheEntry)cctx.cache().entryEx(key, false); + lastEntry = (GridDhtCacheEntry)cctx.cache().entryEx(key, false); - lastEntry.unswap(true); + lastEntry.unswap(true); - return lastEntry; - } - catch (IgniteCheckedException e) { - throw new CacheException(e); + return lastEntry; + } + catch (IgniteCheckedException e) { + throw new CacheException(e); + } + catch (GridDhtInvalidPartitionException e) { + if (log.isDebugEnabled()) + log.debug("Got invalid partition exception: " + e); + + return null; + } } + + return null; + } + + @Override public boolean hasNext() { + return lastEntry != null; + } + + @Override public GridDhtCacheEntry next() { + if (lastEntry == null) + throw new NoSuchElementException(); + + return lastEntry; } @Override public void remove() { + if (lastEntry == null) + throw new NoSuchElementException(); + map.remove(lastEntry.key(), lastEntry); } };