You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2016/08/05 12:42:38 UTC
ignite git commit: IGNITE-3443 WIP.
Repository: ignite
Updated Branches:
refs/heads/ignite-3443 d8b92b4b4 -> c257f5f1d
IGNITE-3443 WIP.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c257f5f1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c257f5f1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c257f5f1
Branch: refs/heads/ignite-3443
Commit: c257f5f1dcf9e62198cbfdabfc407aca66c7bed4
Parents: d8b92b4
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Fri Aug 5 19:40:51 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Aug 5 19:40:51 2016 +0700
----------------------------------------------------------------------
.../configuration/CacheConfiguration.java | 30 ++++++++++++++++
.../cache/query/GridCacheQueryAdapter.java | 4 +--
.../cache/query/GridCacheQueryManager.java | 4 +--
.../query/GridCacheQueryMetricsAdapter.java | 36 ++++++++++++++------
4 files changed, 59 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c257f5f1/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index 64b7e1f..b76883b 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -206,6 +206,9 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
/** Default timeout after which long query warning will be printed. */
public static final long DFLT_LONG_QRY_WARN_TIMEOUT = 3000;
+ /** Default metrics history size for latest queries. */
+ public static final int DFLT_QRY_METRICS_HISTORY_SIZE = 0;
+
/** Default size for onheap SQL row cache size. */
public static final int DFLT_SQL_ONHEAP_ROW_CACHE_SIZE = 10 * 1024;
@@ -355,6 +358,9 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
/** */
private long longQryWarnTimeout = DFLT_LONG_QRY_WARN_TIMEOUT;
+ /** */
+ private int qryMetricsHistSz = DFLT_QRY_METRICS_HISTORY_SIZE;
+
/**
* Flag indicating whether data can be read from backup.
* If {@code false} always get data from primary node (never from backup).
@@ -454,6 +460,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
listenerConfigurations = cc.listenerConfigurations;
loadPrevVal = cc.isLoadPreviousValue();
longQryWarnTimeout = cc.getLongQueryWarningTimeout();
+ qryMetricsHistSz = cc.getQueryMetricsHistorySize();
offHeapMaxMem = cc.getOffHeapMaxMemory();
maxConcurrentAsyncOps = cc.getMaxConcurrentAsyncOperations();
memMode = cc.getMemoryMode();
@@ -1793,6 +1800,29 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
}
/**
+ * Gets size of queries metrics history that will be stored in memory for monitoring purposes.
+ * If {@code 0} then history will not be collected.
+ * Note, Larger number may lead to higher memory consumption.
+ *
+ * @return Maximum number of query metrics that will be stored in memory.
+ */
+ public int getQueryMetricsHistorySize() {
+ return qryMetricsHistSz;
+ }
+
+ /**
+ * Sets size of queries metrics history that will be stored in memory for monitoring purposes.
+ *
+ * @param qryMetricsHistSz Maximum number of latest queries metrics that will be stored in memory.
+ * @return {@code this} for chaining.
+ */
+ public CacheConfiguration<K, V> setQueryMetricsHistorySize(int qryMetricsHistSz) {
+ this.qryMetricsHistSz = qryMetricsHistSz;
+
+ return this;
+ }
+
+ /**
* Gets custom name of the sql schema. If custom sql schema is not set then {@code null} will be returned and
* quoted case sensitive name will be used as sql schema.
*
http://git-wip-us.apache.org/repos/asf/ignite/blob/c257f5f1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
index 3414766..6183c2b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryAdapter.java
@@ -156,7 +156,7 @@ public class GridCacheQueryAdapter<T> implements CacheQuery<T> {
log = cctx.logger(getClass());
- metrics = new GridCacheQueryMetricsAdapter();
+ metrics = new GridCacheQueryMetricsAdapter(5); // TODO: IGNITE-3443 take from cfg.;
}
/**
@@ -424,7 +424,7 @@ public class GridCacheQueryAdapter<T> implements CacheQuery<T> {
/** {@inheritDoc} */
@Override public void resetMetrics() {
- metrics = new GridCacheQueryMetricsAdapter();
+ metrics = new GridCacheQueryMetricsAdapter(5); // TODO: IGNITE-3443 take from cfg.
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/c257f5f1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index d9973a5..c14bb1d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -147,7 +147,7 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
private int maxIterCnt;
/** */
- private volatile GridCacheQueryMetricsAdapter metrics = new GridCacheQueryMetricsAdapter();
+ private volatile GridCacheQueryMetricsAdapter metrics = new GridCacheQueryMetricsAdapter(5); // TODO: IGNITE-3443 take from cfg.
/** */
private final ConcurrentMap<UUID, RequestFutureMap> qryIters =
@@ -2060,7 +2060,7 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
* Resets metrics.
*/
public void resetMetrics() {
- metrics = new GridCacheQueryMetricsAdapter();
+ metrics = new GridCacheQueryMetricsAdapter(5); // TODO: IGNITE-3443 take from cfg.
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/c257f5f1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java
index eaf65be..5ffeef5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java
@@ -22,7 +22,9 @@ import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.concurrent.ConcurrentMap;
import org.apache.ignite.cache.query.QueryDetailsMetrics;
import org.apache.ignite.cache.query.QueryMetrics;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -36,15 +38,24 @@ public class GridCacheQueryMetricsAdapter extends GridCacheQueryBaseMetricsAdapt
/** */
private static final long serialVersionUID = 0L;
- /** TODO IGNITE-3443 */
- private static final int MAX_CAP = 5;
+ /** History size. */
+ private final int detailsHistSz;
- /** TODO IGNITE-3443 */
- private final ConcurrentLinkedHashMap<QueryMetricsKey, GridCacheQueryDetailsMetricsAdapter> details = new ConcurrentLinkedHashMap<>(MAX_CAP, 0.75f, 64, MAX_CAP);
+ /** Map with metrics history for latest queries. */
+ private final ConcurrentMap<QueryMetricsKey, GridCacheQueryDetailsMetricsAdapter> details;
+
+ /**
+ * @param detailsHistSz Query metrics history size.
+ */
+ public GridCacheQueryMetricsAdapter(int detailsHistSz) {
+ this.detailsHistSz = detailsHistSz;
+
+ details = new ConcurrentLinkedHashMap<>(detailsHistSz, 0.75f, 16, detailsHistSz > 0 ? detailsHistSz : 1);
+ }
/** {@inheritDoc} */
@Override public List<QueryDetailsMetrics> details() {
- return new ArrayList<QueryDetailsMetrics>(details.values());
+ return detailsHistSz > 0 ? new ArrayList<QueryDetailsMetrics>(details.values()) : Collections.<QueryDetailsMetrics>emptyList();
}
/**
@@ -60,12 +71,14 @@ public class GridCacheQueryMetricsAdapter extends GridCacheQueryBaseMetricsAdapt
QueryMetricsKey key = new QueryMetricsKey(qryType, qry);
- if (!details.contains(key))
- details.putIfAbsent(key, new GridCacheQueryDetailsMetricsAdapter());
+ if (detailsHistSz > 0) {
+ if (!details.containsKey(key))
+ details.putIfAbsent(key, new GridCacheQueryDetailsMetricsAdapter());
- GridCacheQueryDetailsMetricsAdapter dm = details.get(key);
+ GridCacheQueryDetailsMetricsAdapter dm = details.get(key);
- dm.onQueryCompleted(duration, fail);
+ dm.onQueryCompleted(duration, fail);
+ }
}
/**
@@ -74,12 +87,13 @@ public class GridCacheQueryMetricsAdapter extends GridCacheQueryBaseMetricsAdapt
* @return Copy.
*/
public GridCacheQueryMetricsAdapter copy() {
- GridCacheQueryMetricsAdapter m = new GridCacheQueryMetricsAdapter();
+ GridCacheQueryMetricsAdapter m = new GridCacheQueryMetricsAdapter(detailsHistSz);
// Not synchronized because accuracy isn't critical.
copy(m);
- m.details.putAll(details);
+ if (detailsHistSz > 0)
+ m.details.putAll(details);
return m;
}