这个函数我有三个问题:
1.我用2.0的客户端获取session并且调用了ping函数:
session = pool.getSession("root", "nebula", false);
session.ping();
ping函数原来是:
@Override
public boolean ping() {
try {
client.execute(0, "YIELD 1;".getBytes());
return true;
} catch (TException e) {
if (e instanceof TTransportException) {
TTransportException te = (TTransportException) e;
return te.getType() != TTransportException.END_OF_FILE
&& te.getType() != TTransportException.NOT_OPEN;
}
return true;
}
}
为了看到response我改了一行:
@Override
public boolean ping() {
try {
ExecutionResponse response = client.execute(0, "YIELD 1;".getBytes());
return true;
} catch (TException e) {
if (e instanceof TTransportException) {
TTransportException te = (TTransportException) e;
return te.getType() != TTransportException.END_OF_FILE
&& te.getType() != TTransportException.NOT_OPEN;
}
return true;
}
}
没有异常,但是response是:
ExecutionResponse (
error_code : E_SESSION_INVALID (E_SESSION_INVALID),
latency_in_us : 0,
error_msg : 49 6E 76 61 6C 69 64 20 73 65 73 73 69 6F 6E 20 69 64
)
这个response正常么?
2.如果这个response正常,我正在移植一些功能到v1.1.0分支, 并且使用相同的方法,执行了:
@Override
public boolean ping() {
try {
ExecutionResponse response = client.execute(0, "YIELD 1;".getBytes());
return true;
} catch (TException e) {
if (e instanceof TTransportException) {
TTransportException te = (TTransportException) e;
return te.getType() != TTransportException.END_OF_FILE
&& te.getType() != TTransportException.NOT_OPEN;
}
return true;
}
}
response是相同的, 都是不合法的sessionId,为什么master分支说:
// Need server supported, v1.0 nebula-graph doesn’t supported
3.C++这个客户端的函数是:
bool Connection::ping() {
auto resp = execute(-1 /*Only check connection*/, "YIELD 1");
if (resp.errorCode == ErrorCode::E_RPC_FAILURE || resp.errorCode == ErrorCode::E_DISCONNECTED) {
return false;
}
return true;
}
是不是代码里写任何sessionId <= 0的不合法的sessionId都可以?