You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2018/03/19 06:26:46 UTC
[09/50] [abbrv] ignite git commit: IGNITE-7803 Fixed regression in
tests.
IGNITE-7803 Fixed regression in tests.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/90c0af88
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/90c0af88
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/90c0af88
Branch: refs/heads/ignite-zk
Commit: 90c0af887508ebace570cd13e7cf6b4369a995dc
Parents: 6dbcf7e
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Thu Mar 8 00:17:20 2018 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Mar 8 00:17:20 2018 +0700
----------------------------------------------------------------------
.../client/impl/ClientCacheFlagsCodecTest.java | 35 +++----
.../internal/client/GridClientCacheFlag.java | 48 ++++++++++
.../impl/connection/GridClientConnection.java | 18 +---
.../connection/GridClientNioTcpConnection.java | 6 +-
.../handlers/cache/GridCacheCommandHandler.java | 96 +++++++++-----------
.../cache/GridCacheCommandHandlerSelfTest.java | 9 +-
.../http/jetty/GridJettyRestHandler.java | 4 +-
7 files changed, 120 insertions(+), 96 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/90c0af88/modules/clients/src/test/java/org/apache/ignite/internal/client/impl/ClientCacheFlagsCodecTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/client/impl/ClientCacheFlagsCodecTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/client/impl/ClientCacheFlagsCodecTest.java
index 22e9a25..a9bda0a 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/client/impl/ClientCacheFlagsCodecTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/client/impl/ClientCacheFlagsCodecTest.java
@@ -18,16 +18,14 @@
package org.apache.ignite.internal.client.impl;
import java.util.Arrays;
-import java.util.Collections;
import java.util.EnumSet;
+import java.util.Set;
+
import junit.framework.TestCase;
+
import org.apache.ignite.internal.client.GridClientCacheFlag;
-import org.apache.ignite.internal.client.impl.connection.GridClientConnection;
-import org.apache.ignite.internal.processors.rest.handlers.cache.GridCacheCommandHandler;
import org.apache.ignite.internal.util.typedef.F;
-import static org.apache.ignite.internal.client.GridClientCacheFlag.KEEP_BINARIES;
-
/**
* Tests conversions between GridClientCacheFlag.
*/
@@ -37,16 +35,13 @@ public class ClientCacheFlagsCodecTest extends TestCase {
*/
public void testEncodingDecodingFullness() {
for (GridClientCacheFlag f : GridClientCacheFlag.values()) {
- if (f == KEEP_BINARIES)
- continue;
-
- int bits = GridClientConnection.encodeCacheFlags(Collections.singleton(f));
+ int bits = GridClientCacheFlag.encodeCacheFlags(EnumSet.of(f));
assertTrue(bits != 0);
- boolean out = GridCacheCommandHandler.parseCacheFlags(bits);
+ Set<GridClientCacheFlag> out = GridClientCacheFlag.parseCacheFlags(bits);
- assertEquals(out, true);
+ assertTrue(out.contains(f));
}
}
@@ -54,9 +49,10 @@ public class ClientCacheFlagsCodecTest extends TestCase {
* Tests that groups of client flags can be correctly converted to corresponding server flag groups.
*/
public void testGroupEncodingDecoding() {
- // all
+ // All.
doTestGroup(GridClientCacheFlag.values());
- // none
+
+ // None.
doTestGroup();
}
@@ -64,15 +60,14 @@ public class ClientCacheFlagsCodecTest extends TestCase {
* @param flags Client flags to be encoded, decoded and checked.
*/
private void doTestGroup(GridClientCacheFlag... flags) {
- EnumSet<GridClientCacheFlag> flagSet = F.isEmpty(flags) ? EnumSet.noneOf(GridClientCacheFlag.class) :
- EnumSet.copyOf(Arrays.asList(flags));
-
- int bits = GridClientConnection.encodeCacheFlags(flagSet);
+ EnumSet<GridClientCacheFlag> flagSet = F.isEmpty(flags)
+ ? EnumSet.noneOf(GridClientCacheFlag.class)
+ : EnumSet.copyOf(Arrays.asList(flags));
- boolean out = GridCacheCommandHandler.parseCacheFlags(bits);
+ int bits = GridClientCacheFlag.encodeCacheFlags(flagSet);
- int length = flagSet.contains(KEEP_BINARIES) ? flagSet.size() - 1 : flagSet.size();
+ Set<GridClientCacheFlag> out = GridClientCacheFlag.parseCacheFlags(bits);
- assertEquals(length > 0, out);
+ assertTrue(out.containsAll(flagSet));
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/90c0af88/modules/core/src/main/java/org/apache/ignite/internal/client/GridClientCacheFlag.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/GridClientCacheFlag.java b/modules/core/src/main/java/org/apache/ignite/internal/client/GridClientCacheFlag.java
index 2e4831e..2e26dd8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/GridClientCacheFlag.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/GridClientCacheFlag.java
@@ -18,6 +18,8 @@
package org.apache.ignite.internal.client;
import java.util.Collection;
+import java.util.EnumSet;
+import java.util.Set;
/**
* Cache projection flags that specify projection behaviour.
@@ -38,6 +40,12 @@ public enum GridClientCacheFlag {
KEEP_BINARIES;
/** */
+ public static final int SKIP_STORE_MASK = 0b1;
+
+ /** */
+ public static final int KEEP_BINARIES_MASK = 0b10;
+
+ /** */
private static final GridClientCacheFlag[] VALS = values();
/**
@@ -49,4 +57,44 @@ public enum GridClientCacheFlag {
public static GridClientCacheFlag fromOrdinal(int ord) {
return ord >= 0 && ord < VALS.length ? VALS[ord] : null;
}
+
+ /**
+ * Encodes cache flags to bit map.
+ *
+ * @param flagSet Set of flags to be encoded.
+ * @return Bit map.
+ */
+ public static int encodeCacheFlags(Collection<GridClientCacheFlag> flagSet) {
+ int bits = 0;
+
+ if (flagSet.contains(SKIP_STORE))
+ bits |= SKIP_STORE_MASK;
+
+ if (flagSet.contains(KEEP_BINARIES))
+ bits |= KEEP_BINARIES_MASK;
+
+ return bits;
+ }
+
+ /**
+ * Retrieves cache flags from corresponding bits.
+ *
+ * @param cacheFlagsBits Integer representation of cache flags bit set.
+ * @return Cache flags.
+ */
+ public static Set<GridClientCacheFlag> parseCacheFlags(int cacheFlagsBits) {
+ boolean skipStore = (cacheFlagsBits & SKIP_STORE_MASK) != 0;
+ boolean keepBinaries = (cacheFlagsBits & KEEP_BINARIES_MASK) != 0;
+
+ if (skipStore & keepBinaries)
+ return EnumSet.of(SKIP_STORE, KEEP_BINARIES);
+
+ if (skipStore)
+ return EnumSet.of(SKIP_STORE);
+
+ if (keepBinaries)
+ return EnumSet.of(KEEP_BINARIES);
+
+ return EnumSet.noneOf(GridClientCacheFlag.class);
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/90c0af88/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientConnection.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientConnection.java b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientConnection.java
index 0d7b9e3..c75bd24 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientConnection.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientConnection.java
@@ -25,6 +25,7 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
import javax.net.ssl.SSLContext;
+
import org.apache.ignite.internal.client.GridClientCacheFlag;
import org.apache.ignite.internal.client.GridClientClosedException;
import org.apache.ignite.internal.client.GridClientDataMetrics;
@@ -106,21 +107,6 @@ public abstract class GridClientConnection {
}
/**
- * Encodes cache flags to bit map.
- *
- * @param flagSet Set of flags to be encoded.
- * @return Bit map.
- */
- public static int encodeCacheFlags(Collection<GridClientCacheFlag> flagSet) {
- int bits = 0;
-
- if (flagSet.contains(GridClientCacheFlag.SKIP_STORE))
- bits |= 1;
-
- return bits;
- }
-
- /**
* Puts key-value pair into cache.
*
* @param cacheName Cache name.
@@ -172,7 +158,7 @@ public abstract class GridClientConnection {
* @param destNodeId Destination node ID.
* @return Whether entry was actually removed.
* @throws GridClientConnectionResetException In case of error.
- * @throws org.apache.ignite.internal.client.GridClientClosedException If client was manually closed before request was sent over network.
+ * @throws GridClientClosedException If client was manually closed before request was sent over network.
*/
public abstract <K> GridClientFutureAdapter<Boolean> cacheRemove(String cacheName, K key,
Set<GridClientCacheFlag> flags, UUID destNodeId)
http://git-wip-us.apache.org/repos/asf/ignite/blob/90c0af88/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientNioTcpConnection.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientNioTcpConnection.java b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientNioTcpConnection.java
index e117cc8..6e55df8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientNioTcpConnection.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/connection/GridClientNioTcpConnection.java
@@ -38,6 +38,7 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.SSLContext;
+
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.client.GridClientAuthenticationException;
@@ -83,6 +84,7 @@ import org.jetbrains.annotations.Nullable;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.apache.ignite.internal.client.GridClientCacheFlag.KEEP_BINARIES;
+import static org.apache.ignite.internal.client.GridClientCacheFlag.encodeCacheFlags;
import static org.apache.ignite.internal.client.impl.connection.GridClientConnectionCloseReason.CONN_IDLE;
import static org.apache.ignite.internal.client.impl.connection.GridClientConnectionCloseReason.FAILED;
import static org.apache.ignite.internal.processors.rest.client.message.GridClientCacheRequest.GridCacheOperation.APPEND;
@@ -97,8 +99,8 @@ import static org.apache.ignite.internal.processors.rest.client.message.GridClie
import static org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.MARSHALLER;
/**
- * This class performs request to grid over tcp protocol. Serialization is performed with marshaller
- * provided.
+ * This class performs request to grid over TCP protocol.
+ * Serialization is performed with marshaller provided.
*/
public class GridClientNioTcpConnection extends GridClientConnection {
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/90c0af88/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index 0a545b4..b1f49ba 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -51,6 +51,7 @@ import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.client.GridClientCacheFlag;
import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.cache.CacheConfigurationOverride;
import org.apache.ignite.internal.processors.cache.CacheInvokeEntry;
@@ -83,6 +84,8 @@ import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.cache.CacheMode.REPLICATED;
import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
import static org.apache.ignite.internal.GridClosureCallMode.BALANCE;
+import static org.apache.ignite.internal.client.GridClientCacheFlag.KEEP_BINARIES;
+import static org.apache.ignite.internal.client.GridClientCacheFlag.SKIP_STORE;
import static org.apache.ignite.internal.processors.query.QueryUtils.TEMPLATE_PARTITIONED;
import static org.apache.ignite.internal.processors.query.QueryUtils.TEMPLATE_REPLICATED;
import static org.apache.ignite.internal.processors.rest.GridRestCommand.ATOMIC_DECREMENT;
@@ -182,22 +185,6 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
}
/**
- * Retrieves cache flags from corresponding bits.
- *
- * @param cacheFlagsBits Integer representation of cache flags bit set.
- * @return Skip store flag.
- */
- public static boolean parseCacheFlags(int cacheFlagsBits) {
- if (cacheFlagsBits == 0)
- return false;
-
- if ((cacheFlagsBits & 1) != 0)
- return true;
-
- return false;
- }
-
- /**
* Handles append and prepend commands.
*
* @param ctx Kernal context.
@@ -377,7 +364,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
final Object key = req0.key();
- final boolean skipStore = parseCacheFlags(req0.cacheFlags());
+ final Set<GridClientCacheFlag> cacheFlags = GridClientCacheFlag.parseCacheFlags(req0.cacheFlags());
try {
GridRestCommand cmd = req0.command();
@@ -447,70 +434,70 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
}
case CACHE_CONTAINS_KEYS: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new ContainsKeysCommand(getKeys(req0)));
break;
}
case CACHE_CONTAINS_KEY: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new ContainsKeyCommand(key));
break;
}
case CACHE_GET: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new GetCommand(key));
break;
}
case CACHE_GET_AND_PUT: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new GetAndPutCommand(key, getValue(req0)));
break;
}
case CACHE_GET_AND_REPLACE: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new GetAndReplaceCommand(key, getValue(req0)));
break;
}
case CACHE_GET_AND_PUT_IF_ABSENT: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new GetAndPutIfAbsentCommand(key, getValue(req0)));
break;
}
case CACHE_PUT_IF_ABSENT: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new PutIfAbsentCommand(key, ttl, getValue(req0)));
break;
}
case CACHE_GET_ALL: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new GetAllCommand(getKeys(req0)));
break;
}
case CACHE_PUT: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key, new
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key, new
PutCommand(key, ttl, getValue(req0)));
break;
}
case CACHE_ADD: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new AddCommand(key, ttl, getValue(req0)));
break;
@@ -533,35 +520,35 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
// HashMap wrapping for correct serialization
map = new HashMap<>(map);
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new PutAllCommand(map));
break;
}
case CACHE_REMOVE: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new RemoveCommand(key));
break;
}
case CACHE_REMOVE_VALUE: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new RemoveValueCommand(key, getValue(req0)));
break;
}
case CACHE_REPLACE_VALUE: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new ReplaceValueCommand(key, getValue(req0), req0.value2()));
break;
}
case CACHE_GET_AND_REMOVE: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new GetAndRemoveCommand(key));
break;
@@ -573,7 +560,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
// HashSet wrapping for correct serialization
Set<Object> keys = map == null ? null : new HashSet<>(map.keySet());
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new RemoveAllCommand(keys));
break;
@@ -589,7 +576,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
GridCompoundFuture compFut = new GridCompoundFuture();
for (Object cName : cacheNames)
- compFut.add(executeCommand(req.destinationId(), req.clientId(), (String)cName, skipStore, key,
+ compFut.add(executeCommand(req.destinationId(), req.clientId(), (String)cName, cacheFlags, key,
new RemoveAllCommand(null)));
compFut.markInitialized();
@@ -623,7 +610,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
if (val == null)
throw new IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new ReplaceCommand(key, ttl, val));
break;
@@ -633,21 +620,21 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
final Object val1 = req0.value();
final Object val2 = req0.value2();
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new CasCommand(val2, val1, key));
break;
}
case CACHE_APPEND: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new AppendCommand(key, req0));
break;
}
case CACHE_PREPEND: {
- fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, cacheFlags, key,
new PrependCommand(key, req0));
break;
@@ -680,12 +667,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
return fut;
}
- catch (IgniteException e) {
- U.error(log, "Failed to execute cache command: " + req, e);
-
- return new GridFinishedFuture<>(e);
- }
- catch (IgniteCheckedException e) {
+ catch (IgniteException | IgniteCheckedException e) {
U.error(log, "Failed to execute cache command: " + req, e);
return new GridFinishedFuture<>(e);
@@ -741,7 +723,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
* @param destId Target node Id for the operation. If {@code null} - operation could be executed anywhere.
* @param clientId Client ID.
* @param cacheName Cache name.
- * @param skipStore Skip store.
+ * @param cacheFlags Cache flags.
* @param key Key to set affinity mapping in the response.
* @param op Operation to perform.
* @return Operation result in future.
@@ -751,7 +733,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
@Nullable UUID destId,
UUID clientId,
final String cacheName,
- final boolean skipStore,
+ final Set<GridClientCacheFlag> cacheFlags,
final Object key,
final CacheProjectionCommand op) throws IgniteCheckedException {
@@ -761,8 +743,10 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
if (locExec) {
IgniteInternalCache<?, ?> prj = localCache(cacheName)
.forSubjectId(clientId)
- .setSkipStore(skipStore)
- .keepBinary();
+ .setSkipStore(cacheFlags.contains(SKIP_STORE));
+
+ if (cacheFlags.contains(KEEP_BINARIES))
+ prj = prj.keepBinary();
return op.apply((IgniteInternalCache<Object, Object>)prj, ctx).
chain(resultWrapper((IgniteInternalCache<Object, Object>)prj, key));
@@ -773,7 +757,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
ctx.task().setThreadContext(TC_NO_FAILOVER, true);
return ctx.closure().callAsync(BALANCE,
- new FlaggedCacheOperationCallable(clientId, cacheName, skipStore, op, key),
+ new FlaggedCacheOperationCallable(clientId, cacheName, cacheFlags, op, key),
prj.nodes());
}
}
@@ -902,7 +886,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
/** */
private final String cacheName;
/** */
- private final boolean skipStore;
+ private final Set<GridClientCacheFlag> cacheFlags;
/** */
private final CacheProjectionCommand op;
/** */
@@ -916,19 +900,19 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
/**
* @param clientId Client ID.
* @param cacheName Cache name.
- * @param skipStore Skip store.
+ * @param cacheFlags Cache flags.
* @param op Operation.
* @param key Key.
*/
private FlaggedCacheOperationCallable(UUID clientId,
String cacheName,
- boolean skipStore,
+ Set<GridClientCacheFlag> cacheFlags,
CacheProjectionCommand op,
Object key
) {
this.clientId = clientId;
this.cacheName = cacheName;
- this.skipStore = skipStore;
+ this.cacheFlags = cacheFlags;
this.op = op;
this.key = key;
}
@@ -937,8 +921,10 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
@Override public GridRestResponse call() throws Exception {
IgniteInternalCache<?, ?> prj = cache(g, cacheName)
.forSubjectId(clientId)
- .setSkipStore(skipStore)
- .keepBinary();
+ .setSkipStore(cacheFlags.contains(SKIP_STORE));
+
+ if (cacheFlags.contains(KEEP_BINARIES))
+ prj = prj.keepBinary();
// Need to apply both operation and response transformation remotely
// as cache could be inaccessible on local node and
http://git-wip-us.apache.org/repos/asf/ignite/blob/90c0af88/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
index e34992f..c94ebd8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
@@ -277,10 +277,15 @@ public class GridCacheCommandHandlerSelfTest extends GridCommonAbstractTest {
return fut;
}
+
// Rewriting flagOn result to keep intercepting invocations after it.
- else if ("setSkipStore".equals(mtd.getName()))
+ if ("setSkipStore".equals(mtd.getName()))
+ return proxy;
+
+ if ("forSubjectId".equals(mtd.getName()))
return proxy;
- else if ("forSubjectId".equals(mtd.getName()))
+
+ if ("keepBinary".equals(mtd.getName()))
return proxy;
return mtd.invoke(cache, args);
http://git-wip-us.apache.org/repos/asf/ignite/blob/90c0af88/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
----------------------------------------------------------------------
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
index 1d80eea..85398cc 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
@@ -67,6 +67,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.jetbrains.annotations.Nullable;
+import static org.apache.ignite.internal.client.GridClientCacheFlag.KEEP_BINARIES_MASK;
import static org.apache.ignite.internal.processors.rest.GridRestCommand.CACHE_CONTAINS_KEYS;
import static org.apache.ignite.internal.processors.rest.GridRestCommand.CACHE_GET_ALL;
import static org.apache.ignite.internal.processors.rest.GridRestCommand.CACHE_PUT_ALL;
@@ -625,7 +626,8 @@ public class GridJettyRestHandler extends AbstractHandler {
if (val1 != null)
restReq0.value(val1);
- restReq0.cacheFlags(intValue("cacheFlags", params, 0));
+ // Cache operations via REST will use binary objects.
+ restReq0.cacheFlags(intValue("cacheFlags", params, KEEP_BINARIES_MASK));
restReq0.ttl(longValue("exp", params, null));
if (cmd == CACHE_GET_ALL || cmd == CACHE_PUT_ALL || cmd == CACHE_REMOVE_ALL ||