[tahoe-lafs-trac-stream] [tahoe-lafs] #1274: eliminate pywin32 dependency
tahoe-lafs
trac at tahoe-lafs.org
Fri Jan 21 17:20:39 UTC 2011
#1274: eliminate pywin32 dependency
------------------------------+---------------------------------------------
Reporter: davidsarah | Owner: warner
Type: defect | Status: new
Priority: major | Milestone: 1.8.2
Component: code-storage | Version: 1.8.0
Resolution: | Keywords: pywin32 windows win64 docs-needed news-needed
Launchpad Bug: |
------------------------------+---------------------------------------------
Comment (by warner):
Replying to [comment:21 davidsarah]:
> With this patch, we no longer use anything that calls
> {{{reactor.spawnProcess}}} (either in test or non-test code). Does
> that resolve the problem?
>
> {{{iputil.py}}} is the only place [in non-test code] where we
> previously used {{{getProcessOutput}}} and now use
> {{{subprocess.Popen}}}. Note that it is done in a {{{deferToThread}}}
> (I'm not sure whether that helps, since the SIGCHLD handler is
> process-global).
I don't think that resolves the problem (although I need to stare at the
code and test it to be sure). The issue was using {{{subprocess.Popen}}}
in a twisted program, regardless of whether or not that same program is
using any {{{reactor.spawnProcess}}} calls. {{{subprocess}}} is
blocking, of course (when you use {{{p.wait}}} or I think
{{{communicate}}}), so using it for {{{iputil.py}}} at startup is
somewhat excusable but using it anywhere later would be bad.
But it may be the case that we won't see any damage from this right now.
When/if we start using spawned children at runtime (again, {{{du -s}}}
is the best I can imagine right now), we may have to undo this, or live
without that feature.
I'll try to run some tests this week to see what happens.
--
Ticket URL: <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1274#comment:23>
tahoe-lafs <http://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list