java - p4java api 需要两次刷新才能获得新的更改列表描述
问题描述
在我的应用程序中,我有一部分想自动请求 Swarm 审查。为此,我在更改列表描述中放置了一个#review 标记并将文件搁置(之后,Swarm 评论编号出现在描述中的标记之后)。一切正常,除了我需要在搁置后双重刷新更改列表以获取更新的描述并提取评论 ID。如果我只使用一次刷新,或者根本不刷新,则提取的描述不包含评论 ID。更重要的是,它在逐步调试时只需一次刷新就可以很好地工作,但不是实时的。
client.shelveChangelist(changelist);
IChangelist cl = server.getChangelist(changelist.getId());
cl.refresh();
cl.refresh();
String description = cl.getDescription;
(实际上,刷新执行了 3 次,因为在 refresh() 方法中也调用了 getDescription() 方法)。你知道为什么会这样吗?我尝试深入挖掘这些方法,寻找新线程或同步代码,但都没有奏效。
解决方案
这是一个时间问题。
服务器端会发生什么:搁置命令上的触发器触发,它异步调用 Swarm 来创建评论。你的 shelveChangelist() 完成。Swarm 现在创建评论。然后 Swarm 更新原始变更列表描述。
在刷新之前睡一两秒钟。当然,如果 Swarm 非常忙碌,它可能需要一两秒以上的时间。或者,如果 Swarm 站点出现故障,则可能根本不会发生。
推荐阅读
- css - 我为图标使用了 mdi-react 包,但是当它与 scss 结合使用时,“font-size”属性不起作用
- python - 使用 Python Socket 连接 AWS EC2 实例
- c# - 没有数组名称的 JSON 数组进入属性
- sql - Google BigQuery GROUP BY 要求提供不需要的列
- excel - 根据另一列的行数对列进行编号
- visual-studio-code - VSCode VIM中的命令悬停工具提示而不使用鼠标
- azure-cli - 有没有办法使用 az acr build 指定隔离模式?
- go - 为什么 Golang GORM 挂钩 BeforeUpdate,AfterUpdate 不触发?
- javascript - 代码未禁用表上正确的列行
- android - Android TTS 中的 SSML 支持?