From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jason Rumney Newsgroups: gmane.emacs.devel Subject: Re: Locks on the Bzr repository Date: Fri, 20 Aug 2010 01:29:56 +0800 Message-ID: <4C6D6A14.1060805@gnu.org> References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1282239023 28388 80.91.229.12 (19 Aug 2010 17:30:23 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 19 Aug 2010 17:30:23 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Aug 19 19:30:21 2010 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Om8wW-0003lk-CT for ged-emacs-devel@m.gmane.org; Thu, 19 Aug 2010 19:30:21 +0200 Original-Received: from localhost ([127.0.0.1]:36564 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Om8wV-0003BF-QQ for ged-emacs-devel@m.gmane.org; Thu, 19 Aug 2010 13:30:19 -0400 Original-Received: from [140.186.70.92] (port=58435 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Om8wP-0003AV-Qn for emacs-devel@gnu.org; Thu, 19 Aug 2010 13:30:15 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Om8wN-0001bI-2K for emacs-devel@gnu.org; Thu, 19 Aug 2010 13:30:12 -0400 Original-Received: from mail-pw0-f41.google.com ([209.85.160.41]:53388) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Om8wM-0001bC-Qw for emacs-devel@gnu.org; Thu, 19 Aug 2010 13:30:11 -0400 Original-Received: by pwi3 with SMTP id 3so1480460pwi.0 for ; Thu, 19 Aug 2010 10:30:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=1XH56ykpzZEmkoeTuSsK0R774uOBTxeC6ReRRJIXwUQ=; b=HTHQYpkQuxnG1wvQl+YIIjhLjIFIXv6h+aXEPvd6TjkrhJl+Nt5OO5U7aEdLPTYRIM +LEczQPFl8/acvDStRkEBh+cyoCZJuD3BQPDy7YgY50Ogfopm6yCseSEpD6B28RmvptX SAIMuKfKmXnhZWqhzkZ4rbU1K1a/w6THUeIM0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding; b=Sup7mBkpvQMsGPiKGZ0u+QiQa9rZwQwxdJDlx5gK+LUMSik4vL7O+c8433qAqkNTyu xkmXQINm503OhwpJ3RcdxNbl7Zh0g4KZj7s+C7Gsb/uUFSs/najUvm7jQKKOswFNBGdh 22/3vXRG5zeqkYEjRm/cZdPRi6jlbf60v2ovQ= Original-Received: by 10.114.131.8 with SMTP id e8mr200439wad.95.1282239009811; Thu, 19 Aug 2010 10:30:09 -0700 (PDT) Original-Received: from [192.168.249.100] ([202.87.221.130]) by mx.google.com with ESMTPS id 33sm3033563wad.18.2010.08.19.10.30.07 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 19 Aug 2010 10:30:08 -0700 (PDT) User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100802 Thunderbird/3.1.2 In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:128884 Archived-At: On 20/8/2010 12:24 AM, Eli Zaretskii wrote: >> From: Stefan Monnier >> Date: Thu, 19 Aug 2010 17:40:29 +0200 >> >> Could it be that bzr grabs the lock when you do "bzr commit" and keep it >> held for as long as you're editing the commit message? > Maybe so, but why would it take Jason 28 minutes and 50-odd seconds to > edit a commit message? > > I suspect the culprit is network traffic, but Jason should be able to > tell more by looking at his .bzr.log file, where each operation is > logged together with its timing. Here are the commits I performed today: The first one went quite smoothly but took about 8 minutes. Thu 2010-08-19 22:50:16 +0800 0.058 bazaar version: 2.1.1 0.058 bzr arguments: [u'commit', u'-m', u"(w32_wnd_proc): Don't check context before initializing.\n", u'src/ChangeLog', u'src/w32fns.c'] 0.086 looking for plugins in /home/jasonr/.bazaar/plugins 0.086 looking for plugins in /usr/lib/python2.6/dist-packages/bzrlib/plugins 0.159 encoding stdout as osutils.get_user_encoding() 'UTF-8' 0.225 opening working tree '/home/jasonr/bzr/emacs/trunk' 0.303 ssh implementation is OpenSSH 28.204 preparing to commit [22809] 2010-08-19 22:51:09.255 INFO: Committing to: sftp://jasonr@bzr.savannah.gnu.org/srv/bzr/emacs/trunk/ 52.688 Selecting files for commit with filter [u'src/ChangeLog', u'src/w32fns.c'] [22809] 2010-08-19 22:51:09.326 INFO: modified src/ChangeLog [22809] 2010-08-19 22:51:09.344 INFO: modified src/w32fns.c 52.990 Using fetch logic to copy between CHKInventoryRepository('file:///home/jasonr/bzr/emacs/.bzr/repository/')(RepositoryFormat2a()) and CHKInventoryRepository('sftp://jasonr@bzr.savannah.gnu.org/srv/bzr/emacs/.bzr/repository/')(RepositoryFormat2a()) 52.990 fetch up to rev {jasonr@gnu.org-20100819145109-17tqfx1uylo95ras} [22809] 2010-08-19 22:58:21.431 INFO: Committed revision 101137. 487.501 return code 0 The second attempt failed, perhaps due to Stefan breaking the lock (as it failed in unlock self.confirm): Thu 2010-08-19 23:07:28 +0800 0.052 bazaar version: 2.1.1 0.053 bzr arguments: [u'commit', u'-m', u'(set_frame_menubar): Remove call to undefined function.\n', u'src/ChangeLog', u'src/w32menu.c'] 0.084 looking for plugins in /home/jasonr/.bazaar/plugins 0.085 looking for plugins in /usr/lib/python2.6/dist-packages/bzrlib/plugins 0.246 encoding stdout as osutils.get_user_encoding() 'UTF-8' 0.301 opening working tree '/home/jasonr/bzr/emacs/trunk' 0.606 ssh implementation is OpenSSH 29.123 preparing to commit [23356] 2010-08-19 23:08:28.093 INFO: Committing to: sftp://jasonr@bzr.savannah.gnu.org/srv/bzr/emacs/trunk/ 59.322 Selecting files for commit with filter [u'src/ChangeLog', u'src/w32menu.c'] [23356] 2010-08-19 23:08:28.202 INFO: modified src/ChangeLog [23356] 2010-08-19 23:08:28.225 INFO: modified src/w32menu.c 59.631 Using fetch logic to copy between CHKInventoryRepository('file:///home/jasonr/bzr/emacs/.bzr/repository/')(RepositoryFormat2a()) and CHKInventoryRepository('sftp://jasonr@bzr.savannah.gnu.org/srv/bzr/emacs/.bzr/repository/')(RepositoryFormat2a()) 59.631 fetch up to rev {jasonr@gnu.org-20100819150828-w2hw9ic7u7z9hfqp} 470.146 Raising exception with args ('Server connection dropped: ',) 470.146 Error suppressed by only_raises: 470.164 Traceback (most recent call last): File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 222, in wrapped return unbound(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 319, in unlock self.confirm() File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 415, in confirm info = self.peek() File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 438, in peek info = self._read_info_file(self._held_info_path) File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 428, in _read_info_file return self._parse_info(self.transport.get_bytes(path)) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 435, in get_bytes f = self.get(relpath) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 431, in get failure_exc=errors.ReadError) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 721, in _translate_io_exception raise e SSHException: Server connection dropped: 470.167 Error suppressed by only_raises: 470.208 Traceback (most recent call last): File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 222, in wrapped return unbound(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 319, in unlock self.confirm() File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 415, in confirm info = self.peek() File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 438, in peek info = self._read_info_file(self._held_info_path) File "/usr/lib/python2.6/dist-packages/bzrlib/lockdir.py", line 428, in _read_info_file return self._parse_info(self.transport.get_bytes(path)) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 435, in get_bytes f = self.get(relpath) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 425, in get f = self._get_sftp().file(path, mode='rb') File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 245, in open t, msg = self._request(CMD_OPEN, filename, imode, attrblock) File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 627, in _request num = self._async_request(type(None), t, *arg) File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 649, in _async_request self._send_packet(t, str(msg)) File "/usr/lib/pymodules/python2.6/paramiko/sftp.py", line 172, in _send_packet self._write_all(out) File "/usr/lib/pymodules/python2.6/paramiko/sftp.py", line 136, in _write_all n = self.sock.send(out) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/ssh.py", line 194, in send return self.__socket.send(data) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/ssh.py", line 665, in send return os.write(self.proc.stdin.fileno(), data) OSError: [Errno 32] Broken pipe 470.313 Traceback (most recent call last): File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line 853, in exception_to_return_code return the_callable(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line 1055, in run_bzr ret = run(*run_argv) File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line 661, in run_argv_aliases return self.run_direct(**all_cmd_args) File "/usr/lib/python2.6/dist-packages/bzrlib/commands.py", line 665, in run_direct return self._operation.run_simple(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/cleanup.py", line 122, in run_simple self.cleanups, self.func, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/cleanup.py", line 156, in _do_with_cleanups result = func(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/builtins.py", line 3138, in run exclude=safe_relpath_files(tree, exclude)) File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 194, in write_locked result = unbound(self, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/workingtree_4.py", line 197, in commit result = WorkingTree3.commit(self, message, revprops, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 194, in write_locked result = unbound(self, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/mutabletree.py", line 225, in commit *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/commit.py", line 257, in commit possible_master_transports=possible_master_transports) File "/usr/lib/python2.6/dist-packages/bzrlib/cleanup.py", line 118, in run self.cleanups, self.func, self, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/cleanup.py", line 156, in _do_with_cleanups result = func(*args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/commit.py", line 420, in _commit self.branch.repository, new_revno, self.rev_id) File "/usr/lib/python2.6/dist-packages/bzrlib/branch.py", line 924, in import_last_revision_info self.set_last_revision_info(revno, revid) File "/usr/lib/python2.6/dist-packages/bzrlib/decorators.py", line 194, in write_locked result = unbound(self, *args, **kwargs) File "/usr/lib/python2.6/dist-packages/bzrlib/branch.py", line 2508, in set_last_revision_info if self._get_append_revisions_only(): File "/usr/lib/python2.6/dist-packages/bzrlib/branch.py", line 2691, in _get_append_revisions_only value = self.get_config().get_user_option('append_revisions_only') File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 187, in get_user_option return self._get_user_option(option_name) File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 733, in _get_user_option value = source()._get_user_option(option_name) File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 406, in _get_user_option value = self._get_parser().get_value(section, option_name) File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 997, in _get_parser return self._config._get_configobj() File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 1505, in _get_configobj return ConfigObj(self._get_config_file(), encoding='utf-8') File "/usr/lib/python2.6/dist-packages/bzrlib/config.py", line 1500, in _get_config_file return StringIO(self._transport.get_bytes(self._filename)) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 435, in get_bytes f = self.get(relpath) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/sftp.py", line 425, in get f = self._get_sftp().file(path, mode='rb') File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 245, in open t, msg = self._request(CMD_OPEN, filename, imode, attrblock) File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 627, in _request num = self._async_request(type(None), t, *arg) File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 649, in _async_request self._send_packet(t, str(msg)) File "/usr/lib/pymodules/python2.6/paramiko/sftp.py", line 172, in _send_packet self._write_all(out) File "/usr/lib/pymodules/python2.6/paramiko/sftp.py", line 136, in _write_all n = self.sock.send(out) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/ssh.py", line 194, in send return self.__socket.send(data) File "/usr/lib/python2.6/dist-packages/bzrlib/transport/ssh.py", line 665, in send return os.write(self.proc.stdin.fileno(), data) OSError: [Errno 32] Broken pipe 470.314 return code 3 By the time I'd tried again and failed due to my own stale locks (I'm not sure why - did bzr revive them after the above failure?), and then an out of date tree; updated the tree with Stefan's changes; and finally committed successfully, it had taken me 50 minutes to commit a 2 line change!