Esky更新导致事务处理文件操作错误

时间:2013-05-29 00:59:11

标签: python windows

这是我运行esky auto_update时出现的错误:

Traceback (most recent call last):
File "__main__.py", line 838, in <module>
File "__main__.py", line 331, in bootstrap
File "__main__.py", line 358, in chainload
File "__main__.py", line 834, in _chainload
File "my_code.py", line 49, in <module>
File "esky\__init__.pyc", line 471, in cleanup
File "esky\__init__.pyc", line 516, in _cleanup_actions
File "esky\__init__.pyc", line 465, in cleanup
File "esky\__init__.pyc", line 882, in install_version
File "esky\__init__.pyc", line 914, in _unpack_bootstrap_env
File "esky\fstransact\win32txf.pyc", line 109, in move
File "esky\fstransact\win32txf.pyc", line 118, in _move
File "esky\fstransact\win32txf.pyc", line 24, in wrapper
WindowsError: [Error 6805] The remote server or share does not support transacted file operations.

在服务器上,我看到请求更新两次。

weapon101s.ds.com - - [23/May/2013 10:47:25] "GET / HTTP/1.1" 200 -
weapon101s.ds.com - - [23/May/2013 10:47:26] "GET / HTTP/1.1" 200 -
weapon101s.ds.com - - [23/May/2013 10:47:26] "GET /hifg-1.1.1.win32.zip HTTP/1.1" 200 -
weapon101s.ds.susq.com - - [23/May/2013 10:48:08] "GET /hifg-1.1.1.win32.zip HTTP/1.1" 200 -
weapon101s.ds.susq.com - - [23/May/2013 10:49:06] "GET / HTTP/1.1" 200 -
weapon101s.ds.susq.com - - [23/May/2013 10:49:06] "GET / HTTP/1.1" 200 -

这可能是一个网络问题,因为问题不会发生在本地网络上,而只会在从远程站点更新时发生。关于什么是错的任何想法以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

Esky在移动文件时使用事务性NTFS来维护数据完整性,特别是MoveFileTransacted函数。但是,事务性NTFS仅适用于本地文件。

引用Microsoft文档When to Use Transactional NTFS

  

TxF不支持以下交易方案:

     
      
  • 网络卷上的事务,例如文件共享上的事务。 CIFS / SMB协议不支持TxF。
  •   
  • NTFS以外的任何文件系统上的事务。
  •   
  • 针对客户端缓存缓存的文件的事务处理。
  •   
  • 使用对象ID进行文件访问。
  •   
  • 任何共享编写器方案。
  •   
  • 文件长时间(几天或几周)打开的任何情况。
  •   

除了不远程更新之外,我不确定是否有办法解决这个问题。