~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/lockdir.py

  • Committer: Danny van Heumen
  • Date: 2010-03-09 21:42:11 UTC
  • mto: (4634.139.5 2.0)
  • mto: This revision was merged to the branch mainline in revision 5160.
  • Revision ID: danny@dannyvanheumen.nl-20100309214211-iqh42x6qcikgd9p3
Reverted now-useless TODO list.

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, 2010 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
110
110
    debug,
111
111
    errors,
112
112
    lock,
113
 
    osutils,
114
113
    )
115
114
import bzrlib.config
116
 
from bzrlib.decorators import only_raises
117
115
from bzrlib.errors import (
118
116
        DirectoryNotEmpty,
119
117
        FileExists,
296
294
                                            info_bytes)
297
295
        return tmpname
298
296
 
299
 
    @only_raises(LockNotHeld, LockBroken)
300
297
    def unlock(self):
301
298
        """Release a held lock
302
299
        """
425
422
 
426
423
        peek() reads the info file of the lock holder, if any.
427
424
        """
428
 
        return self._parse_info(self.transport.get_bytes(path))
 
425
        return self._parse_info(self.transport.get(path))
429
426
 
430
427
    def peek(self):
431
428
        """Check if the lock is held by anyone.
458
455
                   )
459
456
        return s.to_string()
460
457
 
461
 
    def _parse_info(self, info_bytes):
462
 
        stanza = rio.read_stanza(osutils.split_lines(info_bytes))
 
458
    def _parse_info(self, info_file):
 
459
        stanza = rio.read_stanza(info_file.readlines())
463
460
        if stanza is None:
464
461
            # see bug 185013; we fairly often end up with the info file being
465
462
            # empty after an interruption; we could log a message here but
540
537
                    deadline_str = time.strftime('%H:%M:%S',
541
538
                                                 time.localtime(deadline))
542
539
                lock_url = self.transport.abspath(self.path)
543
 
                # See <https://bugs.edge.launchpad.net/bzr/+bug/250451>
544
 
                # the URL here is sometimes not one that is useful to the
545
 
                # user, perhaps being wrapped in a lp-%d or chroot decorator,
546
 
                # especially if this error is issued from the server.
547
540
                self._report_function('%s %s\n'
548
 
                    '%s\n' # held by
549
 
                    '%s\n' # locked ... ago
550
 
                    'Will continue to try until %s, unless '
551
 
                    'you press Ctrl-C.\n'
552
 
                    'See "bzr help break-lock" for more.',
553
 
                    start,
554
 
                    formatted_info[0],
555
 
                    formatted_info[1],
556
 
                    formatted_info[2],
557
 
                    deadline_str,
558
 
                    )
 
541
                                      '%s\n' # held by
 
542
                                      '%s\n' # locked ... ago
 
543
                                      'Will continue to try until %s, unless '
 
544
                                      'you press Ctrl-C\n'
 
545
                                      'If you\'re sure that it\'s not being '
 
546
                                      'modified, use bzr break-lock %s',
 
547
                                      start,
 
548
                                      formatted_info[0],
 
549
                                      formatted_info[1],
 
550
                                      formatted_info[2],
 
551
                                      deadline_str,
 
552
                                      lock_url)
559
553
 
560
554
            if (max_attempts is not None) and (attempt_count >= max_attempts):
561
555
                self._trace("exceeded %d attempts")