[tahoe-lafs-trac-stream] [tahoe-lafs] #1681: require pywin32 to get reliable disconnection detection, or else suppress Warning

tahoe-lafs trac at tahoe-lafs.org
Mon Feb 27 01:49:54 UTC 2012


#1681: require pywin32 to get reliable disconnection detection, or else suppress
Warning
---------------------+---------------------------
 Reporter:  zooko    |          Owner:  nobody
     Type:  defect   |         Status:  new
 Priority:  major    |      Milestone:  undecided
Component:  unknown  |        Version:  1.9.1
 Keywords:           |  Launchpad Bug:
---------------------+---------------------------
 !FreeStorm's WinXP buildslave emits this warning ([//buildbot-tahoe-
 lafs/builders/FreeStorm%20WinXP-x86%20py2.6/builds/38/steps/test/logs/stdio
 log file]):
 {{{
 c:\python26\lib\site-packages\twisted\internet\win32eventreactor.py:64:
 UserWarning: Reliable disconnection notification requires pywin32 215 or
 later
 }}}

 Here's the
 [http://twistedmatrix.com/trac/browser/trunk/twisted/internet/win32eventreactor.py?rev=33404#L56
 code in Twisted] that emits that warning.

 Here's the [http://twistedmatrix.com/trac/changeset/33049 patch in
 Twisted] that added this warning (in 2011-11-02).

 Here's the [http://twistedmatrix.com/trac/ticket/5233 ticket in Twisted]
 about the issue.

 This might mean that we need to undo our removal of the dependency on
 pywin32 (#1274), because this newer version of Twisted requires pywin32 in
 order to do something that we want. (Actually, older versions of Twisted
 just don't do that thing -- they don't notice sometimes on Windows when a
 TCP connection is closed -- so this isn't a regression, except for the
 presence of the warning, which we could suppress.)

 I really hope we don't have to reintroduce a dependency on pywin32! We
 worked long and hard to get rid of that dependency. Adding it back in
 would increase the number of software packages that a Tahoe-LAFS user has
 to manually install from two (CPython, Tahoe-LAFS) to three (CPython,
 pywin32, Tahoe-LAFS). It would also cause all Tahoe-LAFS users, regardless
 of whether they use Windows or not, to see some text saying "If you are
 using Windows, install pywin32 as follows..." in
 [source:docs/quickstart.rst], or else to see some text saying "If you are
 using Windows, go to this other page to read some platform-specific
 instructions". I strongly wish to avoid all of the above.

 Another alternative is to monkeypatch twisted to use a C extension module,
 such as is attached to the twisted ticket, or ctypes instead of pywin32.

 Another alternative is not to rely on disconnection notification! In my
 opinion, code which relies on disconnection notification is almost never
 necessary and is often incorrect, since disconnection notification can
 never be really reliable (even if both the foolscap bug and the
 Twisted/pywin32 bug were fixed).

 We've already removed almost all such reliance on disconnection
 notification above the foolscap layer from Tahoe-LAFS. Our motivation in
 doing that was the discovery of a bug, that we have never yet fixed, in
 foolscap's {{{notifyOnDisconnect}}}, but also it was in part motivated by
 my belief that disconnection-notification is an anti-pattern -- a feature
 that it is often better to do without

 There is one remaining place in Tahoe-LAFS where we rely on foolscap's
 {{{notifyOnDisconnect}}} -- in the user interface to show the user which
 servers are currently connected. see #816 for the task of removing that
 place. There is also the fact that Brian may want to rely on
 disconnection-notification as an optimization in upload -- see
 [comment:1:ticket:816 #816 comment 1].

 Finally, there is the possibility that this issue could cause problems for
 our code even though our code doesn't rely on foolscap-level
 {{{notifyOnDisconnect}}}. For example, what about the HTTP connections
 between the web browser and the Tahoe-LAFS gateway? I would guess that
 failure to notice a disconnect will not cause a problem for any of our
 code (because, like I say, noticing disconnects and responding to them
 usefully is a dicey proposition at the best of times) but we should
 probably think it through if we're going to suppress the warning and
 commit to relying on a version of Twisted which doesn't notice (some)
 disconnects on Windows.

-- 
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1681>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list