Gremlin:如果发生异常则回滚查询

Gremlin: Rollback the query if an exception occurs

我正在尝试提交类似批处理的操作,以便在同一查询中创建多个顶点和边。

g.addV('os').property('name', 'linux').as('linux').
  addV('os').property('name', 'windows').as('windows').
  addV('os').property('name', 'mac').as('mac').
  addE('competitor').from('linux').to('UNEXISTING OS').      # fail here
  addE('competitor').from('linux').to('windows').
  addE('competitor').from('windows').to('mac').
  addE('competitor').from('linux').to('mac').
  iterate()

查询被构造为故意失败,但是正在创建失败行之前的所有顶点。
是否可以为整个查询实现一种事务?这样如果一个子查询失败,它应该回滚之前执行的子查询。

谢谢!

无法使用 TinkerGraph 在 Gremlin 控制台中执行查询, 根据 TinkerPop documentation,不支持内置 TinkerGraph 对象的事务。

但是,正如 cygri 指出的那样,AWS Neptune 提供对事务的支持 (see here),可以在 OP 的原始查询形式下执行,或者通过分号 (;) 或换行符 (\n)

g.addV('os').property('name', 'linux').next();
g.addV('os').property('name', 'windows').next();
g.addE('competitor').from('1101').to('1102')

您也可以使用Gremlin Sessions;创建一个会话连接,它会在出现错误时回滚查询。