Igniters,

I'm working on IGNITE-3443: Implement collecting what SQL statements
executed on cluster and their metrics [1]. (I also updated issue
description with text below.)

And I would like that my changes of public API looks good.

Please, give your feedback.

So, I introduced interface
org.apache.ignite.cache.query.QueryDetailsMetrics with metrics:

/**
 * Query metrics aggregated by query type and its textual representation.
 */
public interface QueryDetailsMetrics {
    /**
     * @return Query type.
     */
    public String getQueryType();

    /**
     * @return Textual representation of query.
     */
    public String getQuery();

    /**
     * @return Cache where query was executed.
     */
    public String getCache();

    /**
     * Gets total number execution of query.
     *
     * @return Number of executions.
     */
    public int getExecutions();

    /**
     * Gets number of completed execution of query.
     *
     * @return Number of completed executions.
     */
    public int getCompletions();

    /**
     * Gets number of times a query execution failed.
     *
     * @return Number of times a query execution failed.
     */
    public int getFailures();

    /**
     * Gets minimum execution time of query.
     *
     * @return Minimum execution time of query.
     */
    public long getMinimumTime();

    /**
     * Gets maximum execution time of query.
     *
     * @return Maximum execution time of query.
     */
    public long getMaximumTime();

    /**
     * Gets average execution time of query.
     *
     * @return Average execution time of query.
     */
    public double getAverageTime();

    /**
     * Gets total time of all query executions.
     *
     * @return Total time of all query executions.
     */
    public long getTotalTime();

    /**
     * Gets latest query start time.
     *
     * @return Latest time query was stared.
     */
    public long getLastStartTime();
}


And added method on org.apache.ignite.IgniteCache:

/**
 * Gets query metrics details.
 *
 * @return Metrics.
 */
public Collection<? extends QueryDetailsMetrics> queryMetricsHistory();


And also I added new property on
org.apache.ignite.configuration.CacheConfiguration:

/**
 * 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;
}



[1] https://issues.apache.org/jira/browse/IGNITE-3443

-- 
Alexey Kuznetsov

Reply via email to