Skip to content

Commit ac2fc4c

Browse files
committed
Modify some bugs in monitor server.
Former-commit-id: 6d2f02c69e0b17cd9676d5510f9b97111873dafe Former-commit-id: 348ed9499ae5da504634559dce3bcfa78fec0d2f
1 parent e69008b commit ac2fc4c

33 files changed

Lines changed: 289 additions & 127 deletions

server/package/conf/migrations.xml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@
119119
</column>
120120
</createTable>
121121
<createTable tableName="SNM_TASK">
122-
<column name="task_id" type="VARCHAR(25)">
122+
<column name="TASK_ID" type="VARCHAR(25)">
123123
<constraints nullable="false"/>
124124
</column>
125125
<column name="ACCOUNT_ID" type="VARCHAR(25)">
@@ -205,6 +205,9 @@
205205
<column name="COLLECTED_TIME"/>
206206
<column name="MONITOR_ID"/>
207207
</createIndex>
208+
<createIndex indexName="IDX_COLLECTED_TIME" tableName="SNM_NIPING_RESULT">
209+
<column name="COLLECTED_TIME"/>
210+
</createIndex>
208211
<addForeignKeyConstraint baseColumnNames="MONITOR_ID" baseTableName="SNM_MONITOR_TASK" constraintName="FK_MONITOR_TASK_MONITOR_ID" deferrable="false" initiallyDeferred="false" onDelete="CASCADE" onUpdate="NO ACTION" referencedColumnNames="MONITOR_ID" referencedTableName="SNM_MONITOR"/>
209212
<addForeignKeyConstraint baseColumnNames="TASK_ID" baseTableName="SNM_MONITOR_TASK" constraintName="FK_MONITOR_TASK_TASK_ID" deferrable="false" initiallyDeferred="false" onDelete="CASCADE" onUpdate="NO ACTION" referencedColumnNames="TASK_ID" referencedTableName="SNM_TASK"/>
210213
<insert tableName="SNM_USER">
@@ -214,8 +217,8 @@
214217
<!-- password is sap118 -->
215218
<column name="PASSWORD"
216219
value="DE42D48DCFADF42C46B0573E311ACB20D4ED0ADE91F8D8714E3B9B834389210CF36D290517E8B5517FEE1721B9EC09E5F28A4AD22860B6EC446AE61F3C5EC8E8" />
217-
<column name="PASSWORD_SALT" value="sap998" />
218-
<column name="STATUS" value="1" />
220+
<column name="PASSWORD_SALT" value="sap998" />
221+
<column name="STATUS" value="1" />
219222
<column name="CREATION_TIME" valueDate="${now}"></column>
220223
<column name="MODIFIED_TIME" valueDate="${now}"></column>
221224
</insert>
@@ -228,4 +231,4 @@
228231
<column name="MODIFIED_TIME" valueDate="${now}"></column>
229232
</insert>
230233
</changeSet>
231-
</databaseChangeLog>
234+
</databaseChangeLog>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ee990a4fa780e1f27c3fd26eaedb613e09bb9440
1+
20a4c51bc4b119d6501ee6249ca7fee39371fcc8
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
caf3df5b95014c3d7cb8f4e2ebc3e9cf5635bce5
1+
92083a66948408fb93eda3ff20e265e6d424bbff
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
28d3c007b1b19f9ef56ddd5499052bc7f76e6149
1+
ace232852df0cacf22b70a310fe288929c793aad
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
b1712a8ced21d01b12be3b84d73bb3e88d4da437
1+
2bcd3af76c54872b70d656df1b6a2d93e996d348

server/src/main/java/com/cloudwise/sap/niping/common/entity/Task.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ public class Task extends AbstractEntity {
3838
@JsonIgnore
3939
private String monitorName;
4040
@JsonIgnore
41-
private String resultId;
41+
private String resultMonitorId;
42+
@JsonIgnore
43+
private int errno;
4244

4345
public String getName() {
4446
return name;

server/src/main/java/com/cloudwise/sap/niping/common/vo/converter/TaskConverter.java

Lines changed: 41 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@
33
import com.cloudwise.sap.niping.common.entity.JobDesc;
44
import com.cloudwise.sap.niping.common.vo.Task;
55
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import com.google.common.collect.Lists;
7+
import org.apache.commons.collections4.CollectionUtils;
68
import org.apache.commons.lang3.StringUtils;
79
import org.jvnet.hk2.annotations.Service;
810

911
import javax.inject.Inject;
1012
import java.io.IOException;
1113
import java.util.ArrayList;
1214
import java.util.List;
15+
import java.util.Map;
1316
import java.util.Optional;
17+
import java.util.stream.Collectors;
1418

1519
@Service
1620
public class TaskConverter {
@@ -21,107 +25,67 @@ public Optional<List<Task>> convert(Optional<List<com.cloudwise.sap.niping.commo
2125

2226
Optional<List<Task>> taskVOOptional = Optional.empty();
2327
if (tasks.isPresent()) {
24-
List<com.cloudwise.sap.niping.common.entity.Task> tasksList = tasks.get();
25-
List<Task> taskVOList = new ArrayList<>(tasksList.size());
26-
taskVOOptional = Optional.ofNullable(taskVOList);
27-
28-
StringBuilder monitorIdsBuilder = null;
29-
StringBuilder monitorNamesBuilder = null;
30-
Task taskVO = null;
3128

32-
boolean available = true;
33-
boolean allnotavailable = true;
29+
List<com.cloudwise.sap.niping.common.entity.Task> tasksList = tasks.get();
3430

35-
for (com.cloudwise.sap.niping.common.entity.Task task: tasks.get()) {
36-
if (null == taskVO || null == task.getTaskId() || !task.getTaskId().equals(taskVO.getTaskId())) {
31+
if (CollectionUtils.isNotEmpty(tasksList)) {
32+
Map<String, List<com.cloudwise.sap.niping.common.entity.Task>> tasksMap = tasksList.stream().collect(Collectors.groupingBy((task)->{return task.getTaskId();}, Collectors.toList()));
33+
List<Task> tasksVOList = new ArrayList<>(tasksMap.size());
34+
tasksMap.forEach((key, value) -> {
35+
com.cloudwise.sap.niping.common.entity.Task task = value.get(0);
3736
try {
38-
taskVO = taskVO.builder()
37+
Task taskVO = Task.builder()
3938
.taskId(task.getTaskId())
4039
.name(task.getName())
4140
.interval(task.getInterval())
42-
.monitorIds(task.getMonitorId())
4341
.jobDesc(jsonMapper.readValue(task.getConfigJson(), JobDesc.class))
4442
.build();
45-
46-
if (com.cloudwise.sap.niping.common.entity.Task.Status.disable.getStatus() == task.getStatus()) {
43+
taskVO.setMonitorIds(value.stream().map(v->v.getMonitorId()).filter((e) -> e!=null).collect(Collectors.joining(",")));
44+
taskVO.setMonitorNames(value.stream().map(v->v.getMonitorName()).filter((e) -> e!=null).collect(Collectors.joining(",")));
45+
if (task.getStatus() == Task.Status.disable.getStatus()) {
4746
taskVO.setStatus(Task.Status.disable.getStatus());
4847
}
4948
else {
50-
taskVO.setStatus(1);
49+
List<com.cloudwise.sap.niping.common.entity.Task> withResultTasks = value.stream().filter((t) -> {return t.getResultMonitorId() != null;}).collect(Collectors.toList());
50+
long withResultTasksCount = withResultTasks.size();
51+
if (withResultTasksCount == 0) {
52+
taskVO.setStatus(Task.Status.available.getStatus());
53+
}
54+
else {
55+
List<com.cloudwise.sap.niping.common.entity.Task> errorTasks = withResultTasks.stream().filter((t) -> {return t.getErrno() != 0;}).collect(Collectors.toList());
56+
if (errorTasks.size() == withResultTasks.size()) {
57+
taskVO.setStatus(Task.Status.allnotavailable.getStatus());
58+
}
59+
else if (errorTasks.size() == 0) {
60+
taskVO.setStatus(Task.Status.available.getStatus());
61+
}
62+
else {
63+
taskVO.setStatus(Task.Status.partavailable.getStatus());
64+
}
65+
}
5166
}
67+
tasksVOList.add(taskVO);
5268
} catch (IOException e) {
5369
e.printStackTrace();
5470
}
5571

56-
setMonitorIds(taskVOList, monitorIdsBuilder, monitorNamesBuilder, available, allnotavailable);
57-
available = true;
58-
allnotavailable = true;
59-
monitorIdsBuilder = new StringBuilder();
60-
monitorNamesBuilder = new StringBuilder();
61-
62-
if (null != task.getMonitorId()) {
63-
monitorIdsBuilder.append(task.getMonitorId()).append(",");
64-
monitorNamesBuilder.append(task.getMonitorName()).append(",");
65-
if (task.getResultId() == null) {
66-
available = false;
67-
}
68-
else {
69-
allnotavailable = false;
70-
}
71-
}
72-
taskVOList.add(taskVO);
73-
}
74-
else {
75-
monitorIdsBuilder.append(task.getMonitorId()).append(",");
76-
monitorNamesBuilder.append(task.getMonitorName()).append(",");
77-
if (task.getResultId() == null) {
78-
available = false;
79-
}
80-
else {
81-
allnotavailable = false;
82-
}
83-
}
72+
});
73+
taskVOOptional = Optional.ofNullable(tasksVOList);
8474
}
85-
setMonitorIds(taskVOList, monitorIdsBuilder, monitorNamesBuilder, available, allnotavailable);
8675
}
87-
8876
return taskVOOptional;
8977
}
9078

91-
private void setMonitorIds(List<Task> taskVOList, StringBuilder monitorIdsBuilder, StringBuilder monitorNamesBuilder, boolean available, boolean allnotavailable ) {
92-
if (taskVOList.size() > 0) {
93-
Task task = taskVOList.get(taskVOList.size() - 1);
94-
if (null != monitorIdsBuilder) {
95-
String monitorIdsString = monitorIdsBuilder.toString();
96-
String monitorNamesString = monitorNamesBuilder.toString();
97-
if (StringUtils.isNotEmpty(monitorIdsString)) {
98-
task.setMonitorIds(monitorIdsString.substring(0, monitorIdsString.length() - 1));
99-
task.setMonitorNames(monitorNamesString.substring(0, monitorNamesString.length() - 1));
100-
}
101-
}
102-
103-
if (task.getStatus() != Task.Status.disable.getStatus()) {
104-
task.setAvailable(true);
105-
if (available) {task.setStatus(Task.Status.available.getStatus());}
106-
else if (allnotavailable) {task.setStatus(Task.Status.allnotavailable.getStatus());}
107-
else {task.setStatus(Task.Status.partavailable.getStatus());}
108-
}
109-
else {
110-
task.setAvailable(false);
111-
}
112-
}
113-
}
114-
11579
public Optional<com.cloudwise.sap.niping.common.entity.Task> convertTaskVO(Optional<Task> taskVOOptional) {
11680
com.cloudwise.sap.niping.common.entity.Task task = null;
11781
if (taskVOOptional.isPresent()) {
118-
Task taskVO = taskVOOptional.get();
119-
task = com.cloudwise.sap.niping.common.entity.Task.builder()
120-
.taskId(taskVO.getTaskId())
121-
.name(taskVO.getName())
122-
.interval(taskVO.getInterval())
123-
.jobDesc(taskVO.getJobDesc())
124-
.build();
82+
Task taskVO = taskVOOptional.get();
83+
task = com.cloudwise.sap.niping.common.entity.Task.builder()
84+
.taskId(taskVO.getTaskId())
85+
.name(taskVO.getName())
86+
.interval(taskVO.getInterval())
87+
.jobDesc(taskVO.getJobDesc())
88+
.build();
12589
}
12690
return Optional.ofNullable(task);
12791
}

server/src/main/java/com/cloudwise/sap/niping/dao/MonitorDao.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.skife.jdbi.v2.sqlobject.BindBean;
88
import org.skife.jdbi.v2.sqlobject.SqlQuery;
99
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
10+
import org.skife.jdbi.v2.sqlobject.customizers.Define;
1011
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
1112
import org.skife.jdbi.v2.sqlobject.stringtemplate.UseStringTemplate3StatementLocator;
1213
import org.skife.jdbi.v2.unstable.BindIn;
@@ -44,4 +45,10 @@ public interface MonitorDao {
4445
" WHERE ACCOUNT_ID = :accountId")
4546
@RegisterMapper(MonitorMapper.class)
4647
List<Monitor> selectAllByAccountId( @Bind("accountId") String accountId);
48+
49+
@SqlQuery("SELECT SNM_MONITOR.MONITOR_ID, VERSION, ACCOUNT_ID, NAME, COUNTRY, PROVINCE, CITY, ISP, AREA, IP, NIPING_T, STATUS, CREATION_TIME, MODIFIED_TIME FROM SNM_MONITOR INNER JOIN SNM_MONITOR_TASK " +
50+
" ON SNM_MONITOR.MONITOR_ID = SNM_MONITOR_TASK.MONITOR_ID" +
51+
" WHERE ACCOUNT_ID = :accountId AND TASK_ID = :taskId <condition>")
52+
@RegisterMapper(MonitorMapper.class)
53+
List<Monitor> selectMonitors(@Bind("accountId") String accountId, @Bind("taskId") String taskId, @Define("condition") String condition);
4754
}

server/src/main/java/com/cloudwise/sap/niping/dao/MonitorNiPingResultDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public interface MonitorNiPingResultDao {
3131
@SqlQuery("SELECT TMP.*, M.MONITOR_ID, M.NAME, M.IP, M.COUNTRY, M.PROVINCE, M.CITY, M.ISP FROM " +
3232
"(SELECT TASK_ID, AV2, TR2, ERRNO, MONITOR_ID FROM SNM_NIPING_RESULT R " +
3333
"WHERE R.ACCOUNT_ID = :accountId AND R.TASK_ID = :taskId AND TYPE = :type AND NOT EXISTS(SELECT 1 FROM SNM_NIPING_RESULT WHERE TASK_ID = R" +
34-
".TASK_ID AND COLLECTED_TIME <g> R.COLLECTED_TIME AND ACCOUNT_ID = :accountId AND TASK_ID = :taskId AND TYPE = :type)) AS TMP " +
34+
".TASK_ID AND MONITOR_ID = R.MONITOR_ID AND COLLECTED_TIME <g> R.COLLECTED_TIME AND ACCOUNT_ID = :accountId AND TASK_ID = :taskId AND TYPE = :type)) AS TMP " +
3535
"INNER JOIN SNM_MONITOR M ON M.MONITOR_ID = TMP.MONITOR_ID")
3636
@RegisterMapper(MonitorNiPingResultMapper.class)
3737
List<MonitorNiPingResult> selectByTaskId(@Bind("accountId") String accountId, @Bind("taskId") String taskId, @Bind("type") int type, @Define("g") String g);

server/src/main/java/com/cloudwise/sap/niping/dao/TaskDao.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,23 @@ public interface TaskDao {
4646
" WHERE SNM_MONITOR_TASK.MONITOR_ID = :monitorId AND SNM_MONITOR_TASK.TASK_ID IN (<runningTaskIds>) AND SNM_TASK.STATUS = :taskEnableStatus")
4747
List<String> getAllTaskIdsInRunningTaskIds(@Bind("monitorId") String monitorId, @BindIn("runningTaskIds") List<String> runningTaskIds, @Bind("taskEnableStatus") int taskEnableStatus) ;
4848

49-
@SqlQuery("SELECT *, RES.RESULT_ID FROM (SELECT T.TASK_ID, MT.MONITOR_ID, M.NAME AS MONITOR_NAME, T.ACCOUNT_ID, T.NAME, TASK_INTERVAL AS 'INTERVAL', CONFIG_JSON, T.STATUS, T.CREATION_TIME, T.MODIFIED_TIME FROM SNM_TASK T " +
49+
@SqlQuery("SELECT *, RES.MONITOR_ID AS RESULT_MONITOR_ID, RES.ERRNO FROM (SELECT T.TASK_ID, MT.MONITOR_ID, M.NAME AS MONITOR_NAME, T.ACCOUNT_ID, T.NAME, TASK_INTERVAL AS 'INTERVAL', CONFIG_JSON, T.STATUS, T.CREATION_TIME, T.MODIFIED_TIME FROM SNM_TASK T " +
5050
"LEFT JOIN SNM_MONITOR_TASK MT ON MT.TASK_ID = T.TASK_ID " +
5151
"LEFT JOIN SNM_MONITOR M ON M.MONITOR_ID = MT.MONITOR_ID " +
5252
"WHERE T.ACCOUNT_ID = :accountId AND T.STATUS <ne> :taskDeleteStatus GROUP BY T.TASK_ID, MONITOR_ID) AS TMP " +
5353
"LEFT JOIN ( " +
54-
"SELECT MAX(ID) AS RESULT_ID, R.MONITOR_ID, R.TASK_ID, MAX(R.CREATION_TIME) FROM SNM_NIPING_RESULT R WHERE R.CREATION_TIME <ge> :lasthour AND NOT EXISTS(SELECT 1 FROM SNM_NIPING_RESULT WHERE CREATION_TIME <ge> :lasthour AND TASK_ID = R.TASK_ID AND MONITOR_ID = R.MONITOR_ID AND CREATION_TIME > R.CREATION_TIME) GROUP BY R.MONITOR_ID, R.TASK_ID " +
54+
"SELECT MAX(COLLECTED_TIME), MONITOR_ID, TASK_ID, ERRNO FROM SNM_NIPING_RESULT WHERE COLLECTED_TIME <ge> :lasthour GROUP BY TASK_ID, MONITOR_ID "+
5555
") AS RES ON TMP.MONITOR_ID = RES.MONITOR_ID AND TMP.TASK_ID = RES.TASK_ID " +
5656
" ORDER BY TMP.CREATION_TIME DESC")
5757
@RegisterMapper(TaskMapper.class)
5858
List<Task> selectByAccountId(@Bind("accountId") String accountId, @Bind("taskDeleteStatus") int taskDeleteStatus, @Bind("lasthour") Date lasthour, @Define("ne") String notEqual, @Define("ge") String greaterThan);
5959

60+
@SqlQuery("SELECT TASK_ID, ACCOUNT_ID, NAME, TASK_INTERVAL AS 'INTERVAL', " +
61+
" CONFIG_JSON, STATUS, CREATION_TIME, MODIFIED_TIME FROM SNM_TASK " +
62+
"WHERE ACCOUNT_ID = :accountId")
63+
@RegisterMapper(TaskMapper.class)
64+
List<Task> selectByAccountId(@Bind("accountId") String accountId);
65+
6066
@SqlQuery("SELECT * FROM (SELECT SNM_TASK.TASK_ID, MONITOR_ID, ACCOUNT_ID, NAME, TASK_INTERVAL AS 'INTERVAL', CONFIG_JSON, STATUS, CREATION_TIME, MODIFIED_TIME FROM SNM_TASK LEFT JOIN SNM_MONITOR_TASK ON SNM_MONITOR_TASK.TASK_ID = SNM_TASK.TASK_ID " +
6167
" WHERE ACCOUNT_ID = :accountId AND SNM_TASK.TASK_ID = :taskId AND SNM_TASK.STATUS <ne> :taskDeleteStatus) AS TMP GROUP BY MONITOR_ID")
6268
@RegisterMapper(TaskMapper.class)

0 commit comments

Comments
 (0)