Coder Social home page Coder Social logo

nebula-jdbc's Introduction

nebula-jdbc

English | 中文版

There are the version correspondence between client and Nebula:

JDBC Branch Nebula Graph Version
v2.5 2.5.0, 2.5.1
v2.6.2 2.6.0, 2.6.1, 2.6.2
v3.0.0 3.0.0
v3.3.0 3.x

0. Introduction

nebula-jdbc is encapsulated based on nebula-java, interfacing with the JDBC protocol and implementing JDBC-related interfaces. You may be more familiar with the JDBC API than with nebula-java. With nebula-jdbc you do not need to be familiar with the nebula-java API (it is better if you are, so that you understand why our connection strings are formatted differently from the traditional JDBC connection strings) and you can manipulate the Nebula service in the same way as you manipulate relational databases in a java application

1. Architecture

Some of main classes and interfaces relationships in nebula-jdbc are as follows: (the blue solid line is the extends relationship between classes, the green solid line is the implements relationship between interfaces, the green dashed line is the implements relationship between abstract classes and interfaces, and the green dashed line is the implements relationship between the abstract class and the interface)

图片

The user first registers the driver with NebulaDriver, which has a NebulaPool property for getting the Session to communicate with the database. There are two constructors available in NebulaDriver, a no-argument constructor that configures the default NebulaPool, a constructors that take a Properties as parameter can customise the NebulaPool configuration, and the construction that take a String as parameter can just specify an address to connect and let the rest parameters to be set as default

After registering the driver, the user can get the Connection via DriverManager::getConnection(String url), and the NebulaConnection constructor will get the Session from the NebulaPool in the NebulaDriver and then connects to the graph space specified in the url

Once the Connection is obtained, the user can get a Statement or PreparedStatement object through Connection::createStatement and Connection::prepareStatement to call the executeQuery, executeUpdate, execute methods to send commands to the database. The result of this command is encapsulated in NebulaResult, which can be used to obtain different types of data by calling the various methods with different return data type

2. Usage

import

<dependency>
    <groupId>org.nebula-contrib</groupId>
    <artifactId>nebula-jdbc</artifactId>
    <version>$VERSION</version>
</dependency>

Here is the version mapping table

example

// Get and register the default NebulaDriver, the default connection address is 127.0.0.1:9669, the rest of the default parameters can be found in NebulaDriver::setDefaultPoolProperties()
NebulaDriver defaultDriver = new NebulaDriver();

// If you just need to specify an address to connect and let the rest parameters to be set as default, NebulaDriver (String address) can be used
NebulaDriver customizedUrlDriver = new NebulaDriver("192.168.66.116:9669");

// If you want to connect to a specific service address and customize the connection configuration, you can use a custom NebulaDriver by encapsulating the configuration parameters in a Properties object and call NebulaDriver::NebulaDriver(Properties poolProperties)
Properties poolProperties = new Properties();
ArrayList<HostAddress> addressList = new ArrayList<>();
addressList.add(new HostAddress("192.168.66.226", 9669));
addressList.add(new HostAddress("192.168.66.222", 9670));

poolProperties.put("addressList", addressList);
poolProperties.put("minConnsSize", 2);
poolProperties.put("maxConnsSize", 12);
poolProperties.put("timeout", 1015);
poolProperties.put("idleTime", 727);
poolProperties.put("intervalIdle", 1256);
poolProperties.put("waitTime", 1256);

NebulaDriver customizedDriver = new NebulaDriver(poolProperties);

// get Connection
Connection connection = DriverManager.getConnection("jdbc:nebula://JDBC_TEST_SPACE", "root", "nebula123");

// get Statement and execute
Statement statement = connection.createStatement();

String queryStatementNgql = "match (v:testNode) return v.theString as theString, v.theInt as theInt";
ResultSet queryStatementResult = statement.executeQuery(queryStatementNgql);

// get data from resultset
while (queryStatementResult.next()){
String theString = queryStatementResult.getString("theString");
int theInt = queryStatementResult.getInt(2);
}

String insertTestNode = "INSERT VERTEX testNode (theString, theInt, theDouble, theTrueBool, theFalseBool, theDate, theTime, theDatetime) VALUES " +
    "\"testNode_7\":(\"Young\", 20, , 12.56, true, false, date(\"1949-10-01\"), time(\"15:00:00.000\"), datetime(\"1949-10-01T15:00:00.000\")); ";
statement.executeUpdate(insertTestNode);

// get PreparedStatement, set configuration parameters and execute
String insertPreparedStatementNgql = "INSERT VERTEX testNode (theString, theInt, theDouble, theTrueBool, theFalseBool, theDate, theTime, theDatetime) VALUES " +
    "\"testNode_8\":(?, ?, ?, ?, ?, ?, ?, ?); ";
PreparedStatement insertPreparedStatement = connection.prepareStatement(insertPreparedStatementNgql);

insertPreparedStatement.setString(1, "YYDS");
insertPreparedStatement.setInt(2, 98);
insertPreparedStatement.setDouble(3, 12.56);
insertPreparedStatement.setBoolean(4, true);
insertPreparedStatement.setBoolean(5, false);
insertPreparedStatement.setDate(6, Date.valueOf("1949-10-01"));
insertPreparedStatement.setTime(7, Time.valueOf("15:00:00"));
// make a class cast and then call setDatetime
NebulaPreparedStatement nebulaPreparedStatement = (NebulaPreparedStatement) insertPreparedStatement;
nebulaPreparedStatement.setDatetime(8, new java.util.Date());

insertPreparedStatement.execute();

//  close connection
connection.close();

3. Q & A

  • Don't I need to specify the connection address in the connection string "jdbc:nebula://graphSpace"?

As the address list is already configured in NebulaDriver (default or custom), the connection string does not need to specify an address, only the graph space is required

  • Does PreparedStatement have a pre-compile function?

No, the server does not support it at the moment.

  • What are the usage scenarios for executeQuery, executeUpdate, execute?

executeQuery is used only for querying data in Nebula, where nGql needs to contain the query keywords ["match", "lookup", "go", "fetch", "find", "subgraph"] and return the result ResultSet; executeUpdate is used for modifying data, where nGql needs to contain the modify keyword ["update", "delete", "insert", "upsert", "create", "drop", "alter", "rebuild"], returns 0 as result in all case; execute for other admin operations, and returns true if the execution succeeds.

  • The result of executeUpdate is 0. Why is it not the amount of data affected by the statement?

If the user inserts multiple points or edges in a single insert statement, some of them may succeed and some of them may not, but the server will only return to tell the user that it has failed, however, the user may actually be able to find out some of the data have inserted. So this method will just return 0

  • How should I get the node, edge and path in ResultSet after they are returned in the query statement?

Convert ResultSet to NebulaResultSet, then call getNode, getEdge, getPath; the same for list, set, and map.

nebula-jdbc's People

Contributors

cdalexndr avatar darionyaphet avatar nicole00 avatar qingz11 avatar shinji-ikarig avatar sophie-xie avatar wey-gu avatar yegetables avatar young-flash avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nebula-jdbc's Issues

使用nebula-jdbc或nebula-java获取session的问题

使用nebula-jdbc或nebula-java获取session的问题:
nebula 版本:2.5.1
nebula-java版本 :2.5.0
部署方式:分布式
安装方式:RPM
是否为线上版本: N
硬件信息
磁盘:200G SSD
CPU、内存信息:8核16G
问题的具体描述:
目前基于java语言使用nebula-jdbc开发后端服务系统,遇到了如下几个问题:
1、在nebula-java客户端代码中,java代码获取nsid(即sessionId),只能通过SyncConnection吗?NebulaDriver和Connection都获取不到sessionId。获取sessionId的示例:
SyncConnection connection = new SyncConnection();
connection.open(new HostAddress(“127.0.0.1”,“9669”), 1000);
AuthResult authResult = connection.authenticate(req.getUsername(), req.getPassword());
String nsid = String.valueOf(authResult.getSessionId());

2、做java服务端开发,首次获取到nsid(sessionId)后,需要自己保存维护吧?后续调用其它接口(如gql查询execute接口)需要带上nsid查询,避免每次都重新获取数据库连接。但是目前看client源码,只有SyncConnection的执行方法有通过sessionID查询的方案,其它像Connection查询方法没有通过sessionID查询方法,都是每次要重新获取数据库连接。

3、是否有java语言使用nebula-jdbc(或nebula-java)开发的系统平台demo,可供参考学习?

PS:目前nebula-jdbc只支持nebula-java的2.5.0版本,没有开发client对应的升级版本。希望jdbc能尽快开发出对应新版本,谢谢!

datetime时间参数set问题

3.3.0没有发现 示例代码的 setDateTime方法,于是我将nebula中的时间改成了 int64类型,准备存储时间戳,但是setLong 目前提示我 not support,所以目前如何set nebula中的 datetime类型呢?

Cannot query "show tags"

Trying to query:

try (Connection connection = dataSource.getConnection()) {
     Statement statement = connection.createStatement();
     ResultSet res = statement.executeQuery( "show tags" );
 }

results in error:
java.sql.SQLException: Method executeQuery() can only execute nGql to query data, but the current nGql do not contains any query keyword in [match, lookup, go, fetch, find, subgraph], please modify your nGql or use executeUpdate(), execute().

"execute()" and "executeUpdate()" don't return query results

Similar for other show/describe statements

同学,您这个项目引入了14个开源组件,存在5个漏洞,辛苦升级一下

检测到 nebula-contrib/nebula-jdbc 一共引入了14个开源组件,存在5个漏洞

漏洞标题:Apache Log4j不可信数据反序列化漏洞 
缺陷组件:log4j:[email protected]
漏洞编号:CVE-2019-17571
漏洞描述:Apache Log4j是美国阿帕奇(Apache)软件基金会的一款基于Java的开源日志记录工具。
Apache Log4j 1.2版本中存在安全漏洞。攻击者可利用该漏洞执行代码。 
国家漏洞库信息:https://www.cnvd.org.cn/flaw/show/CNVD-2020-00502
影响范围:[0, ∞)
最小修复版本:
缺陷组件引入路径:com.vesoft.nebula.jdbc:[email protected]>org.slf4j:[email protected]>log4j:[email protected]

另外还有5个漏洞,详细报告:https://mofeisec.com/jr?p=a50271

Method getWarnings in class com.vesoft.nebula.jdbc.statement.NebulaStatementImpl is not supported.

Using spring-jdbc, JdbcTemplate always calls Statement.getWarnings(), and because this method is not implemented, it results in exception.
https://github.com/spring-projects/spring-framework/blob/main/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java#L1500

Example call stack:

buildUnsupportedOperationException:26, ExceptionBuilder (com.vesoft.nebula.jdbc.utils)
getWarnings:208, NebulaStatementImpl (com.vesoft.nebula.jdbc.statement)
handleWarnings:1506, JdbcTemplate (org.springframework.jdbc.core)
execute:652, JdbcTemplate (org.springframework.jdbc.core)
query:713, JdbcTemplate (org.springframework.jdbc.core)

多数据源报错

Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

Unable pass multiline parameter to NamedParameterJdbcTemplate

Statement

this.jdbcTemplate.update(
    "insert vertex player (name) values :id:(:name);",
     new MapSqlParameterSource()
        .addValue("id", someId, Types.VARCHAR)
        .addValue("name", someName, Types.LONGVARCHAR)
)

fails if someName contains new line symbol

Is the nebula-jdbc compatible with spring-data-jdbc ?

I am struggling with using NebulaGraph in a spring boot application and wanna have something similar to spring-data-neo4j to be able to use the ORM concepts without adding additional burden to my codebase. I am here asking you guys whether NebulaGraph does have an official support for spring integration or whether existing ones or compatible, namely:

  • spring-data-jdbc
  • spring-data-neo4j

Thanks in advance :)

Driver doesn't support STANDARD JDBC url

After the class registration inside the JDBC DriverManager, it is not possible to use a ""standard JDBC url"" as:

DriverManager.getConnection("jdbc:nebula://host:port/graphSpace", ...)

In the attached file there is the minimum changes necessary to support this syntax
NebulaDriver-java.txt

The FIRST problem IS NOT that it is possible to instantiate a "NebulaDriver" with the list of "ip:port" to use BUT that the driver can be used by a 3rd-part tool (for example in Aqua Data Studio) that uses the STANDARD behavior of a JDBC driver.
The SECOND problem is that the nebula-graph database NOT NECESSARY is installed in the same machine (this means that IT IS NOT POSSIBLE to use "127.0.0.1"), BUT it can be installed in an another machine located in the network (with an another IP:PORT).

Statement无法重复调用问题

同个Statement连续调用 nebulaResultSetMetaData获取到的为同一个,置空的方法没有暴露出来
/** If you want to get MetaData after ResultSet changes, the method below should be called. */
public static void release(){
nebulaResultSetMetaData = null;
}

By default, only one ResultSet object per Statement
object can be open at the same time. Therefore, if the reading of one
ResultSet object is interleaved
with the reading of another, each must have been generated by
different Statement objects. All execution methods in the
Statement interface implicitly close a current
ResultSet object of the statement if an open one exists.
能否参考Statement的隐式关闭,实现可以重复调用

Cannot query 'show tags'

Caused by: java.sql.SQLException: Method executeQuery() can only execute nGql to query data, but the current nGql do not contains any query keyword in [match, lookup, go, fetch, find, subgraph], please modify your nGql or use executeUpdate(), execute().
	at com.vesoft.nebula.jdbc.statement.NebulaStatementImpl.checkReadOnly(NebulaStatementImpl.java:97)
	at com.vesoft.nebula.jdbc.statement.NebulaPreparedStatementImpl.executeQuery(NebulaPreparedStatementImpl.java:44)
	at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:722)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:651)

Trying catch exceptions

Hi there! We have some troubles with error capturing when using JDBC for Nebula https://github.com/nebula-contrib/nebula-jdbc.
We are trying catch these errors:

E_SESSION_TIMEOUT  -1003  Session timeout
E_RPC_FAILURE  -3  RPC failure
E_GRAPH_MEMORY_EXCEEDED  -2600  Graph memory exceeded
E_STORAGE_MEMORY_EXCEEDED  -3600  Storage memory exceeded

on client side, but jdbc-driver hiding them...

when while nebula-jdbc upgrade version matching with nebula-clinet?

when while nebula-jdbc upgrade version matching with nebula-clinet? it only has the master version now, and only math with client of version 2.5.0. when i upgrade jdbc‘s client higher, it will run error(i.g 2.6.0).
i wish nebula-jdbc upgrade version matching with nebula-clinet soon. thank you.

NebulaResultSetMetaData.getColumnCount NullPointerException

image

2022-09-09 05:57:26.129: APIJSONVerifier.DEBUG: verifyLogin  session.getId() = 028EFC851CE4D03588A770ECAD328376
java.lang.NullPointerException
	at com.vesoft.nebula.jdbc.impl.NebulaResultSetMetaData.getColumnCount(NebulaResultSetMetaData.java:38)
	at apijson.boot.DemoController.execute(DemoController.java:1415)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:665)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:829)
2022-09-09 05:57:34.737: APIJSONVerifier.DEBUG: verifyLogin  session.getId() = 028EFC851CE4D03588A770ECAD328376
java.lang.NullPointerException
	at com.vesoft.nebula.jdbc.impl.NebulaResultSetMetaData.getColumnCount(NebulaResultSetMetaData.java:38)
	at apijson.boot.DemoController.execute(DemoController.java:1415)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:665)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:829)

connect error:"No extra connection: All servers are broken."

when use java-client version: 2.5.0, the server is ok!
but update nebula-jdbc, use java-client: 2.6.2, it print error info:
com.vesoft.nebula.client.graph.exception.NotValidConnectionException: No extra connection: All servers are broken. at com.vesoft.nebula.client.graph.net.NebulaPool.getConnection(NebulaPool.java:215) at com.vesoft.nebula.client.graph.net.NebulaPool.getSession(NebulaPool.java:137)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.