首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TTL过期后未移除JanusGraph边缘

TTL过期后未移除JanusGraph边缘
EN

Stack Overflow用户
提问于 2018-05-26 08:47:39
回答 1查看 310关注 0票数 1

这是一个关于JanusGraph中边的TTL设置的问题。我已经设置了一个测试,其中我创建了一个具有TTL持续时间的边缘标签edgeLabel -在我的例子中是5秒。

然后,我使用这个标签创建一个边,并等待TTL到期。但是,看起来顶点并没有从图中删除。我将在下面给出一个例子,来说明我正在尝试做什么。

示例

假设g是TinkerPop遍历对象。我有两个顶点,_id属性字段分别为v1v2。在v1v2之间创建edgeLabel边并等待10秒后,我看到的是顶点仍然附加了边:

g.V().has("_id", "v1").next().edges(Direction.BOTH, "edgeLabel").hasNext() == true

此外,在等待10秒之前和之后检查图形中的边数的计数会产生相同的计数,使用以下方法:

g.E().count().next().longValue()

我确认使用JanusGraphManagement正确设置了TTL值

final JanusGraphManagement mgmt = graph.openManagement(); mgmt.getTTL(mgmt.getEdgeLabel("edgeLabel")).getSeconds() == 5

配置/设置

我正在运行JanusGraph,使用Cassandra作为后端数据库存储,在本地数据库实例上使用属性storage.backend = cql,所有其他属性都是默认值。

我的问题是:为什么边缘没有被移除?我是否需要做一些我遗漏的事情,比如刷新图形数据库的状态?

据我所知,TTL应该使用Cassandra作为后端数据库存储,并且应该足以看到TTL在JanusGraphManagement中为具有给定标签的边缘设置正确。

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 05:58:58

边缘看起来没有被移除的原因实际上是因为用于检查边缘是否被移除的过程。为了清楚起见,该过程如下:

  1. 在顶点ev1之间创建边并遍历其边以检查e是否存在,并等待,直到TTL时间具有passed
    1. retrieve v1并再次遍历其边,以检查<v1>D14e>是否已过期且已消失<代码>H215<代码>G216
    2. >

麻烦来了,因为在第(2)步中,已经在访问e的地方创建了一个本地事务。在第(4)步中,我们现在正在遍历v1的边,因为我们在同一个事务中工作,所以e似乎仍然存在。

解决方案是确保在执行步骤(4)之前提交事务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50538382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档