Activity log for bug #396819

Date Who What changed Old value New value Message
2009-07-08 00:25:32 Michael Hudson-Doyle bug added bug
2009-07-08 00:54:07 Robert Collins bzr: importance Undecided High
2009-07-08 00:54:07 Robert Collins bzr: status New Triaged
2010-03-18 05:58:40 Martin Pool bzr: status Triaged Confirmed
2011-02-01 13:32:16 Jelmer Vernooij tags lazy-imports
2011-02-01 13:46:57 Vincent Ladeuil bug added subscriber Vincent Ladeuil
2011-04-12 07:55:18 Robert Collins description I can reasonably reliably reproduce this with loggerhead by firing it up and hitting it with ab -c, and it's not hard to see what happens in the code. If two threads concurrently execute ScopeReplacer.__getattribute__ on the same instance, it's easy to see that one can execute _cleanup before the other enters _replace, and so the IllegalUseOfScopeReplacer condition gets hit. In my case, simply not raising an exception in this situation would probably work, though I don't know if that would have any serious drawbacks (it looks to me like executing _import() twice won't have any real drawbacks, but it's not obvious). I can reasonably reliably reproduce this with loggerhead by firing it up and hitting it with ab -c, and it's not hard to see what happens in the code. If two threads concurrently execute ScopeReplacer.__getattribute__ on the same instance, it's easy to see that one can execute _cleanup before the other enters _replace, and so the IllegalUseOfScopeReplacer condition gets hit. In my case, simply not raising an exception in this situation would probably work, though I don't know if that would have any serious drawbacks (it looks to me like executing _import() twice won't have any real drawbacks, but it's not obvious). File "/var/launchpad/tmp/eggs/bzr-2.2.2_lp_2-py2.6-linux-x86_64.egg/bzrlib/osutils.py", line 2065, in send_all report_activity(sent, 'write') File "/var/launchpad/tmp/eggs/bzr-2.2.2_lp_2-py2.6-linux-x86_64.egg/bzrlib/smart/medium.py", line 176, in _report_activity ui.ui_factory.report_transport_activity(self, bytes, direction) File "/var/launchpad/tmp/eggs/bzr-2.2.2_lp_2-py2.6-linux-x86_64.egg/bzrlib/lazy_import.py", line 108, in __getattribute__ _cleanup() File "/var/launchpad/tmp/eggs/bzr-2.2.2_lp_2-py2.6-linux-x86_64.egg/bzrlib/lazy_import.py", line 97, in _cleanup del self._factory AttributeError: _factory
2011-04-12 07:55:20 Robert Collins summary lazy imports are not threadsafe AttributeError: _factory - lazy imports are not threadsafe
2011-07-16 05:41:42 Robert Collins bug task added loggerhead
2011-07-16 05:41:56 Robert Collins loggerhead: status New Triaged
2011-07-16 05:41:58 Robert Collins loggerhead: importance Undecided Critical
2011-07-16 05:42:08 Robert Collins tags lazy-imports lazy-imports oops
2011-08-19 18:26:32 Benji York loggerhead: status Triaged In Progress
2011-08-19 18:26:36 Benji York bzr: status Confirmed In Progress
2011-08-19 18:26:47 Benji York loggerhead: status In Progress Triaged
2011-08-19 18:26:54 Benji York bzr: assignee Benji York (benji)
2011-08-29 16:35:56 Martin Packman bzr: status In Progress Fix Released
2011-08-29 16:35:56 Martin Packman bzr: milestone 2.5b1
2011-08-30 13:14:34 Martin von Gagern bug added subscriber Martin von Gagern
2011-08-31 00:59:42 Martin von Gagern branch linked lp:~gagern/bzr/bug396819-lazy_import-threadsafe
2011-10-01 21:54:46 B. Clausius bug added subscriber B Clausius
2013-12-07 08:17:43 B. Clausius removed subscriber B Clausius
2016-01-20 13:10:54 Benji York bzr: assignee Benji York (benji)
2018-10-20 17:03:46 Jelmer Vernooij bug task added loggerhead-breezy
2018-10-20 17:04:00 Jelmer Vernooij loggerhead-breezy: status New Triaged
2018-10-20 17:04:01 Jelmer Vernooij loggerhead-breezy: importance Undecided High