In bzr.dev 5835 (~bzr-2.4b2) we currently end up locking and unlocking the WT two times.
It looks like the View code is causing us to take a read lock, which we then unlock before we get to the point of actually running status.
I don't think it actually reads the dirstate file and throws it away, but we shouldn't be relocking things (and re-creating the DirState object, etc.)
Here are the tracebacks for when:
> /home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(262)_worth_saving_limit()
-> trace.warning('Invalid config value for'
(Pdb) bt
/home/jameinel/bin/wbzr(139)<module>()
-> exit_val = bzrlib.commands.main()
/home/jameinel/dev/bzr/work/bzrlib/commands.py(1218)main()
-> ret = run_bzr_catch_errors(argv)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(1231)run_bzr_catch_errors()
-> return exception_to_return_code(run_bzr, argv)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(936)exception_to_return_code()
-> return the_callable(*args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(1136)run_bzr()
-> ret = run(*run_argv)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(697)run_argv_aliases()
-> return self.run(**all_cmd_args)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(719)run()
-> return self._operation.run_simple(*args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/cleanup.py(135)run_simple()
-> self.cleanups, self.func, *args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/cleanup.py(165)_do_with_cleanups()
-> result = func(*args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(1151)ignore_pipe()
-> result = func(*args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/builtins.py(286)run()
-> tree, relfile_list = WorkingTree.open_containing_paths(file_list)
/home/jameinel/dev/bzr/work/bzrlib/workingtree.py(348)open_containing_paths()
-> view_files = tree.views.lookup_view()
/home/jameinel/dev/bzr/work/bzrlib/views.py(112)lookup_view()
-> self._load_view_info()
/home/jameinel/dev/bzr/work/bzrlib/views.py(178)_load_view_info()
-> self.tree.lock_read()
/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(611)lock_read()
-> state = self.current_dirstate()
/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(215)current_dirstate()
-> return self._current_dirstate()
/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(227)_current_dirstate()
-> self._sha1_provider(), self._worth_saving_limit())
> /home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(262)_worth_saving_limit()
-> trace.warning('Invalid config value for'
(Pdb) c
Invalid config value for "bzr.workingtree.worth_saving_limit" value u'a' is not an integer.
> /home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(262)_worth_saving_limit()
-> trace.warning('Invalid config value for'
(Pdb) bt
/home/jameinel/bin/wbzr(139)<module>()
-> exit_val = bzrlib.commands.main()
/home/jameinel/dev/bzr/work/bzrlib/commands.py(1218)main()
-> ret = run_bzr_catch_errors(argv)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(1231)run_bzr_catch_errors()
-> return exception_to_return_code(run_bzr, argv)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(936)exception_to_return_code()
-> return the_callable(*args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(1136)run_bzr()
-> ret = run(*run_argv)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(697)run_argv_aliases()
-> return self.run(**all_cmd_args)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(719)run()
-> return self._operation.run_simple(*args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/cleanup.py(135)run_simple()
-> self.cleanups, self.func, *args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/cleanup.py(165)_do_with_cleanups()
-> result = func(*args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/commands.py(1151)ignore_pipe()
-> result = func(*args, **kwargs)
/home/jameinel/dev/bzr/work/bzrlib/builtins.py(299)run()
-> show_pending=(not no_pending), verbose=verbose)
/home/jameinel/dev/bzr/work/bzrlib/status.py(130)show_tree_status()
-> wt.lock_read()
/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(611)lock_read()
-> state = self.current_dirstate()
/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(215)current_dirstate()
-> return self._current_dirstate()
/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(227)_current_dirstate()
-> self._sha1_provider(), self._worth_saving_limit())
> /home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py(262)_worth_saving_limit()
-> trace.warning('Invalid config value for'
(Pdb) q
bzr: failed to report crash using apport:
OSError(13, 'Permission denied')
bzr: ERROR: bdb.BdbQuit:
Traceback (most recent call last):
File "/home/jameinel/dev/bzr/work/bzrlib/commands.py", line 936, in exception_to_return_code
return the_callable(*args, **kwargs)
File "/home/jameinel/dev/bzr/work/bzrlib/commands.py", line 1136, in run_bzr
ret = run(*run_argv)
File "/home/jameinel/dev/bzr/work/bzrlib/commands.py", line 697, in run_argv_aliases
return self.run(**all_cmd_args)
File "/home/jameinel/dev/bzr/work/bzrlib/commands.py", line 719, in run
return self._operation.run_simple(*args, **kwargs)
File "/home/jameinel/dev/bzr/work/bzrlib/cleanup.py", line 135, in run_simple
self.cleanups, self.func, *args, **kwargs)
File "/home/jameinel/dev/bzr/work/bzrlib/cleanup.py", line 165, in _do_with_cleanups
result = func(*args, **kwargs)
File "/home/jameinel/dev/bzr/work/bzrlib/commands.py", line 1151, in ignore_pipe
result = func(*args, **kwargs)
File "/home/jameinel/dev/bzr/work/bzrlib/builtins.py", line 299, in run
show_pending=(not no_pending), verbose=verbose)
File "/home/jameinel/dev/bzr/work/bzrlib/status.py", line 130, in show_tree_status
wt.lock_read()
File "/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py", line 611, in lock_read
state = self.current_dirstate()
File "/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py", line 215, in current_dirstate
return self._current_dirstate()
File "/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py", line 227, in _current_dirstate
self._sha1_provider(), self._worth_saving_limit())
File "/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py", line 262, in _worth_saving_limit
trace.warning('Invalid config value for'
File "/home/jameinel/dev/bzr/work/bzrlib/workingtree_4.py", line 262, in _worth_saving_limit
trace.warning('Invalid config value for'