在我的应用程序中,我有一个部分我想自动请求 Swarm 审核。为此,我在变更列表描述中放置了一个 #review 标签并搁置了文件(之后,Swarm 评论编号出现在描述中的标签之后(。一切都按预期工作,除了我需要在搁置后双重刷新变更列表以获取更新的描述并提取评论 ID。如果我只使用一次刷新,或者根本不刷新,则提取的说明不包含审阅 ID。 更重要的是,它在逐步调试时与单次刷新配合使用效果很好,但不是实时的。
client.shelveChangelist(changelist);
IChangelist cl = server.getChangelist(changelist.getId());
cl.refresh();
cl.refresh();
String description = cl.getDescription;
(实际上,刷新执行了 3 次,因为 getDescription(( 方法也在 refresh(( 方法中调用(。你知道为什么会这样吗?我尝试深入研究这些方法,寻找新的线程,或同步代码,但都没有奏效。
这是一个计时问题。
服务器端发生的情况:搁置命令上的触发器触发,它异步调用 Swarm 来创建评论。 您的 shelveChangelist(( 完成。 Swarm 现在创建评论。 然后 Swarm 更新原始变更列表描述。
在刷新之前睡一两秒钟。 当然,如果Swarm非常忙,可能需要超过一两秒钟的时间。 或者,如果 Swarm 站点关闭,可能根本不会发生。