[Twisted-Python] Dropin.cache errors after clean install of twisted-8.2.0

Alex Clemesha clemesha at gmail.com
Wed Jun 17 17:37:01 EDT 2009


On Wed, Jun 17, 2009 at 1:41 PM, Alex Clemesha<clemesha at gmail.com> wrote:
> Hi,
>
> Just type "sudo twistd" and the errors will go away.
> (You may already know of this work-around)
>
>  I agree with you that it would be nice for these to never show up in
> the first place.
> I looked at the ticket you mention, but it seems that the cleaner solution
> would be to resolve these issues at install/upgrade time.

Just to follow up on this a bit more, reading from here:
http://twistedmatrix.com/projects/core/documentation/howto/plugin.html
in the section "Plugin Caching", there is this quote:

"""
[snip]... when installing or removing software which provides Twisted
plugins, the site administrator should be sure the cache is
regenerated. Well-behaved package managers for such software should
take this task upon themselves, since it is trivially automatable.
"""

The way I read this, requiring the site admin to run "sudo twistd" to
regenerate the cache file is a feature, not a bug.
Twisted devs: is this the case?  Still maybe the install should do the
"trivially automatable" bit?

I don't have a strong opinion either way, as I'm just now learning
about the details of all this.
thanks,
Alex





>
>
> -Alex
>
>
> On Wed, Jun 17, 2009 at 12:47 PM, Rutt, Benjamin<Benjamin.Rutt at gs.com> wrote:
>> I recently installed python-2.6.1 and then twisted-8.2.0 (outside of the
>> python tree).  One of my users is complaining that when he uses trial to
>> test some twisted programs, although his test passes, he has to stare at a
>> stack trace like this which mentions dropin.cache.new failing to be written:
>>
>> $ cat foo.py
>> #!/sw/external/python-2.6.1/bin/python
>>
>> from twisted.trial import unittest
>>
>> class MyTestClass(unittest.TestCase):
>>     def test_foobar(self):
>>         print 'hello, world!'
>>         self.failUnless(1 == 1)
>> $ /sw/external/twisted-8.2.0/bin/trial ./foo.py
>> /sw/external/twisted-8.2.0/lib/python/twisted/persisted/sob.py:12:
>> DeprecationWarning: the md5 module is deprecated; use hashlib instead
>>
>>   import os, md5, sys
>> /sw/external/twisted-8.2.0/lib/python/twisted/python/filepath.py:12:
>> DeprecationWarning: the sha module is deprecated; use the hashlib module
>> instead
>>
>>   import sha
>> /sw/external/twisted-8.2.0/lib/python/twisted/web/microdom.py:181:
>> SyntaxWarning: assertion is always true, perhaps remove parentheses?
>>
>>   assert (oldChild.parentNode is self,
>> Traceback (most recent call last):
>>   File "/sw/external/twisted-8.2.0/lib/python/twisted/python/usage.py", line
>> 241, in parseOptions
>>     self.postOptions()
>>   File "/sw/external/twisted-8.2.0/lib/python/twisted/scripts/trial.py",
>> line 293, in postOptions
>>     self['reporter'] = self._loadReporterByName(self['reporter'])
>>   File "/sw/external/twisted-8.2.0/lib/python/twisted/scripts/trial.py",
>> line 279, in _loadReporterByName
>>     for p in plugin.getPlugins(itrial.IReporter):
>>   File "/sw/external/twisted-8.2.0/lib/python/twisted/plugin.py", line 200,
>> in getPlugins
>>     allDropins = getCache(package)
>> --- <exception caught here> ---
>>   File "/sw/external/twisted-8.2.0/lib/python/twisted/plugin.py", line 179,
>> in getCache
>>     dropinPath.setContent(pickle.dumps(dropinDotCache))
>>   File "/sw/external/twisted-8.2.0/lib/python/twisted/python/filepath.py",
>> line 623, in setContent
>>     f = sib.open('w')
>>   File "/sw/external/twisted-8.2.0/lib/python/twisted/python/filepath.py",
>> line 433, in open
>>     return open(self.path, mode+'b')
>> exceptions.IOError: [Errno 30] Read-only file system:
>> '/sw/external/twisted-8.2.0/lib/python/twisted/plugins/dropin.cache.new'
>>
>> foo
>>   MyTestClass
>>     test_foobar ... hello, world!
>>                                                        [OK]
>>
>> -------------------------------------------------------------------------------
>> Ran 1 tests in 0.023s
>>
>> PASSED (successes=1)
>>
>> I would consider this to be an install bug.  Evidently, trial uses plugins,
>> which upon reading
>> http://twistedmatrix.com/projects/core/documentation/howto/plugin.html#auto3
>> I find that plugins need up-to-date dropin.cache files to be built, or else
>> they'll be built dynamically; the latter step fails in my case due to my
>> site-wide install being on a read-only directory.  The docs say "when
>> installing or removing software which provides Twisted plugins, the site
>> administrator should be sure the cache is regenerated"; however all I did
>> was install twisted itself, not any specific plugins.  All I did to install
>> twisted was 'python setup.py install --home=...' and at no later point did I
>> ever add new plugins to it.  Why can't the install take care of initial
>> dropin.cache generation for me?
>>
>> I see a related issue http://twistedmatrix.com/trac/ticket/2409.
>>
>> Regardless of whether ticket 2409 goes anywhere, should I raise an issue
>> that the install should really take care of initial dropin.cache generation,
>> much like python install takes care of std lib .py->.pyc generation?
>>
>> Thanks.
>>
>> _______________________________________________
>> Twisted-Python mailing list
>> Twisted-Python at twistedmatrix.com
>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>>
>>
>
>
>
> --
> Alex Clemesha
> clemesha.org
>



-- 
Alex Clemesha
clemesha.org




More information about the Twisted-Python mailing list