'bzr status' locks WT twice

Bug #778564 reported by John A Meinel
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Bazaar
Confirmed
Low
Unassigned

Bug Description

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'

Jelmer Vernooij (jelmer)
tags: added: check-for-breezy
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.