【发布时间】:2019-12-13 15:08:43
【问题描述】:
在使用 Microsoft Graph .Net 客户端库创建新组并向组添加所有者、成员和团队时,我注意到使用组上的 Delta 轮询更改有时会返回重复项。我运行这个没有$selects 和$expand members
作为一个测试,我想出了这个:
- 在 Groups 上获取最新的 Delta (DeltaJunk),只是为了清除 delta(基本上
同
$deltaToken=latest) - 创建五个组,其中一个所有者、两个成员(创建组时引用的用户)和一个团队。
- 让线程休眠 10 秒以允许传播
- 使用来自 DeltaJunk 的令牌在组上获取新的 Delta (Delta1)
- 让线程休眠 10 秒
- 使用来自 Delta1 的令牌在组上获取另一个新的 Delta (Delta2)
在上述场景中,我怀疑 Delta1 会返回五个创建的组,每个组都包含添加的成员,而 Delta2 是空的,因为两者之间没有任何变化最后一次 Delta 调用。
情况并非总是如此。
有时Delta1 仅包含部分组,有时包含所有组。然后我会怀疑 Delta2 可能包含 Delta1 中缺少的组(由于在下一次 Delta 调用之前更改的传播速度不够快),但情况并非总是如此.
有时在 Delta2 中出现与在 Delta1 中相同的组,有时只是其中一些,有时是不同的,有时根本没有。
我的猜测是当请求实际更改时不会触发 Delta 调用。相反,在 Delta 能够准确报告系统的更新状态之前,对资源的请求更改必须一直向下传播。
例如,在请求 Delta1 时尚未创建团队,但在调用 Delta2 时,它已正确创建并且更改为正确报告。
有人可以确认吗?
如果是这样,在更改安全地向下传播之前需要等待多长时间?一小时?两个?
【问题讨论】:
-
通常需要 1-30 秒,具体取决于该租户中的当前负载。我见过这需要几分钟,但从不一个小时。
标签: microsoft-graph-api microsoft-graph-sdks