You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by zh...@apache.org on 2018/03/09 15:49:27 UTC
[incubator-skywalking] branch master updated: Fixed #904. (#923)
This is an automated email from the ASF dual-hosted git repository.
zhangxin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 6fa179e Fixed #904. (#923)
6fa179e is described below
commit 6fa179e18f467e444ae8d302568db26703ebfbbf
Author: 彭勇升 pengys <80...@qq.com>
AuthorDate: Fri Mar 9 23:49:25 2018 +0800
Fixed #904. (#923)
The time range expression for query the live instance between the start time and end time is incorrect.
---
.../storage/es/dao/ui/InstanceEsUIDAO.java | 38 +++++++++++++++----
.../apm/collector/ui/utils/DurationTestCase.java | 44 ++++++++++++++++++++++
2 files changed, 74 insertions(+), 8 deletions(-)
diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java
index 537846b..2f1e82e 100644
--- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java
+++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java
@@ -106,10 +106,17 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
- //TODO second
+ BoolQueryBuilder boolQuery1 = QueryBuilders.boolQuery();
+ boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(endSecondTimeBucket));
+ boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+
+ BoolQueryBuilder boolQuery2 = QueryBuilders.boolQuery();
+ boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+ boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket));
+
BoolQueryBuilder timeBoolQuery = QueryBuilders.boolQuery();
- timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
- timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
+ timeBoolQuery.should().add(boolQuery1);
+ timeBoolQuery.should().add(boolQuery2);
boolQueryBuilder.must().add(timeBoolQuery);
@@ -172,9 +179,17 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO {
}
boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_IS_ADDRESS, BooleanUtils.FALSE));
+ BoolQueryBuilder boolQuery1 = QueryBuilders.boolQuery();
+ boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(endSecondTimeBucket));
+ boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+
+ BoolQueryBuilder boolQuery2 = QueryBuilders.boolQuery();
+ boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+ boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket));
+
BoolQueryBuilder timeBoolQuery = QueryBuilders.boolQuery();
- timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
- timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
+ timeBoolQuery.should().add(boolQuery1);
+ timeBoolQuery.should().add(boolQuery2);
boolQuery.must().add(timeBoolQuery);
@@ -198,10 +213,17 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO {
boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_APPLICATION_ID, applicationId));
boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_IS_ADDRESS, BooleanUtils.FALSE));
- //TODO second
+ BoolQueryBuilder boolQuery1 = QueryBuilders.boolQuery();
+ boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(endSecondTimeBucket));
+ boolQuery1.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+
+ BoolQueryBuilder boolQuery2 = QueryBuilders.boolQuery();
+ boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).lte(endSecondTimeBucket));
+ boolQuery2.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket));
+
BoolQueryBuilder timeBoolQuery = QueryBuilders.boolQuery();
- timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
- timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket));
+ timeBoolQuery.should().add(boolQuery1);
+ timeBoolQuery.should().add(boolQuery2);
boolQuery.must().add(timeBoolQuery);
searchRequestBuilder.setQuery(boolQuery);
diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/DurationTestCase.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/DurationTestCase.java
new file mode 100644
index 0000000..28009c7
--- /dev/null
+++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/DurationTestCase.java
@@ -0,0 +1,44 @@
+/*
+ * 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.skywalking.apm.collector.ui.utils;
+
+import org.junit.Assert;
+
+/**
+ * @author peng-yongsheng
+ */
+public class DurationTestCase {
+
+ @org.junit.Test
+ public void test() {
+ Assert.assertEquals(true, expression(80, 150));
+ Assert.assertEquals(true, expression(80, 250));
+ Assert.assertEquals(true, expression(150, 250));
+ Assert.assertEquals(true, expression(120, 180));
+ Assert.assertEquals(false, expression(70, 90));
+ Assert.assertEquals(false, expression(250, 300));
+ }
+
+ private boolean expression(int start, int end) {
+ int register = 100;
+ int heart = 200;
+
+ return (heart > end && register <= end) || (register <= end && heart >= start);
+ }
+}
--
To stop receiving notification emails like this one, please contact
zhangxin@apache.org.