【问题标题】:OneDrive Delta Missing Events After Folder Move文件夹移动后 OneDrive Delta 丢失事件
【发布时间】:2019-05-07 18:46:39
【问题描述】:

目前,我在 Graph API 中遇到了 OneDrive 增量机制的问题。在查询 delta 端点时,我遇到了移动文件夹导致事件丢失的情况。

这是一个示例场景:

--> DT_null --> Initial request -->
[]
--> DT0

1. Create initial structure:
Folder1/Folder2_copyme/file_to_copy.txt
Folder_move_to_me/

--> DT0 --> Initial request -->
`Folder1/`
`Folder2_copyme/`
`Folder_move_to_me/`
`Folder1/Folder2_copyme/file_to_copy.txt`
--> DT1

2. Copy `Folder2_copyme` to root folder
structure:
Folder1/Folder2_copyme/file_to_copy.txt
Folder2_copyme/file_to_copy.txt
Folder_move_to_me/


--> DT0 --> Request delta
`Folder1/`
`Folder2_copyme/`
`Folder_move_to_me/`
`Folder1/Folder2_copyme/file_to_copy.txt`
`Folder2_copyme/file_to_copy.txt`
--> DT2

3. Move `Folder2_copyme` from root folder to `Folder_move_to_me`
structure:
Folder1/Folder2_copyme/file_to_copy.txt
Folder_move_to_me/Folder2_copyme/file_to_copy.txt

--> DT0 --> Request delta
`Folder1/`
`Folder_move_to_me/`
`Folder1/Folder2_copyme/file_to_copy.txt`
`Folder_move_to_me/Folder2_copyme/`
?? where `Folder_move_to_me/Folder2_copyme/file_to_copy.txt` ???
--> DT3

为什么最终请求的事件日志中缺少 file_to_copy.txt?这可以使用图形浏览器工具重现。

【问题讨论】:

    标签: microsoft-graph-api onedrive microsoft-graph-sdks


    【解决方案1】:

    不幸的是,对父级的更改,即使该更改是重命名,也不会导致delta 返回有关后代的信息。当客户端维护自己的世界视图(包括层次结构)并将服务器报告的更改合并到该视图中时,delta API 最有用。这样,当父级重命名时,客户端会本能地知道这将导致所有子级的路径发生变化,但不会导致子级自身发生变化。

    这是以前关于使用 delta 实现同步的答案,可能有用:Correct way to use OneDrive API to sync files

    【讨论】:

    • 更新了原始问题,以便更清楚地说明问题。
    • 我已经查看了您发布的算法,并且还有一个问题。在我的算法中,它需要增量中的至少一个文件级事件(例如创建)才能进入系统。在此之后,我能够根据收到的更改正确更新关系(本地树)。然而,在我上面描述的场景中,这种方法失败了(文件创建事件丢失或折叠)。 @Brad 您描述的算法如何处理这种情况?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多