p4java api需要两次刷新才能获得新的变更列表说明

时间:2018-08-07 13:48:22

标签: java api perforce swarm p4java

在我的应用程序中,我有一个要自动请求Swarm审查的部分。为此,我在变更列表描述中放置了#review标签,并搁置了文件(此后,在描述中的标签后面出现了Swarm审阅编号)。一切正常,但我需要在搁置后重新刷新变更列表以获取更新的描述并提取评论ID。如果我仅使用一次刷新或完全不刷新,则提取的描述中将不包含评论ID。 而且,在逐步调试时,一次刷新就可以很好地工作,但不是实时的。

client.shelveChangelist(changelist);
IChangelist cl = server.getChangelist(changelist.getId());
cl.refresh();
cl.refresh();
String description = cl.getDescription;

(实际上,刷新执行了3次,因为在update()方法中还调用了getDescription()方法)。你知道为什么会这样吗?我尝试深入研究方法,寻找新线程,或同步代码,但均无济于事。

1 个答案:

答案 0 :(得分:0)

这是一个计时问题。

在服务器端会发生什么:搁置命令上的触发器触发,并且它异步调用Swarm创建评论。您的shelveChangelist()完成。 Swarm现在会创建评论。然后Swarm更新原始变更列表描述。

在刷新之前先睡一两秒钟。当然,如果Swarm太忙,可能要花一两秒钟以上的时间。或者,如果Swarm站点无法正常运行,则可能根本不会发生。

相关问题