/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/lockdir.py

  • Committer: Vincent Ladeuil
  • Date: 2010-01-25 15:55:48 UTC
  • mto: (4985.1.4 add-attr-cleanup)
  • mto: This revision was merged to the branch mainline in revision 4988.
  • Revision ID: v.ladeuil+lp@free.fr-20100125155548-0l352pujvt5bzl5e
Deploy addAttrCleanup on the whole test suite.

Several use case worth mentioning:

- setting a module or any other object attribute is the majority
by far. In some cases the setting itself is deferred but most of
the time we want to set at the same time we add the cleanup.

- there multiple occurrences of protecting hooks or ui factory
which are now useless (the test framework takes care of that now),

- there was some lambda uses that can now be avoided.

That first cleanup already simplifies things a lot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006, 2007, 2008, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
252
252
        if info is None:
253
253
            raise LockFailed(self, "lock was renamed into place, but "
254
254
                "now is missing!")
255
 
        if info.get('nonce') != self.nonce:
 
255
        if info['nonce'] != self.nonce:
256
256
            self._trace("rename succeeded, "
257
257
                "but lock is still held by someone else")
258
258
            raise LockContention(self)
430
430
    def peek(self):
431
431
        """Check if the lock is held by anyone.
432
432
 
433
 
        If it is held, this returns the lock info structure as a dict
 
433
        If it is held, this returns the lock info structure as a rio Stanza,
434
434
        which contains some information about the current lock holder.
435
435
        Otherwise returns None.
436
436
        """
459
459
        return s.to_string()
460
460
 
461
461
    def _parse_info(self, info_bytes):
462
 
        stanza = rio.read_stanza(osutils.split_lines(info_bytes))
463
 
        if stanza is None:
464
 
            # see bug 185013; we fairly often end up with the info file being
465
 
            # empty after an interruption; we could log a message here but
466
 
            # there may not be much we can say
467
 
            return {}
468
 
        else:
469
 
            return stanza.as_dict()
 
462
        # TODO: Handle if info_bytes is empty
 
463
        return rio.read_stanza(osutils.split_lines(info_bytes)).as_dict()
470
464
 
471
465
    def attempt_lock(self):
472
466
        """Take the lock; fail if it's already held.
617
611
    def _format_lock_info(self, info):
618
612
        """Turn the contents of peek() into something for the user"""
619
613
        lock_url = self.transport.abspath(self.path)
620
 
        start_time = info.get('start_time')
621
 
        if start_time is None:
622
 
            time_ago = '(unknown)'
623
 
        else:
624
 
            time_ago = format_delta(time.time() - int(info['start_time']))
 
614
        delta = time.time() - int(info['start_time'])
625
615
        return [
626
616
            'lock %s' % (lock_url,),
627
 
            'held by %s on host %s [process #%s]' %
628
 
                tuple([info.get(x, '<unknown>') for x in ['user', 'hostname', 'pid']]),
629
 
            'locked %s' % (time_ago,),
 
617
            'held by %(user)s on host %(hostname)s [process #%(pid)s]' % info,
 
618
            'locked %s' % (format_delta(delta),),
630
619
            ]
631
620
 
632
621
    def validate_token(self, token):