Bug记录

133 阅读1分钟

CSOM并发错误

时间 2023-12-20 ~ 2023-12-27

起因
使用CSOM开发一款生成百万数据的Tool,完成串行版本后,想在使用并行提高生成速度,在一个clientcontext内使用并发同时执行多个操作,导致上传速度下降、出现下标越界等Bug

导致错误原因
1.clientcontext内部使用一个list装载所有请求

2.clientcontext是线程安全的类,从currentReuquest可以推测出,每次只能执行一个请求
3. clientcontext的一些api如 file.copyto,从实际情况推测应该是在将网络请求放到队列里就返回了,没有阻塞到sharepoint端复制操作完成,即使是并行也可能操作不成功

  1. 复制、上传操作没有返回值且sharepoint复制速度有限制

解决方案
最后还是改回并行加事后验证补偿
上面这些原因共同导致同一个clientcontext内并发执行 api有很大困难 , 如果要并行,一定要等待请求队列清空后再销毁clientcontext且事后要去验证操作结果