【问题标题】:Gremlin Javascript Traversal Never ResolvesGremlin Javascript 遍历永远不会解决
【发布时间】:2020-09-19 01:49:52
【问题描述】:

我正在尝试使用 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() 在使用无效的远程连接时会引发错误。同样,promise 永远不会解决,并且下一行的 console.log(data) 永远不会运行。

对此的任何帮助将不胜感激!我需要某种系统来检测数据库连接是否有效,如果不是则记录错误。

【问题讨论】:

  • 我尝试将 Node (Javascript) 客户端与不存在的主机一起使用,并且在我尝试连接时立即引发异常。而不是使用localhost,如果您使用绝对无法解析的东西,例如“abc123”,您会看到什么。即使使用localhost 我也看到连接被拒绝错误。我有可能您的代码以某种方式吞噬了异常?
  • @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)); 记录它们
  • 你有没有可能在localhost 端口上监听?当我在我的系统上尝试它时,我得到了正确抛出的 Error: connect ECONNREFUSED 127.0.0.1:8080 异常。
  • @KelvinLawrence 奇怪的是,当我curl -G https://localhost:8080/ 时出现连接错误。请问您运行的是什么版本的 Gremlin?
  • Node.js 8.15 和 Gremlin javascript 3.4.1 - 我也可以尝试更高版本。

标签: gremlin graph-databases amazon-neptune


【解决方案1】:

当前 JavaScript GLV 中存在问题,我们已提交 TINKERPOP-2381 以总结问题。

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

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


我正在添加一个答案,以便保留此线程。

如果主机不存在,3.4.1 JavaScript Gremlin 客户端会抛出异常并退出进程。对于 3.4.4 客户端(或更高版本),错误似乎被默默地吞下了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2021-12-25
    • 2019-11-29
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    相关资源
    最近更新 更多