nebula 3.2.0
java 3.0.0
jdk 11
在执行insert语句之后会出现接口挂掉,返回500,但是查询语句例如match不会。请问是为什么?
public int Insert_vulner(Session s, String space, String vulner_id, String summary, String published, String file_id) throws IOErrorException, UnsupportedEncodingException {
s.execute("Use " + space);
String insertVulner_nGQL = "INSERT VERTEX vulner (summary, published) VALUES \"" + vulner_id + "\":(\"" + summary + "\", \"" + published + "\");";
String insertEdge_nGQL = "INSERT EDGE Include () VALUES \"" + file_id + "\"->\"" + vulner_id + "\":();";
s.execute(insertVulner_nGQL);
s.execute(insertEdge_nGQL);
// vulner_id = "`" + vulner_id + "`";
// file_id = "`" + file_id + "`";
vulnerabilityAnnotationService.tracking(vulner_id, file_id);
// s.execute("REBUILD TAG INDEX vulner_index");
return 1;
}
public void tracking(String vulnerabilityId, String targetId) throws IOErrorException, UnsupportedEncodingException {
// 获取子图
Session s = nebularGraphConfig.getSession();
s.execute("Use boost_all_include");
ResultSet r = s.execute("GET SUBGRAPH 5 STEPS FROM \""+vulnerabilityId+"\" IN Include YIELD VERTICES AS nodes");
//List<ValueWrapper> pathList = nebularGraphUtil.getSubGraph(targetId, "Include", vulnerabilityStep, false);
// 先遍历所有的路径
for (int i = 0; i < r.rowsSize(); i++) {
for (ValueWrapper n: r.rowValues(i).values().get(0).asList()) {
ResultSet resp = null;
String insertEdge_nGQL = "INSERT EDGE affected () VALUES \"" + vulnerabilityId + "\"->" + n.asNode().getId().toString() + ":();";
try {
resp = s.execute(insertEdge_nGQL);
if (!resp.isSucceeded()) {
log.error(String.format("Execute: `%s', failed: %s",
insertEdge_nGQL, resp.getErrorMessage()));
throw new ApiException("边插入失败!");
}
log.info("边插入成功!");
} catch (IOErrorException e) {
e.printStackTrace();
}
}
}
s.release();
}
这是接口和插入函数的写法,thx!