ignite-973 - fix
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f0be45e3 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f0be45e3 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f0be45e3 Branch: refs/heads/ignite-1093-2 Commit: f0be45e309f9a594334209a251c069f9ba3db120 Parents: e51fb42 Author: S.Vladykin <[email protected]> Authored: Tue Sep 22 13:36:40 2015 +0300 Committer: S.Vladykin <[email protected]> Committed: Tue Sep 22 13:36:40 2015 +0300 ---------------------------------------------------------------------- .../query/h2/opt/GridH2AbstractKeyValueRow.java | 3 +++ .../internal/processors/query/h2/opt/GridH2Table.java | 10 +++++++++- .../internal/processors/cache/CacheIndexStreamerTest.java | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/f0be45e3/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java index 07c49a5..4a16284 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java @@ -119,6 +119,9 @@ public abstract class GridH2AbstractKeyValueRow extends GridH2Row { * @throws IgniteCheckedException If failed. */ public synchronized void onUnswap(Object val, boolean beforeRmv) throws IgniteCheckedException { + if (peekValue(VAL_COL) != null) + return; + setValue(VAL_COL, desc.wrap(val, desc.valueType())); notifyAll(); http://git-wip-us.apache.org/repos/asf/ignite/blob/f0be45e3/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java index 66241b4..bf318b2 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java @@ -55,6 +55,8 @@ import org.h2.value.Value; import org.jetbrains.annotations.Nullable; import org.jsr166.ConcurrentHashMap8; +import static org.apache.ignite.internal.processors.query.h2.opt.GridH2AbstractKeyValueRow.VAL_COL; + /** * H2 Table implementation. */ @@ -372,6 +374,12 @@ public class GridH2Table extends TableBase { if (!del) { GridH2Row old = pk.put(row); // Put to PK. + if (old instanceof GridH2AbstractKeyValueRow) { // Unswap value on replace. + GridH2AbstractKeyValueRow kvOld = (GridH2AbstractKeyValueRow)old; + + kvOld.onUnswap(kvOld.getValue(VAL_COL), true); + } + int len = idxs.size(); int i = 1; @@ -399,7 +407,7 @@ public class GridH2Table extends TableBase { GridH2Row old = pk.remove(row); if (old instanceof GridH2AbstractKeyValueRow) { // Unswap value. - Value v = row.getValue(GridH2AbstractKeyValueRow.VAL_COL); + Value v = row.getValue(VAL_COL); if (v != null) ((GridH2AbstractKeyValueRow)old).onUnswap(v.getObject(), true); http://git-wip-us.apache.org/repos/asf/ignite/blob/f0be45e3/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheIndexStreamerTest.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheIndexStreamerTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheIndexStreamerTest.java index 25c3b81..23f4e91 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheIndexStreamerTest.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheIndexStreamerTest.java @@ -31,7 +31,7 @@ import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; -import org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi; +import org.apache.ignite.spi.swapspace.inmemory.GridTestSwapSpaceSpi; import org.apache.ignite.testframework.GridTestUtils; import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; @@ -52,7 +52,7 @@ public class CacheIndexStreamerTest extends GridCommonAbstractTest { ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(ipFinder); - cfg.setSwapSpaceSpi(new FileSwapSpaceSpi()); + cfg.setSwapSpaceSpi(new GridTestSwapSpaceSpi()); return cfg; }
