You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/08/14 11:48:48 UTC
[01/11] ignite git commit: IGNITE-5961 - Fixed pages() method for
FilePageStore
Repository: ignite
Updated Branches:
refs/heads/ignite-5872-5578 64de3ff31 -> 95a425c1b
IGNITE-5961 - Fixed pages() method for FilePageStore
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7199037d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7199037d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7199037d
Branch: refs/heads/ignite-5872-5578
Commit: 7199037d23e6a9115c6b085fb03a3633c73f863d
Parents: a7ac59f
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Thu Aug 10 18:13:17 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Thu Aug 10 18:13:17 2017 +0300
----------------------------------------------------------------------
.../internal/processors/cache/persistence/file/FilePageStore.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7199037d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java
index 7fe1ffe..e6c5379 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java
@@ -535,6 +535,6 @@ public class FilePageStore implements PageStore {
if (!inited)
return 0;
- return (int)(allocated.get() / pageSize);
+ return (int)(allocated.get() - headerSize()) / pageSize;
}
}
[10/11] ignite git commit: IGNITE-4991 Do not print out system
properties when IGNITE_TO_STRING_INCLUDE_SENSITIVE is set to false. This
closes #2428.
Posted by ag...@apache.org.
IGNITE-4991 Do not print out system properties when IGNITE_TO_STRING_INCLUDE_SENSITIVE is set to false. This closes #2428.
Signed-off-by: nikolay_tikhonov <nt...@gridgain.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/18e79e5c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/18e79e5c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/18e79e5c
Branch: refs/heads/ignite-5872-5578
Commit: 18e79e5cbd0c861e9d8832a654b2dec9338a86d6
Parents: 44d60f5
Author: Evgenii Zhuravlev <E....@gmail.com>
Authored: Mon Aug 14 14:13:46 2017 +0300
Committer: nikolay_tikhonov <nt...@gridgain.com>
Committed: Mon Aug 14 14:13:46 2017 +0300
----------------------------------------------------------------------
.../src/main/java/org/apache/ignite/internal/IgniteKernal.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/18e79e5c/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index f5111c3..bae8b74 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -2353,7 +2353,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
private void ackSystemProperties() {
assert log != null;
- if (log.isDebugEnabled())
+ if (log.isDebugEnabled() && S.INCLUDE_SENSITIVE)
for (Map.Entry<Object, Object> entry : snapshot().entrySet())
log.debug("System property [" + entry.getKey() + '=' + entry.getValue() + ']');
}
@@ -2558,7 +2558,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
assert log != null;
// Ack IGNITE_HOME and VM arguments.
- if (log.isInfoEnabled()) {
+ if (log.isInfoEnabled() && S.INCLUDE_SENSITIVE) {
log.info("IGNITE_HOME=" + cfg.getIgniteHome());
log.info("VM arguments: " + rtBean.getInputArguments());
}
[05/11] ignite git commit: IGNITE-6013 Optimized processing response
from cluster.
Posted by ag...@apache.org.
IGNITE-6013 Optimized processing response from cluster.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b02c4812
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b02c4812
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b02c4812
Branch: refs/heads/ignite-5872-5578
Commit: b02c4812d9c145cf127eeaf54ab64709d230a3c7
Parents: 3a390c8
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Fri Aug 11 11:18:42 2017 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Aug 11 11:18:42 2017 +0700
----------------------------------------------------------------------
.../console/agent/handlers/ClusterListener.java | 13 +-
.../ignite/console/agent/rest/RestExecutor.java | 201 +++++++++++++++++--
2 files changed, 194 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/b02c4812/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java
----------------------------------------------------------------------
diff --git a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java
index b811a2d..435ce74 100644
--- a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java
+++ b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/ClusterListener.java
@@ -46,7 +46,7 @@ import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_BUILD_VER;
import static org.apache.ignite.internal.processors.rest.GridRestResponse.STATUS_SUCCESS;
/**
- * API to retranslate topology from Ignite cluster available by node-uri.
+ * API to transfer topology from Ignite cluster available by node-uri.
*/
public class ClusterListener {
/** */
@@ -65,7 +65,7 @@ public class ClusterListener {
private static final long DFLT_TIMEOUT = 3000L;
/** JSON object mapper. */
- private static final ObjectMapper mapper = new GridJettyObjectMapper();
+ private static final ObjectMapper MAPPER = new GridJettyObjectMapper();
/** Latest topology snapshot. */
private TopologySnapshot top;
@@ -234,10 +234,7 @@ public class ClusterListener {
/** */
boolean differentCluster(TopologySnapshot old) {
- if (old == null || F.isEmpty(old.nids))
- return true;
-
- return Collections.disjoint(nids, old.nids);
+ return old == null || F.isEmpty(old.nids) || Collections.disjoint(nids, old.nids);
}
}
@@ -250,7 +247,7 @@ public class ClusterListener {
switch (res.getStatus()) {
case STATUS_SUCCESS:
- List<GridClientNodeBean> nodes = mapper.readValue(res.getData(),
+ List<GridClientNodeBean> nodes = MAPPER.readValue(res.getData(),
new TypeReference<List<GridClientNodeBean>>() {});
TopologySnapshot newTop = new TopologySnapshot(nodes);
@@ -290,7 +287,7 @@ public class ClusterListener {
switch (res.getStatus()) {
case STATUS_SUCCESS:
- List<GridClientNodeBean> nodes = mapper.readValue(res.getData(),
+ List<GridClientNodeBean> nodes = MAPPER.readValue(res.getData(),
new TypeReference<List<GridClientNodeBean>>() {});
TopologySnapshot newTop = new TopologySnapshot(nodes);
http://git-wip-us.apache.org/repos/asf/ignite/blob/b02c4812/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java
----------------------------------------------------------------------
diff --git a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java
index 03eca4e..13989b4 100644
--- a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java
+++ b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestExecutor.java
@@ -17,9 +17,16 @@
package org.apache.ignite.console.agent.rest;
-import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonToken;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import java.io.IOException;
+import java.io.StringWriter;
import java.net.ConnectException;
import java.util.HashMap;
import java.util.Map;
@@ -40,6 +47,9 @@ import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.logger.slf4j.Slf4jLogger;
import org.slf4j.LoggerFactory;
+import static com.fasterxml.jackson.core.JsonToken.END_ARRAY;
+import static com.fasterxml.jackson.core.JsonToken.END_OBJECT;
+import static com.fasterxml.jackson.core.JsonToken.START_ARRAY;
import static org.apache.ignite.internal.processors.rest.GridRestResponse.STATUS_AUTH_FAILED;
import static org.apache.ignite.internal.processors.rest.GridRestResponse.STATUS_FAILED;
import static org.apache.ignite.internal.processors.rest.GridRestResponse.STATUS_SUCCESS;
@@ -52,7 +62,7 @@ public class RestExecutor {
private static final IgniteLogger log = new Slf4jLogger(LoggerFactory.getLogger(RestExecutor.class));
/** JSON object mapper. */
- private static final ObjectMapper mapper = new GridJettyObjectMapper();
+ private static final ObjectMapper MAPPER = new GridJettyObjectMapper();
/** */
private final OkHttpClient httpClient;
@@ -141,34 +151,35 @@ public class RestExecutor {
reqBuilder.url(urlBuilder.build());
try (Response resp = httpClient.newCall(reqBuilder.build()).execute()) {
- String content = resp.body().string();
-
if (resp.isSuccessful()) {
- JsonNode node = mapper.readTree(content);
+ RestResponseHolder res = MAPPER.readValue(resp.body().byteStream(), RestResponseHolder.class);
- int status = node.get("successStatus").asInt();
+ int status = res.getSuccessStatus();
switch (status) {
case STATUS_SUCCESS:
- return RestResult.success(node.get("response").toString());
+ return RestResult.success(res.getResponse());
default:
- return RestResult.fail(status, node.get("error").asText());
+ return RestResult.fail(status, res.getError());
}
}
if (resp.code() == 401)
- return RestResult.fail(STATUS_AUTH_FAILED, "Failed to authenticate in grid. " +
+ return RestResult.fail(STATUS_AUTH_FAILED, "Failed to authenticate in cluster. " +
"Please check agent\'s login and password or node port.");
- return RestResult.fail(STATUS_FAILED, "Failed connect to node and execute REST command.");
+ if (resp.code() == 404)
+ return RestResult.fail(STATUS_FAILED, "Failed connect to cluster.");
+
+ return RestResult.fail(STATUS_FAILED, "Failed to execute REST command: " + resp.message());
}
catch (ConnectException ignored) {
- LT.warn(log, "Failed connect to node and execute REST command. " +
+ LT.warn(log, "Failed connect to cluster. " +
"Please ensure that nodes have [ignite-rest-http] module in classpath " +
"(was copied from libs/optional to libs folder).");
- throw new ConnectException("Failed connect to node and execute REST command [url=" + urlBuilder + ", parameters=" + params + "]");
+ throw new ConnectException("Failed connect to cluster [url=" + urlBuilder + ", parameters=" + params + "]");
}
}
@@ -208,4 +219,170 @@ public class RestExecutor {
return sendRequest(demo, "ignite", params, null, null);
}
+
+ /**
+ * REST response holder Java bean.
+ */
+ private static class RestResponseHolder {
+ /** Success flag */
+ private int successStatus;
+
+ /** Error. */
+ private String err;
+
+ /** Response. */
+ private String res;
+
+ /** Session token string representation. */
+ private String sesTokStr;
+
+ /**
+ * @return {@code True} if this request was successful.
+ */
+ public int getSuccessStatus() {
+ return successStatus;
+ }
+
+ /**
+ * @param successStatus Whether request was successful.
+ */
+ public void setSuccessStatus(int successStatus) {
+ this.successStatus = successStatus;
+ }
+
+ /**
+ * @return Error.
+ */
+ public String getError() {
+ return err;
+ }
+
+ /**
+ * @param err Error.
+ */
+ public void setError(String err) {
+ this.err = err;
+ }
+
+ /**
+ * @return Response object.
+ */
+ public String getResponse() {
+ return res;
+ }
+
+ /**
+ * @param res Response object.
+ */
+ @JsonDeserialize(using = RawContentDeserializer.class)
+ public void setResponse(String res) {
+ this.res = res;
+ }
+
+ /**
+ * @return String representation of session token.
+ */
+ public String getSessionToken() {
+ return sesTokStr;
+ }
+
+ /**
+ * @param sesTokStr String representation of session token.
+ */
+ public void setSessionToken(String sesTokStr) {
+ this.sesTokStr = sesTokStr;
+ }
+ }
+
+ /**
+ * Raw content deserializer that will deserialize any data as string.
+ */
+ private static class RawContentDeserializer extends JsonDeserializer<String> {
+ /** */
+ private final JsonFactory factory = new JsonFactory();
+
+ /**
+ * @param tok Token to process.
+ * @param p Parser.
+ * @param gen Generator.
+ */
+ private void writeToken(JsonToken tok, JsonParser p, JsonGenerator gen) throws IOException {
+ switch (tok) {
+ case FIELD_NAME:
+ gen.writeFieldName(p.getText());
+ break;
+
+ case START_ARRAY:
+ gen.writeStartArray();
+ break;
+
+ case END_ARRAY:
+ gen.writeEndArray();
+ break;
+
+ case START_OBJECT:
+ gen.writeStartObject();
+ break;
+
+ case END_OBJECT:
+ gen.writeEndObject();
+ break;
+
+ case VALUE_NUMBER_INT:
+ gen.writeNumber(p.getLongValue());
+ break;
+
+ case VALUE_NUMBER_FLOAT:
+ gen.writeNumber(p.getDoubleValue());
+ break;
+
+ case VALUE_TRUE:
+ gen.writeBoolean(true);
+ break;
+
+ case VALUE_FALSE:
+ gen.writeBoolean(false);
+ break;
+
+ case VALUE_NULL:
+ gen.writeNull();
+ break;
+
+ default:
+ gen.writeString(p.getText());
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+ JsonToken startTok = p.getCurrentToken();
+
+ if (startTok.isStructStart()) {
+ StringWriter wrt = new StringWriter(4096);
+
+ JsonGenerator gen = factory.createGenerator(wrt);
+
+ JsonToken tok = startTok, endTok = startTok == START_ARRAY ? END_ARRAY : END_OBJECT;
+
+ int cnt = 1;
+
+ while (cnt > 0) {
+ writeToken(tok, p, gen);
+
+ tok = p.nextToken();
+
+ if (tok == startTok)
+ cnt++;
+ else if (tok == endTok)
+ cnt--;
+ }
+
+ gen.close();
+
+ return wrt.toString();
+ }
+
+ return p.getValueAsString();
+ }
+ }
}
[07/11] ignite git commit: IGNITE-6016 Get rid of checking topology
hash in ackTopology - Fixes #2424.
Posted by ag...@apache.org.
IGNITE-6016 Get rid of checking topology hash in ackTopology - Fixes #2424.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/199339eb
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/199339eb
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/199339eb
Branch: refs/heads/ignite-5872-5578
Commit: 199339ebcf93452df4363f6fe4f70cb02cf10bfd
Parents: ad9e210
Author: Ivan Rakov <iv...@gmail.com>
Authored: Mon Aug 14 12:01:08 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Aug 14 12:01:08 2017 +0300
----------------------------------------------------------------------
.../discovery/GridDiscoveryManager.java | 39 ++------------------
.../ignite/internal/GridDiscoverySelfTest.java | 30 ---------------
2 files changed, 4 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/199339eb/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index ebfe339..834ba4d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -83,6 +83,7 @@ import org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor;
import org.apache.ignite.internal.processors.jobmetrics.GridJobMetrics;
import org.apache.ignite.internal.processors.security.SecurityContext;
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
+import org.apache.ignite.internal.util.GridAtomicLong;
import org.apache.ignite.internal.util.GridBoundedConcurrentLinkedHashMap;
import org.apache.ignite.internal.util.GridSpinBusyLock;
import org.apache.ignite.internal.util.future.GridFinishedFuture;
@@ -205,7 +206,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
private IgniteThread segChkThread;
/** Last logged topology. */
- private final AtomicLong lastLoggedTop = new AtomicLong();
+ private final GridAtomicLong lastLoggedTop = new GridAtomicLong();
/** Local node. */
private ClusterNode locNode;
@@ -1449,11 +1450,9 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
Collection<ClusterNode> allNodes = discoCache.allNodes();
- long hash = topologyHash(allNodes);
-
// Prevent ack-ing topology for the same topology.
// Can happen only during node startup.
- if (throttle && lastLoggedTop.getAndSet(hash) == hash)
+ if (throttle && !lastLoggedTop.setIfGreater(topVer))
return;
int totalCpus = cpus(allNodes);
@@ -1474,8 +1473,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
(ctx.igniteInstanceName() == null ? "default" : ctx.igniteInstanceName()) + U.nl() +
">>> Number of server nodes: " + srvNodes.size() + U.nl() +
">>> Number of client nodes: " + clientNodes.size() + U.nl() +
- (discoOrdered ? ">>> Topology version: " + topVer + U.nl() : "") +
- ">>> Topology hash: 0x" + Long.toHexString(hash).toUpperCase() + U.nl();
+ (discoOrdered ? ">>> Topology version: " + topVer + U.nl() : "");
dbg += ">>> Local: " +
locNode.id().toString().toUpperCase() + ", " +
@@ -1686,35 +1684,6 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
}
/**
- * Gets topology hash for given set of nodes.
- *
- * @param nodes Subset of grid nodes for hashing.
- * @return Hash for given topology.
- */
- public long topologyHash(Iterable<? extends ClusterNode> nodes) {
- assert nodes != null;
-
- Iterator<? extends ClusterNode> iter = nodes.iterator();
-
- if (!iter.hasNext())
- return 0; // Special case.
-
- List<String> uids = new ArrayList<>();
-
- for (ClusterNode node : nodes)
- uids.add(node.id().toString());
-
- Collections.sort(uids);
-
- CRC32 hash = new CRC32();
-
- for (String uuid : uids)
- hash.update(uuid.getBytes());
-
- return hash.getValue();
- }
-
- /**
* Gets future that will be completed when current topology version becomes greater or equal to argument passed.
*
* @param awaitVer Topology version to await.
http://git-wip-us.apache.org/repos/asf/ignite/blob/199339eb/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java
index 5822ce7..e6b678b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java
@@ -123,36 +123,6 @@ public class GridDiscoverySelfTest extends GridCommonAbstractTest {
/**
* @throws Exception If failed.
*/
- public void testGetTopologyHash() throws Exception {
- int hashCnt = 5000;
-
- Random rand = new Random();
-
- Collection<Long> hashes = new HashSet<>(hashCnt, 1.0f);
-
- for (int i = 0; i < hashCnt; i++) {
- // Max topology of 10 nodes.
- int size = rand.nextInt(10) + 1;
-
- Collection<ClusterNode> nodes = new ArrayList<>(size);
-
- for (int j = 0; j < size; j++)
- nodes.add(new GridDiscoveryTestNode());
-
- @SuppressWarnings("deprecation")
- long hash = ((IgniteKernal) ignite).context().discovery().topologyHash(nodes);
-
- boolean isHashed = hashes.add(hash);
-
- assert isHashed : "Duplicate hash [hash=" + hash + ", topSize=" + size + ", iteration=" + i + ']';
- }
-
- info("No duplicates found among '" + hashCnt + "' hashes.");
- }
-
- /**
- * @throws Exception If failed.
- */
@SuppressWarnings({"SuspiciousMethodCalls"})
public void testGetLocalNode() throws Exception {
ClusterNode node = ignite.cluster().localNode();
[06/11] ignite git commit: IGNITE-5941 - Fixed index name length
restrictions. This closes #2408
Posted by ag...@apache.org.
IGNITE-5941 - Fixed index name length restrictions. This closes #2408
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ad9e2101
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ad9e2101
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ad9e2101
Branch: refs/heads/ignite-5872-5578
Commit: ad9e21013fffd3553991521476970ee315f3af34
Parents: b02c481
Author: Ilya Lantukh <il...@gridgain.com>
Authored: Mon Aug 14 11:32:11 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Aug 14 11:32:11 2017 +0300
----------------------------------------------------------------------
.../ignite/internal/pagemem/PageUtils.java | 26 +++
.../cache/persistence/MetadataStorage.java | 12 +-
.../cache/index/LongIndexNameTest.java | 212 +++++++++++++++++++
.../IgniteCacheQuerySelfTestSuite.java | 2 +
4 files changed, 246 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9e2101/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
index 3fa5954..362ac54 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
@@ -37,6 +37,19 @@ public class PageUtils {
}
/**
+ *
+ * @param addr Start address.
+ * @param off Offset.
+ * @return Byte value from given address.
+ */
+ public static int getUnsignedByte(long addr, int off) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+
+ return GridUnsafe.getByte(addr + off) & 0xFF;
+ }
+
+ /**
* @param addr Start address.
* @param off Offset.
* @param len Bytes length.
@@ -168,6 +181,19 @@ public class PageUtils {
* @param off Offset.
* @param v Value.
*/
+ public static void putUnsignedByte(long addr, int off, int v) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+ assert v >= 0 && v <= 255;
+
+ GridUnsafe.putByte(addr + off, (byte) v);
+ }
+
+ /**
+ * @param addr Address.
+ * @param off Offset.
+ * @param v Value.
+ */
public static void putShort(long addr, int off, short v) {
assert addr > 0 : addr;
assert off >= 0;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9e2101/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/MetadataStorage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/MetadataStorage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/MetadataStorage.java
index 743f3b9..498ecdd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/MetadataStorage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/MetadataStorage.java
@@ -39,7 +39,7 @@ import org.apache.ignite.internal.util.typedef.internal.U;
*/
public class MetadataStorage implements MetaStore {
/** Max index name length (bytes num) */
- public static final int MAX_IDX_NAME_LEN = 768;
+ public static final int MAX_IDX_NAME_LEN = 255;
/** Bytes in byte. */
private static final int BYTE_LEN = 1;
@@ -197,7 +197,7 @@ public class MetadataStorage implements MetaStore {
int shift = 0;
// Compare index names.
- final byte len = PageUtils.getByte(pageAddr, off + shift);
+ final int len = PageUtils.getUnsignedByte(pageAddr, off + shift);
shift += BYTE_LEN;
@@ -256,7 +256,7 @@ public class MetadataStorage implements MetaStore {
final IndexItem row
) {
// Index name length.
- PageUtils.putByte(pageAddr, off, (byte)row.idxName.length);
+ PageUtils.putUnsignedByte(pageAddr, off, row.idxName.length);
off++;
// Index name.
@@ -282,10 +282,10 @@ public class MetadataStorage implements MetaStore {
int srcOff
) {
// Index name length.
- final byte len = PageUtils.getByte(srcPageAddr, srcOff);
+ final int len = PageUtils.getUnsignedByte(srcPageAddr, srcOff);
srcOff++;
- PageUtils.putByte(dstPageAddr, dstOff, len);
+ PageUtils.putUnsignedByte(dstPageAddr, dstOff, len);
dstOff++;
PageHandler.copyMemory(srcPageAddr, dstPageAddr, srcOff, dstOff, len);
@@ -305,7 +305,7 @@ public class MetadataStorage implements MetaStore {
*/
private static IndexItem readRow(final long pageAddr, int off) {
// Index name length.
- final int len = PageUtils.getByte(pageAddr, off) & 0xFF;
+ final int len = PageUtils.getUnsignedByte(pageAddr, off) & 0xFF;
off++;
// Index name.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9e2101/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/LongIndexNameTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/LongIndexNameTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/LongIndexNameTest.java
new file mode 100644
index 0000000..92883a4
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/LongIndexNameTest.java
@@ -0,0 +1,212 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.index;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.cache.QueryIndex;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
+import org.apache.ignite.cache.query.QueryCursor;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.configuration.PersistentStoreConfiguration;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.jetbrains.annotations.NotNull;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+/**
+ *
+ */
+public class LongIndexNameTest extends GridCommonAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ return super.getConfiguration(igniteInstanceName)
+ .setPersistentStoreConfiguration(new PersistentStoreConfiguration())
+ .setCacheConfiguration(new <String, Person>CacheConfiguration("cache")
+ .setQueryEntities(getIndexCfg())
+ .setAffinity(new RendezvousAffinityFunction(false, 16)));
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ deleteWorkFiles();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ super.afterTest();
+
+ deleteWorkFiles();
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testLongIndexNames() throws Exception {
+ try {
+ Ignite ignite = startGrid(0);
+
+ IgniteCache cache = insertSomeData(ignite);
+
+ QueryCursor cursor1 = cache.query(new SqlFieldsQuery("SELECT * FROM Person where name like '%Name 0'"));
+ QueryCursor cursor1Idx = cache.query(new SqlFieldsQuery("SELECT * FROM Person where name = 'Name 0'"));
+
+ QueryCursor cursor2 = cache.query(new SqlFieldsQuery("SELECT * FROM Person where age like '%0'"));
+ QueryCursor cursor2Idx = cache.query(new SqlFieldsQuery("SELECT * FROM Person where age = 0"));
+
+ assertEquals(cursor1.getAll().size(), cursor1Idx.getAll().size());
+ assertEquals(cursor2.getAll().size(), cursor2Idx.getAll().size());
+
+ ignite.close();
+
+ Thread.sleep(2_000);
+
+ ignite = startGrid(0);
+
+ cache = insertSomeData(ignite);
+
+ cursor1 = cache.query(new SqlFieldsQuery("SELECT * FROM Person where name like '%Name 0'"));
+ cursor1Idx = cache.query(new SqlFieldsQuery("SELECT * FROM Person where name = 'Name 0'"));
+
+ cursor2 = cache.query(new SqlFieldsQuery("SELECT * FROM Person where age like '%0'"));
+ cursor2Idx = cache.query(new SqlFieldsQuery("SELECT * FROM Person where age = 0"));
+
+ assertEquals(cursor1.getAll().size(), cursor1Idx.getAll().size());
+ assertEquals(cursor2.getAll().size(), cursor2Idx.getAll().size());
+
+
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+
+ /**
+ *
+ */
+ @NotNull private IgniteCache insertSomeData(Ignite ignite) {
+ if (!ignite.active())
+ ignite.active(true);
+
+ IgniteCache<String, Person> cache = ignite.cache("cache");
+
+ for (int i=0; i<10; i++)
+ cache.put(String.valueOf(System.currentTimeMillis()), new Person("Name " + i, i));
+
+ return cache;
+ }
+
+ /**
+ *
+ */
+ public static List<QueryEntity> getIndexCfg() {
+ ArrayList<QueryEntity> entities = new ArrayList<>();
+
+ QueryEntity qe = new QueryEntity(String.class.getName(), Person.class.getName());
+
+ LinkedHashMap<String, String> fieldsMap = new LinkedHashMap<>();
+ fieldsMap.put("name", String.class.getName());
+ fieldsMap.put("age", Integer.class.getName());
+
+ qe.setFields(fieldsMap);
+
+ ArrayList<QueryIndex> indices = new ArrayList<>();
+ QueryIndex index = new QueryIndex("name", true, "LONG_NAME_123456789012345678901234567890" +
+ "12345678901234567890123456789012345678901234567890123456789012345678901234567890");
+
+ QueryIndex index2 = new QueryIndex("age", true, "AGE_IDX");
+ indices.add(index);
+ indices.add(index2);
+
+ qe.setIndexes(indices);
+
+ entities.add(qe);
+
+ return entities;
+ }
+
+ /**
+ * @throws IgniteCheckedException If failed.
+ */
+ private void deleteWorkFiles() throws IgniteCheckedException {
+ deleteRecursively(U.resolveWorkDirectory(U.defaultWorkDirectory(), "db", false));
+ }
+
+ /**
+ *
+ */
+ private static class Person {
+ /** */
+ private String name;
+
+ /** */
+ private int age;
+
+ /**
+ *
+ */
+ public Person() {
+ // No-op.
+ }
+
+ /**
+ * @param name Name.
+ * @param age Age.
+ */
+ public Person(String name, int age) {
+ this.name = name;
+ this.age = age;
+ }
+
+ /**
+ * @return Name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name Name.
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return Age.
+ */
+ public int getAge() {
+ return age;
+ }
+
+ /**
+ * @param age Age.
+ */
+ public void setAge(int age) {
+ this.age = age;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ad9e2101/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
index 1ad0d4b..decc7d5 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
@@ -108,6 +108,7 @@ import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComple
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerTransactionalPartitionedTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerTransactionalReplicatedTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicTableSelfTest;
+import org.apache.ignite.internal.processors.cache.index.LongIndexNameTest;
import org.apache.ignite.internal.processors.cache.index.SchemaExchangeSelfTest;
import org.apache.ignite.internal.processors.cache.local.IgniteCacheLocalAtomicQuerySelfTest;
import org.apache.ignite.internal.processors.cache.local.IgniteCacheLocalFieldsQuerySelfTest;
@@ -317,6 +318,7 @@ public class IgniteCacheQuerySelfTestSuite extends TestSuite {
suite.addTestSuite(IgniteCacheDistributedPartitionQueryConfigurationSelfTest.class);
suite.addTestSuite(IgniteSqlKeyValueFieldsTest.class);
suite.addTestSuite(IgniteSqlRoutingTest.class);
+ suite.addTestSuite(LongIndexNameTest.class);
return suite;
}
[04/11] ignite git commit: IGNITE-6012 Refactored
GridJettyRestHandler.processRequest(): replace mapper.writeValueAsString with
writeValue(stream, v).
Posted by ag...@apache.org.
IGNITE-6012 Refactored GridJettyRestHandler.processRequest(): replace mapper.writeValueAsString with writeValue(stream, v).
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3a390c8a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3a390c8a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3a390c8a
Branch: refs/heads/ignite-5872-5578
Commit: 3a390c8afa157a54bdcde62a30159baebea87fb4
Parents: ebb8765
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Fri Aug 11 11:07:26 2017 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Aug 11 11:07:26 2017 +0700
----------------------------------------------------------------------
.../http/jetty/GridJettyRestHandler.java | 31 +++++++-------------
1 file changed, 10 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/3a390c8a/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 c864a10..327c13a 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
@@ -34,6 +34,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -356,41 +357,29 @@ public class GridJettyRestHandler extends AbstractHandler {
U.error(log, "Failed to process HTTP request [action=" + act + ", req=" + req + ']', e);
- cmdRes = new GridRestResponse(STATUS_FAILED, e.getMessage());
-
if (e instanceof Error)
throw (Error)e;
- }
-
- String json;
- try {
- json = jsonMapper.writeValueAsString(cmdRes);
+ cmdRes = new GridRestResponse(STATUS_FAILED, e.getMessage());
}
- catch (JsonProcessingException e1) {
- U.error(log, "Failed to convert response to JSON: " + cmdRes, e1);
- GridRestResponse resFailed = new GridRestResponse(STATUS_FAILED, e1.getMessage());
+ try {
+ ServletOutputStream os = res.getOutputStream();
try {
- json = jsonMapper.writeValueAsString(resFailed);
+ jsonMapper.writeValue(os, cmdRes);
}
- catch (JsonProcessingException e2) {
- json = "{\"successStatus\": \"1\", \"error:\" \"" + e2.getMessage() + "\"}}";
- }
- }
-
- try {
- if (log.isDebugEnabled())
- log.debug("Parsed command response into JSON object: " + json);
+ catch (JsonProcessingException e) {
+ U.error(log, "Failed to convert response to JSON: " + cmdRes, e);
- res.getWriter().write(json);
+ jsonMapper.writeValue(os, F.asMap("successStatus", STATUS_FAILED, "error", e.getMessage()));
+ }
if (log.isDebugEnabled())
log.debug("Processed HTTP request [action=" + act + ", jsonRes=" + cmdRes + ", req=" + req + ']');
}
catch (IOException e) {
- U.error(log, "Failed to send HTTP response: " + json, e);
+ U.error(log, "Failed to send HTTP response: " + cmdRes, e);
}
}
[08/11] ignite git commit: IGNITE-5890 Added estimated time to
rebalance completion and time to rebalance start to MXBean - Fixes #2386.
Posted by ag...@apache.org.
IGNITE-5890 Added estimated time to rebalance completion and time to rebalance start to MXBean - Fixes #2386.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1e0d4a54
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1e0d4a54
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1e0d4a54
Branch: refs/heads/ignite-5872-5578
Commit: 1e0d4a542740dab6ab98b4e3b4df3a30563c3ceb
Parents: 199339e
Author: Dmitriy Govorukhin <dm...@gmail.com>
Authored: Mon Aug 14 12:12:46 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Aug 14 12:12:46 2017 +0300
----------------------------------------------------------------------
.../org/apache/ignite/cache/CacheMetrics.java | 10 ++
.../cache/CacheClusterMetricsMXBeanImpl.java | 10 ++
.../cache/CacheLocalMetricsMXBeanImpl.java | 10 ++
.../processors/cache/CacheMetricsImpl.java | 36 +++++-
.../processors/cache/CacheMetricsSnapshot.java | 18 +++
.../dht/preloader/GridDhtPartitionDemander.java | 22 +++-
.../dht/preloader/GridDhtPreloader.java | 18 +--
.../cache/CacheGroupsMetricsRebalanceTest.java | 118 +++++++++++++++++++
8 files changed, 224 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e0d4a54/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java b/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
index 0cff4a8..20ea692 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
@@ -506,6 +506,16 @@ public interface CacheMetrics {
public long getRebalancingBytesRate();
/**
+ * @return Estimated rebalancing finished time.
+ */
+ public long estimateRebalancingFinishTime();
+
+ /**
+ * @return Rebalancing start time.
+ */
+ public long rebalancingStartTime();
+
+ /**
* Checks whether statistics collection is enabled in this cache.
* <p>
* The default value is {@code false}.
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e0d4a54/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
index 266c577..df4a6ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
@@ -382,4 +382,14 @@ class CacheClusterMetricsMXBeanImpl implements CacheMetricsMXBean {
@Override public long getRebalancingBytesRate() {
return cache.clusterMetrics().getRebalancingBytesRate();
}
+
+ /** {@inheritDoc} */
+ @Override public long estimateRebalancingFinishTime() {
+ return cache.clusterMetrics().estimateRebalancingFinishTime();
+ }
+
+ /** {@inheritDoc} */
+ @Override public long rebalancingStartTime() {
+ return cache.clusterMetrics().rebalancingStartTime();
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e0d4a54/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
index f363bfe..a767193 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
@@ -382,4 +382,14 @@ class CacheLocalMetricsMXBeanImpl implements CacheMetricsMXBean {
@Override public long getRebalancingBytesRate() {
return cache.metrics0().getRebalancingBytesRate();
}
+
+ /** {@inheritDoc} */
+ @Override public long estimateRebalancingFinishTime() {
+ return cache.metrics0().estimateRebalancingFinishTime();
+ }
+
+ /** {@inheritDoc} */
+ @Override public long rebalancingStartTime() {
+ return cache.metrics0().rebalancingStartTime();
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e0d4a54/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
index 6a8ae0b..d03a6f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
@@ -29,6 +29,7 @@ import org.apache.ignite.internal.processors.cache.ratemetrics.HitRateMetrics;
import org.apache.ignite.internal.processors.cache.store.GridCacheWriteBehindStore;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
/**
* Adapter for cache metrics.
@@ -108,6 +109,9 @@ public class CacheMetricsImpl implements CacheMetrics {
/** Total rebalanced bytes count. */
private AtomicLong totalRebalancedBytes = new AtomicLong();
+ /** Rebalanced start time. */
+ private AtomicLong rebalanceStartTime = new AtomicLong(-1L);
+
/** Estimated rebalancing keys count. */
private AtomicLong estimatedRebalancingKeys = new AtomicLong();
@@ -734,7 +738,7 @@ public class CacheMetricsImpl implements CacheMetrics {
}
/** {@inheritDoc} */
- public int getTotalPartitionsCount() {
+ @Override public int getTotalPartitionsCount() {
int res = 0;
if (cctx.isLocal())
@@ -749,7 +753,7 @@ public class CacheMetricsImpl implements CacheMetrics {
}
/** {@inheritDoc} */
- public int getRebalancingPartitionsCount() {
+ @Override public int getRebalancingPartitionsCount() {
int res = 0;
if (cctx.isLocal())
@@ -764,17 +768,17 @@ public class CacheMetricsImpl implements CacheMetrics {
}
/** {@inheritDoc} */
- public long getKeysToRebalanceLeft() {
+ @Override public long getKeysToRebalanceLeft() {
return Math.max(0, estimatedRebalancingKeys.get() - rebalancedKeys.get());
}
/** {@inheritDoc} */
- public long getRebalancingKeysRate() {
+ @Override public long getRebalancingKeysRate() {
return rebalancingKeysRate.getRate();
}
/** {@inheritDoc} */
- public long getRebalancingBytesRate() {
+ @Override public long getRebalancingBytesRate() {
return rebalancingBytesRate.getRate();
}
@@ -791,6 +795,28 @@ public class CacheMetricsImpl implements CacheMetrics {
rebalancingBytesRate.clear();
rebalancingKeysRate.clear();
+
+ rebalanceStartTime.set(-1L);
+ }
+
+ /**
+ *
+ */
+ public void startRebalance(long delay){
+ rebalanceStartTime.addAndGet(delay + U.currentTimeMillis());
+ }
+
+ /** {@inheritDoc} */
+ @Override public long estimateRebalancingFinishTime() {
+ long rate = rebalancingKeysRate.getRate();
+
+ return rate <= 0 ? -1L :
+ ((getKeysToRebalanceLeft() / rate) * REBALANCE_RATE_INTERVAL) + U.currentTimeMillis();
+ }
+
+ /** {@inheritDoc} */
+ @Override public long rebalancingStartTime() {
+ return rebalanceStartTime.get();
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e0d4a54/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
index e9141c6..2d38db8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
@@ -203,6 +203,12 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
/** Get rebalancing bytes rate. */
private long rebalancingBytesRate;
+ /** Start rebalance time. */
+ private long rebalanceStartTime;
+
+ /** Estimate rebalance finish time. */
+ private long rebalanceFinishTime;
+
/** */
private String keyType;
@@ -307,6 +313,8 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
keysToRebalanceLeft = m.getKeysToRebalanceLeft();
rebalancingBytesRate = m.getRebalancingBytesRate();
rebalancingKeysRate = m.getRebalancingKeysRate();
+ rebalanceStartTime = m.rebalancingStartTime();
+ rebalanceFinishTime = m.estimateRebalancingFinishTime();
}
/**
@@ -716,6 +724,16 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
}
/** {@inheritDoc} */
+ @Override public long estimateRebalancingFinishTime() {
+ return rebalanceFinishTime;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long rebalancingStartTime() {
+ return rebalanceStartTime;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean isWriteBehindEnabled() {
return isWriteBehindEnabled;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e0d4a54/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
index 248b739..2258187 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java
@@ -257,11 +257,13 @@ public class GridDhtPartitionDemander {
* @param forcedRebFut External future for forced rebalance.
* @return Rebalancing runnable.
*/
- Runnable addAssignments(final GridDhtPreloaderAssignments assigns,
+ Runnable addAssignments(
+ final GridDhtPreloaderAssignments assigns,
boolean force,
int cnt,
final Runnable next,
- @Nullable final GridCompoundFuture<Boolean, Boolean> forcedRebFut) {
+ @Nullable final GridCompoundFuture<Boolean, Boolean> forcedRebFut
+ ) {
if (log.isDebugEnabled())
log.debug("Adding partition assignments: " + assigns);
@@ -289,14 +291,14 @@ public class GridDhtPartitionDemander {
rebalanceFut = fut;
- fut.sendRebalanceStartedEvent();
-
- for (GridCacheContext cctx : grp.caches()) {
+ for (final GridCacheContext cctx : grp.caches()) {
if (cctx.config().isStatisticsEnabled()) {
final CacheMetricsImpl metrics = cctx.cache().metrics0();
metrics.clearRebalanceCounters();
+ metrics.startRebalance(0);
+
rebalanceFut.listen(new IgniteInClosure<IgniteInternalFuture<Boolean>>() {
@Override public void apply(IgniteInternalFuture<Boolean> fut) {
metrics.clearRebalanceCounters();
@@ -305,6 +307,8 @@ public class GridDhtPartitionDemander {
}
}
+ fut.sendRebalanceStartedEvent();
+
if (assigns.cancelled()) { // Pending exchange.
if (log.isDebugEnabled())
log.debug("Rebalancing skipped due to cancelled assignments.");
@@ -350,6 +354,14 @@ public class GridDhtPartitionDemander {
};
}
else if (delay > 0) {
+ for (GridCacheContext cctx : grp.caches()) {
+ if (cctx.config().isStatisticsEnabled()) {
+ final CacheMetricsImpl metrics = cctx.cache().metrics0();
+
+ metrics.startRebalance(delay);
+ }
+ }
+
GridTimeoutObject obj = lastTimeoutObj.get();
if (obj != null)
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e0d4a54/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
index 7efd4aa..305da92 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
@@ -306,12 +306,12 @@ public class GridDhtPreloader extends GridCachePreloaderAdapter {
GridDhtPartitionDemandMessage msg = assigns.get(n);
- if (msg == null) {
- assigns.put(n, msg = new GridDhtPartitionDemandMessage(
- top.updateSequence(),
- exchId.topologyVersion(),
- grp.groupId()));
- }
+ if (msg == null) {
+ assigns.put(n, msg = new GridDhtPartitionDemandMessage(
+ top.updateSequence(),
+ exchId.topologyVersion(),
+ grp.groupId()));
+ }
msg.addPartition(p, false);
}
@@ -396,11 +396,13 @@ public class GridDhtPreloader extends GridCachePreloaderAdapter {
}
/** {@inheritDoc} */
- @Override public Runnable addAssignments(GridDhtPreloaderAssignments assignments,
+ @Override public Runnable addAssignments(
+ GridDhtPreloaderAssignments assignments,
boolean forceRebalance,
int cnt,
Runnable next,
- @Nullable GridCompoundFuture<Boolean, Boolean> forcedRebFut) {
+ @Nullable GridCompoundFuture<Boolean, Boolean> forcedRebFut
+ ) {
return demander.addAssignments(assignments, forceRebalance, cnt, next, forcedRebFut);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e0d4a54/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheGroupsMetricsRebalanceTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheGroupsMetricsRebalanceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheGroupsMetricsRebalanceTest.java
index c15fa5f..a1a855a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheGroupsMetricsRebalanceTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheGroupsMetricsRebalanceTest.java
@@ -21,20 +21,28 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteDataStreamer;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheMetrics;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.CacheRebalanceMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.events.CacheRebalancingEvent;
import org.apache.ignite.events.Event;
import org.apache.ignite.events.EventType;
+import org.apache.ignite.internal.util.typedef.PA;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgnitePredicate;
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.testframework.junits.common.GridCommonAbstractTest;
+import static org.apache.ignite.IgniteSystemProperties.IGNITE_REBALANCE_STATISTICS_TIME_INTERVAL;
+import static org.apache.ignite.testframework.GridTestUtils.runAsync;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
+
/**
*
*/
@@ -71,6 +79,7 @@ public class CacheGroupsMetricsRebalanceTest extends GridCommonAbstractTest {
.setCacheMode(CacheMode.PARTITIONED)
.setAtomicityMode(CacheAtomicityMode.ATOMIC)
.setRebalanceMode(CacheRebalanceMode.ASYNC)
+ .setRebalanceBatchSize(100)
.setStatisticsEnabled(true);
CacheConfiguration cfg2 = new CacheConfiguration(cfg1)
@@ -137,4 +146,113 @@ public class CacheGroupsMetricsRebalanceTest extends GridCommonAbstractTest {
assertTrue(ratio > 40 && ratio < 60);
}
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testRebalanceEstimateFinishTime() throws Exception {
+ System.setProperty(IGNITE_REBALANCE_STATISTICS_TIME_INTERVAL, String.valueOf(1000));
+
+ Ignite ig1 = startGrid(1);
+
+ final int KEYS = 4_000_000;
+
+ IgniteCache<Object, Object> cache1 = ig1.cache(CACHE1);
+
+ try (IgniteDataStreamer<Integer, String> st = ig1.dataStreamer(CACHE1)) {
+ for (int i = 0; i < KEYS; i++)
+ st.addData(i, CACHE1 + "-" + i);
+ }
+
+ final CountDownLatch finishRebalanceLatch = new CountDownLatch(1);
+
+ final Ignite ig2 = startGrid(2);
+
+ ig2.events().localListen(new IgnitePredicate<Event>() {
+ @Override public boolean apply(Event evt) {
+ CacheRebalancingEvent rebEvent = (CacheRebalancingEvent)evt;
+
+ if (rebEvent.cacheName().equals(CACHE1)) {
+ System.out.println("CountDown rebalance stop latch:" + rebEvent.cacheName());
+
+ finishRebalanceLatch.countDown();
+ }
+
+ return false;
+ }
+ }, EventType.EVT_CACHE_REBALANCE_STOPPED);
+
+ waitForCondition(new PA() {
+ @Override public boolean apply() {
+ return ig2.cache(CACHE1).localMetrics().rebalancingStartTime() != -1L;
+ }
+ }, 5_000);
+
+ CacheMetrics metrics = ig2.cache(CACHE1).localMetrics();
+
+ long startTime = metrics.rebalancingStartTime();
+
+ assertTrue(startTime > 0);
+ assertTrue((U.currentTimeMillis() - startTime) < 5000);
+
+ final CountDownLatch latch = new CountDownLatch(1);
+
+ runAsync(new Runnable() {
+ @Override public void run() {
+ // Waiting 25% keys will be rebalanced.
+ int partKeys = KEYS / 2;
+
+ final long keysLine = (long)(partKeys - (partKeys * 0.25));
+
+ System.out.println("Wait until keys left will be less " + keysLine);
+
+ while (finishRebalanceLatch.getCount() != 0) {
+ CacheMetrics m = ig2.cache(CACHE1).localMetrics();
+
+ long keyLeft = m.getKeysToRebalanceLeft();
+
+ if (keyLeft > 0 && keyLeft < keysLine)
+ latch.countDown();
+
+ System.out.println("Keys left: " + m.getKeysToRebalanceLeft());
+
+ try {
+ Thread.sleep(1_000);
+ }
+ catch (InterruptedException e) {
+ System.out.println("Interrupt thread: " + e.getMessage());
+
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+ });
+
+ latch.await();
+
+ long finishTime = ig2.cache(CACHE1).localMetrics().estimateRebalancingFinishTime();
+
+ assertTrue(finishTime > 0);
+
+ long timePassed = U.currentTimeMillis() - startTime;
+ long timeLeft = finishTime - System.currentTimeMillis();
+
+ assertTrue(finishRebalanceLatch.await(timeLeft + 2_000, TimeUnit.SECONDS));
+
+ System.out.println(
+ "TimePassed:" + timePassed +
+ "\nTimeLeft:" + timeLeft +
+ "\nTime to rebalance: " + (finishTime - startTime) +
+ "\nStartTime: " + startTime +
+ "\nFinishTime: " + finishTime
+ );
+
+ System.clearProperty(IGNITE_REBALANCE_STATISTICS_TIME_INTERVAL);
+
+ System.out.println("Rebalance time:" + (U.currentTimeMillis() - startTime));
+
+ long diff = finishTime - U.currentTimeMillis();
+
+ assertTrue("Expected less 5000, Actual:" + diff, Math.abs(diff) < 10_000);
+ }
}
[11/11] ignite git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/ignite into ignite-5872-5578
Posted by ag...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-5872-5578
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/95a425c1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/95a425c1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/95a425c1
Branch: refs/heads/ignite-5872-5578
Commit: 95a425c1ba3f103b94f08cb34550a0b9e4aec80e
Parents: 64de3ff 18e79e5
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Mon Aug 14 14:48:37 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Aug 14 14:48:37 2017 +0300
----------------------------------------------------------------------
.../org/apache/ignite/cache/CacheMetrics.java | 10 +
.../apache/ignite/internal/IgniteKernal.java | 4 +-
.../discovery/GridDiscoveryManager.java | 39 +---
.../ignite/internal/pagemem/PageUtils.java | 26 +++
.../cache/CacheClusterMetricsMXBeanImpl.java | 10 +
.../cache/CacheLocalMetricsMXBeanImpl.java | 10 +
.../processors/cache/CacheMetricsImpl.java | 36 +++-
.../processors/cache/CacheMetricsSnapshot.java | 18 ++
.../dht/preloader/GridDhtPartitionDemander.java | 22 +-
.../dht/preloader/GridDhtPreloader.java | 6 +-
.../cache/persistence/MetadataStorage.java | 12 +-
.../cache/persistence/file/FilePageStore.java | 2 +-
.../messages/GridQueryNextPageResponse.java | 36 +++-
.../visor/cache/VisorCacheStopTask.java | 22 +-
.../visor/cache/VisorCacheStopTaskArg.java | 27 +++
.../ignite/internal/GridDiscoverySelfTest.java | 30 ---
.../cache/CacheGroupsMetricsRebalanceTest.java | 118 +++++++++++
.../platform/PlatformCacheWriteMetricsTask.java | 10 +
.../query/h2/twostep/GridMapQueryExecutor.java | 6 +-
.../query/h2/twostep/GridMergeIndex.java | 7 +-
.../cache/index/LongIndexNameTest.java | 212 +++++++++++++++++++
.../IgniteCacheQuerySelfTestSuite.java | 2 +
.../http/jetty/GridJettyRestHandler.java | 31 +--
.../console/agent/handlers/ClusterListener.java | 13 +-
.../ignite/console/agent/rest/RestExecutor.java | 201 ++++++++++++++++--
25 files changed, 765 insertions(+), 145 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/95a425c1/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/95a425c1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
----------------------------------------------------------------------
[09/11] ignite git commit: IGNITE-5890 - Fixed compilation
Posted by ag...@apache.org.
IGNITE-5890 - Fixed compilation
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/44d60f58
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/44d60f58
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/44d60f58
Branch: refs/heads/ignite-5872-5578
Commit: 44d60f58e77e9c2f134af09fbe500322d1f48628
Parents: 1e0d4a5
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Mon Aug 14 14:07:18 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Aug 14 14:07:18 2017 +0300
----------------------------------------------------------------------
.../ignite/platform/PlatformCacheWriteMetricsTask.java | 10 ++++++++++
1 file changed, 10 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/44d60f58/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java b/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java
index f1d8114..64ff0bc 100644
--- a/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java
+++ b/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheWriteMetricsTask.java
@@ -433,6 +433,16 @@ public class PlatformCacheWriteMetricsTask extends ComputeTaskAdapter<Long, Obje
@Override public long getHeapEntriesCount() {
return 59;
}
+
+ /** {@inheritDoc} */
+ @Override public long estimateRebalancingFinishTime() {
+ return 60;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long rebalancingStartTime() {
+ return 61;
+ }
}
}
[02/11] ignite git commit: IGNITE-6027: Added last page marker to
GridQueryNexPageResponse,
so that responses with unknown row count could be processed correctly. This
closes #2426.
Posted by ag...@apache.org.
IGNITE-6027: Added last page marker to GridQueryNexPageResponse, so that responses with unknown row count could be processed correctly. This closes #2426.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1c62fdad
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1c62fdad
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1c62fdad
Branch: refs/heads/ignite-5872-5578
Commit: 1c62fdad521675d6965441b966726d1292cb70e1
Parents: 7199037
Author: devozerov <pp...@gmail.com>
Authored: Thu Aug 10 23:13:37 2017 +0300
Committer: devozerov <pp...@gmail.com>
Committed: Thu Aug 10 23:13:37 2017 +0300
----------------------------------------------------------------------
.../messages/GridQueryNextPageResponse.java | 36 ++++++++++++++++++--
.../query/h2/twostep/GridMapQueryExecutor.java | 6 ++--
.../query/h2/twostep/GridMergeIndex.java | 7 ++--
3 files changed, 41 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/1c62fdad/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java
index fe8b34a..4d918a0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java
@@ -67,6 +67,9 @@ public class GridQueryNextPageResponse implements Message {
/** */
private AffinityTopologyVersion retry;
+ /** Last page flag. */
+ private boolean last;
+
/**
* For {@link Externalizable}.
*/
@@ -83,9 +86,10 @@ public class GridQueryNextPageResponse implements Message {
* @param cols Number of columns in row.
* @param vals Values for rows in this page added sequentially.
* @param plainRows Not marshalled rows for local node.
+ * @param last Last page flag.
*/
public GridQueryNextPageResponse(long qryReqId, int segmentId, int qry, int page, int allRows, int cols,
- Collection<Message> vals, Collection<?> plainRows) {
+ Collection<Message> vals, Collection<?> plainRows, boolean last) {
assert vals != null ^ plainRows != null;
assert cols > 0 : cols;
@@ -97,6 +101,7 @@ public class GridQueryNextPageResponse implements Message {
this.cols = cols;
this.vals = vals;
this.plainRows = plainRows;
+ this.last = last;
}
/**
@@ -220,6 +225,11 @@ public class GridQueryNextPageResponse implements Message {
writer.incrementState();
+ case 8:
+ if (!writer.writeBoolean("last", last))
+ return false;
+
+ writer.incrementState();
}
return true;
@@ -296,6 +306,14 @@ public class GridQueryNextPageResponse implements Message {
return false;
reader.incrementState();
+
+ case 8:
+ last = reader.readBoolean("last");
+
+ if (!reader.isLastRead())
+ return false;
+
+ reader.incrementState();
}
return reader.afterMessageRead(GridQueryNextPageResponse.class);
@@ -308,7 +326,7 @@ public class GridQueryNextPageResponse implements Message {
/** {@inheritDoc} */
@Override public byte fieldsCount() {
- return 8;
+ return 9;
}
/**
@@ -325,6 +343,20 @@ public class GridQueryNextPageResponse implements Message {
this.retry = retry;
}
+ /**
+ * @return Last page flag.
+ */
+ public boolean last() {
+ return last;
+ }
+
+ /**
+ * @param last Last page flag.
+ */
+ public void last(boolean last) {
+ this.last = last;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(GridQueryNextPageResponse.class, this,
http://git-wip-us.apache.org/repos/asf/ignite/blob/1c62fdad/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
index e717367..ca978e2 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
@@ -732,7 +732,8 @@ public class GridMapQueryExecutor {
page == 0 ? res.rowCount() : -1,
res.columnCount(),
loc ? null : toMessages(rows, new ArrayList<Message>(res.columnCount())),
- loc ? rows : null);
+ loc ? rows : null,
+ last);
if (loc)
h2.reduceQueryExecutor().onMessage(ctx.localNodeId(), msg);
@@ -758,7 +759,8 @@ public class GridMapQueryExecutor {
GridQueryNextPageResponse msg = new GridQueryNextPageResponse(reqId, segmentId,
/*qry*/0, /*page*/0, /*allRows*/0, /*cols*/1,
loc ? null : Collections.<Message>emptyList(),
- loc ? Collections.<Value[]>emptyList() : null);
+ loc ? Collections.<Value[]>emptyList() : null,
+ false);
msg.retry(h2.readyTopologyVersion());
http://git-wip-us.apache.org/repos/asf/ignite/blob/1c62fdad/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java
index 86601cd..1c1cfaf 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndex.java
@@ -46,7 +46,6 @@ import org.h2.index.IndexType;
import org.h2.message.DbException;
import org.h2.result.Row;
import org.h2.result.SearchRow;
-import org.h2.table.Column;
import org.h2.table.IndexColumn;
import org.h2.value.Value;
import org.jetbrains.annotations.Nullable;
@@ -329,7 +328,7 @@ public abstract class GridMergeIndex extends BaseIndex {
private void markLastPage(GridResultPage page) {
GridQueryNextPageResponse res = page.response();
- if (res.allRows() != -2) { // -2 means the last page.
+ if (!res.last()) {
UUID nodeId = page.source();
initLastPages(nodeId, res);
@@ -337,12 +336,12 @@ public abstract class GridMergeIndex extends BaseIndex {
ConcurrentMap<SourceKey,Integer> lp = lastPages;
if (lp == null)
- return; // It was not initialized --> wait for -2.
+ return; // It was not initialized --> wait for last page flag.
Integer lastPage = lp.get(new SourceKey(nodeId, res.segmentId()));
if (lastPage == null)
- return; // This node may use the new protocol --> wait for -2.
+ return; // This node may use the new protocol --> wait for last page flag.
if (lastPage != res.page()) {
assert lastPage > res.page();
[03/11] ignite git commit: IGNITE-5902 Implemented stop caches at
once.
Posted by ag...@apache.org.
IGNITE-5902 Implemented stop caches at once.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ebb8765a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ebb8765a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ebb8765a
Branch: refs/heads/ignite-5872-5578
Commit: ebb8765ab6735289cc2ceb4ccba2f6fd1e9816a8
Parents: 1c62fda
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Fri Aug 11 10:25:36 2017 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Aug 11 10:25:36 2017 +0700
----------------------------------------------------------------------
.../visor/cache/VisorCacheStopTask.java | 22 ++++++++--------
.../visor/cache/VisorCacheStopTaskArg.java | 27 ++++++++++++++++++++
2 files changed, 39 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ebb8765a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java
index 9f7c018..df95c5e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java
@@ -17,8 +17,10 @@
package org.apache.ignite.internal.visor.cache;
-import org.apache.ignite.IgniteCache;
+import java.util.Collection;
+import java.util.HashSet;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -46,23 +48,23 @@ public class VisorCacheStopTask extends VisorOneNodeTask<VisorCacheStopTaskArg,
/**
* Create job.
*
- * @param cacheName Cache name to clear.
+ * @param arg Task argument.
* @param debug Debug flag.
*/
- private VisorCacheStopJob(VisorCacheStopTaskArg cacheName, boolean debug) {
- super(cacheName, debug);
+ private VisorCacheStopJob(VisorCacheStopTaskArg arg, boolean debug) {
+ super(arg, debug);
}
/** {@inheritDoc} */
@Override protected Void run(VisorCacheStopTaskArg arg) {
- String cacheName = arg.getCacheName();
+ Collection<String> cacheNames = F.isEmpty(arg.getCacheNames())
+ ? F.asList(arg.getCacheName())
+ : new HashSet<>(arg.getCacheNames());
- IgniteCache cache = ignite.cache(cacheName);
+ if (F.isEmpty(cacheNames))
+ throw new IllegalStateException("Cache names was not specified.");
- if (cache == null)
- throw new IllegalStateException("Failed to find cache for name: " + cacheName);
-
- cache.destroy();
+ ignite.destroyCaches(cacheNames);
return null;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ebb8765a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java
index 4976036..77156ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.visor.cache;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.util.List;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorDataTransferObject;
@@ -34,6 +35,9 @@ public class VisorCacheStopTaskArg extends VisorDataTransferObject {
/** Cache name. */
private String cacheName;
+ /** Cache names. */
+ private List<String> cacheNames;
+
/**
* Default constructor.
*/
@@ -49,20 +53,43 @@ public class VisorCacheStopTaskArg extends VisorDataTransferObject {
}
/**
+ * @param cacheNames Cache names.
+ */
+ public VisorCacheStopTaskArg(List<String> cacheNames) {
+ this.cacheNames = cacheNames;
+ }
+
+ /**
* @return Cache name.
*/
public String getCacheName() {
return cacheName;
}
+ /**
+ * @return Cache names.
+ */
+ public List<String> getCacheNames() {
+ return cacheNames;
+ }
+
+ /** {@inheritDoc} */
+ @Override public byte getProtocolVersion() {
+ return V2;
+ }
+
/** {@inheritDoc} */
@Override protected void writeExternalData(ObjectOutput out) throws IOException {
U.writeString(out, cacheName);
+ U.writeCollection(out, cacheNames);
}
/** {@inheritDoc} */
@Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
cacheName = U.readString(in);
+
+ if (protoVer > V1)
+ cacheNames = U.readList(in);
}
/** {@inheritDoc} */