Add counts of currently executing get operations
This commit is contained in:
parent
9bf42fed1b
commit
0d714d580f
|
@ -37,15 +37,17 @@ public class GetStats implements Streamable, ToXContent {
|
||||||
private long existsTimeInMillis;
|
private long existsTimeInMillis;
|
||||||
private long missingCount;
|
private long missingCount;
|
||||||
private long missingTimeInMillis;
|
private long missingTimeInMillis;
|
||||||
|
private long current;
|
||||||
|
|
||||||
public GetStats() {
|
public GetStats() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public GetStats(long existsCount, long existsTimeInMillis, long missingCount, long missingTimeInMillis) {
|
public GetStats(long existsCount, long existsTimeInMillis, long missingCount, long missingTimeInMillis, long current) {
|
||||||
this.existsCount = existsCount;
|
this.existsCount = existsCount;
|
||||||
this.existsTimeInMillis = existsTimeInMillis;
|
this.existsTimeInMillis = existsTimeInMillis;
|
||||||
this.missingCount = missingCount;
|
this.missingCount = missingCount;
|
||||||
this.missingTimeInMillis = missingTimeInMillis;
|
this.missingTimeInMillis = missingTimeInMillis;
|
||||||
|
this.current = current;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(GetStats stats) {
|
public void add(GetStats stats) {
|
||||||
|
@ -56,6 +58,7 @@ public class GetStats implements Streamable, ToXContent {
|
||||||
existsTimeInMillis += stats.existsTimeInMillis;
|
existsTimeInMillis += stats.existsTimeInMillis;
|
||||||
missingCount += stats.missingCount;
|
missingCount += stats.missingCount;
|
||||||
missingTimeInMillis += stats.missingTimeInMillis;
|
missingTimeInMillis += stats.missingTimeInMillis;
|
||||||
|
current += stats.current;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long count() {
|
public long count() {
|
||||||
|
@ -130,6 +133,14 @@ public class GetStats implements Streamable, ToXContent {
|
||||||
return missingTime();
|
return missingTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long current() {
|
||||||
|
return this.current;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCurrent() {
|
||||||
|
return this.current;
|
||||||
|
}
|
||||||
|
|
||||||
@Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
@Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
||||||
builder.startObject(Fields.GET);
|
builder.startObject(Fields.GET);
|
||||||
builder.field(Fields.TOTAL, count());
|
builder.field(Fields.TOTAL, count());
|
||||||
|
@ -141,6 +152,7 @@ public class GetStats implements Streamable, ToXContent {
|
||||||
builder.field(Fields.MISSING_TOTAL, missingCount);
|
builder.field(Fields.MISSING_TOTAL, missingCount);
|
||||||
builder.field(Fields.MISSING_TIME, missingTime().toString());
|
builder.field(Fields.MISSING_TIME, missingTime().toString());
|
||||||
builder.field(Fields.MISSING_TIME_IN_MILLIS, missingTimeInMillis);
|
builder.field(Fields.MISSING_TIME_IN_MILLIS, missingTimeInMillis);
|
||||||
|
builder.field(Fields.CURRENT, current);
|
||||||
builder.endObject();
|
builder.endObject();
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
@ -156,6 +168,7 @@ public class GetStats implements Streamable, ToXContent {
|
||||||
static final XContentBuilderString MISSING_TOTAL = new XContentBuilderString("missing_total");
|
static final XContentBuilderString MISSING_TOTAL = new XContentBuilderString("missing_total");
|
||||||
static final XContentBuilderString MISSING_TIME = new XContentBuilderString("missing_time");
|
static final XContentBuilderString MISSING_TIME = new XContentBuilderString("missing_time");
|
||||||
static final XContentBuilderString MISSING_TIME_IN_MILLIS = new XContentBuilderString("missing_time_in_millis");
|
static final XContentBuilderString MISSING_TIME_IN_MILLIS = new XContentBuilderString("missing_time_in_millis");
|
||||||
|
static final XContentBuilderString CURRENT = new XContentBuilderString("current");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static GetStats readGetStats(StreamInput in) throws IOException {
|
public static GetStats readGetStats(StreamInput in) throws IOException {
|
||||||
|
@ -169,6 +182,7 @@ public class GetStats implements Streamable, ToXContent {
|
||||||
existsTimeInMillis = in.readVLong();
|
existsTimeInMillis = in.readVLong();
|
||||||
missingCount = in.readVLong();
|
missingCount = in.readVLong();
|
||||||
missingTimeInMillis = in.readVLong();
|
missingTimeInMillis = in.readVLong();
|
||||||
|
current = in.readVLong();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void writeTo(StreamOutput out) throws IOException {
|
@Override public void writeTo(StreamOutput out) throws IOException {
|
||||||
|
@ -176,5 +190,6 @@ public class GetStats implements Streamable, ToXContent {
|
||||||
out.writeVLong(existsTimeInMillis);
|
out.writeVLong(existsTimeInMillis);
|
||||||
out.writeVLong(missingCount);
|
out.writeVLong(missingCount);
|
||||||
out.writeVLong(missingTimeInMillis);
|
out.writeVLong(missingTimeInMillis);
|
||||||
|
out.writeVLong(current);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ import org.elasticsearch.common.BytesHolder;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.lucene.document.ResetFieldSelector;
|
import org.elasticsearch.common.lucene.document.ResetFieldSelector;
|
||||||
import org.elasticsearch.common.lucene.uid.UidField;
|
import org.elasticsearch.common.lucene.uid.UidField;
|
||||||
|
import org.elasticsearch.common.metrics.CounterMetric;
|
||||||
import org.elasticsearch.common.metrics.MeanMetric;
|
import org.elasticsearch.common.metrics.MeanMetric;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.cache.IndexCache;
|
import org.elasticsearch.index.cache.IndexCache;
|
||||||
|
@ -72,6 +73,7 @@ public class ShardGetService extends AbstractIndexShardComponent {
|
||||||
|
|
||||||
private final MeanMetric existsMetric = new MeanMetric();
|
private final MeanMetric existsMetric = new MeanMetric();
|
||||||
private final MeanMetric missingMetric = new MeanMetric();
|
private final MeanMetric missingMetric = new MeanMetric();
|
||||||
|
private final CounterMetric currentMetric = new CounterMetric();
|
||||||
|
|
||||||
@Inject public ShardGetService(ShardId shardId, @IndexSettings Settings indexSettings, ScriptService scriptService,
|
@Inject public ShardGetService(ShardId shardId, @IndexSettings Settings indexSettings, ScriptService scriptService,
|
||||||
MapperService mapperService, IndexCache indexCache) {
|
MapperService mapperService, IndexCache indexCache) {
|
||||||
|
@ -82,7 +84,7 @@ public class ShardGetService extends AbstractIndexShardComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
public GetStats stats() {
|
public GetStats stats() {
|
||||||
return new GetStats(existsMetric.count(), TimeUnit.NANOSECONDS.toMillis(existsMetric.sum()), missingMetric.count(), TimeUnit.NANOSECONDS.toMillis(missingMetric.sum()));
|
return new GetStats(existsMetric.count(), TimeUnit.NANOSECONDS.toMillis(existsMetric.sum()), missingMetric.count(), TimeUnit.NANOSECONDS.toMillis(missingMetric.sum()), currentMetric.count());
|
||||||
}
|
}
|
||||||
|
|
||||||
// sadly, to overcome cyclic dep, we need to do this and inject it ourselves...
|
// sadly, to overcome cyclic dep, we need to do this and inject it ourselves...
|
||||||
|
@ -92,6 +94,8 @@ public class ShardGetService extends AbstractIndexShardComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
public GetResult get(String type, String id, String[] gFields, boolean realtime) throws ElasticSearchException {
|
public GetResult get(String type, String id, String[] gFields, boolean realtime) throws ElasticSearchException {
|
||||||
|
currentMetric.inc();
|
||||||
|
try {
|
||||||
long now = System.nanoTime();
|
long now = System.nanoTime();
|
||||||
GetResult getResult = innerGet(type, id, gFields, realtime);
|
GetResult getResult = innerGet(type, id, gFields, realtime);
|
||||||
if (getResult.exists()) {
|
if (getResult.exists()) {
|
||||||
|
@ -100,6 +104,9 @@ public class ShardGetService extends AbstractIndexShardComponent {
|
||||||
missingMetric.inc(System.nanoTime() - now);
|
missingMetric.inc(System.nanoTime() - now);
|
||||||
}
|
}
|
||||||
return getResult;
|
return getResult;
|
||||||
|
} finally {
|
||||||
|
currentMetric.dec();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public GetResult innerGet(String type, String id, String[] gFields, boolean realtime) throws ElasticSearchException {
|
public GetResult innerGet(String type, String id, String[] gFields, boolean realtime) throws ElasticSearchException {
|
||||||
|
|
Loading…
Reference in New Issue