Gremlin JavaScript 遍历永远不会解决

7

我正在尝试使用Gremlin npm模块连接到一个Neptune数据库。在测试过程中,我尝试让Gremlin连接到一个不活动的端点和无效的URL,以使系统更具弹性。我预期会抛出某种错误。然而,在无效/不活跃的URL上,图遍历没有任何消息,也没有解决。

        const traversal = gremlin.process.AnonymousTraversalSource.traversal;
        const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;
        const dc = new DriverRemoteConnection('wss://localhost:80');
        const g = traversal().withRemote(dc);
        const data = await g.V().limit(1).toList();
        console.log(data);

我期望使用无效的远程连接时,g.V().limit(1).toList()会抛出错误。同样,承诺从未解决,并且在下一行上的console.log(data)永远不会运行。
如有任何帮助将不胜感激! 我需要某种系统来检测数据库连接是否有效,如果无效,则记录错误。

我尝试使用Node(Javascript)客户端连接一个不存在的主机,结果在我尝试连接时就抛出了异常。如果不使用“localhost”,而是使用一些明确无法解析的东西,比如“abc123”,你会看到什么?即使使用“localhost”,我也会看到连接被拒绝的错误。你的代码是否可能在某种程度上吞噬了异常? - Kelvin Lawrence
@KelvinLawrence 你好,感谢您的回复!当我输入“abc123”时,会立即抛出错误TypeError [ERR_INVALID_URL]: Invalid URL:。但是,当我输入wss://localhost:8080时,没有任何错误或结果显示。我正在捕获异常并使用g.V().limit(1).toList().then(res => console.log(res)).catch(err=>console.log(err));将其记录。 - deterministic_ram
你是否可能有某些东西在监听 localhost 端口?当我在我的系统上尝试时,我正确地抛出了 Error: connect ECONNREFUSED 127.0.0.1:8080 异常。 - Kelvin Lawrence
@KelvinLawrence 我切换到了3.4.1,但是出现了一个错误!!!似乎在新版本中有些东西会出问题。据您所知,使用新版本是否有任何显著优势? - deterministic_ram
我也在3.4.4上进行了一些测试,并观察到它似乎会忽略错误。这可能需要进一步的调查。 - Kelvin Lawrence
显示剩余3条评论
1个回答

4

当前JavaScript GLV存在问题,我们已经提交了TINKERPOP-2381来概括这些问题。

当地址指向有效服务器时,这不应影响GLV的使用。

感谢您在问题中提供如此详细的信息。


我正在添加一个答案,以便保留此线程。
经过调查,如果主机不存在,3.4.1 JavaScript Gremlin客户端会抛出异常并退出进程。使用3.4.4客户端(或更高版本),错误似乎被默默地吞噬了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接