aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | command:serve_commands: new command for running a command server.W. Trevor King2012-08-243-4/+709
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an initial step towards improving BE's efficiency. Previously, BE gets slow as the bug count increases for several commands (e.g. `be list`), because it takes time to load the bugdir information from disk at each invocation. If you use a remote repo (`be --repo http://localhost:8000/ list`), the server process may have already loaded the repo from disk, but now your listing process has to fetch everything over the wire. This is even worse than loading it from disk. With the new `be serve-commands` and `be --server URL ...` pair, the bugdir loading happens once on the server, and all the processing is also carried out on the server. This means that calls like `be --server http://localhost:8000/ list` will scale much better than other methods. For example: $ time be --server http://localhost:8000/ list > /dev/null real 0m2.234s user 0m0.548s sys 0m0.114s $ time be --server http://localhost:8000/ list > /dev/null real 0m0.730s user 0m0.548s sys 0m0.112s $ time be list > /dev/null real 0m2.453s user 0m2.289s sys 0m0.166s $ time be list > /dev/null real 0m2.521s user 0m2.350s sys 0m0.172s The first call to a cold server takes about the same time as a local call, because you need to load the bugs from the filesystem. However, later calls to a warm server are 3x faster, while later local calls are still slow. This is currently a minimal working implementation. There's a good deal of code in libbe.command.serve that I'd like to abstract out into a libbe.util library (since there's still a bunch of duplication between libbe.command.serve and libbe.command.serve_commands). The remote calls are also not as fast as I'd like, likely due to library load times. This commit just locks in an initial working implementation.
* | command:base: only cleanup UseInterface.storage_callback if it's there.W. Trevor King2012-08-241-1/+2
| | | | | | | | | | It's hard to see why it wouldn't be, but .setup_command handles the case where it's missing, so we should be consistent here.
* | command:base: use is/is-not None instead of ==/!= None in setup_command.W. Trevor King2012-08-241-3/+3
| | | | | | | | More Pythonic.
* | command:serve: wrap server in ExceptionApp regardless of SSL.W. Trevor King2012-08-241-1/+1
| | | | | | | | Previously, only the SSL server was using ExceptionApp.
* | util:http: add ability to pass raw POST data with get_post_url.W. Trevor King2012-08-241-10/+17
| |
* | util:http: convert urllib2.URLError into HTTPError in get_post_url.W. Trevor King2012-08-241-5/+11
| | | | | | | | | | Also rework liburl2.HTTPError handling to get both the reason and the error code into the HTTPError message.
* | util:http: pull HTTP helpers from libbe.storage.http into their own module.W. Trevor King2012-08-243-106/+130
| | | | | | | | This way they can be shared with the upcoming Command._run_remote.
* | storage:http: use an explicit relative import for base.W. Trevor King2012-08-241-2/+3
| |
* | storage:http: adjust HTTPError message in get_post_url.W. Trevor King2012-08-241-2/+2
| | | | | | | | | | | | We'll usually get this message if we fail to reach the server, but we can also get it if the server is so broken that it dies without returning a valid HTTP response.
* | storage:http: add agent argument to get_post_url.W. Trevor King2012-08-241-2/+4
| | | | | | | | | | This allows us to set an appropriate user agent if we use this function in other places (e.g. upcoming Command._run_remote).
* | command:serve: add SilentRequestHandler to avoid double-logging requests.W. Trevor King2012-08-231-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | They were being logged by the request handler, and then logged again by WSGI_Object.log_request. After this patch, requests are only logged when logger.level is at a <= level (e.g. closer to DEBUG) than the WSGI_Object.log_level (usually INFO). For example, in Serve_setup_logging, self.logger.setLevel(logging.INFO) will get request logs printed, but self.logger.setLevel(logging.WARNING) will not.
* | libbe:util:plugin: cleanup recent zip/egg handling code.W. Trevor King2012-08-231-33/+16
| | | | | | | | | | | | | | To test this, you'll need to build an egg. You can use setuptools to do this, by applying: <snip-patch>
* | Cherrypick improved zipfile support from Niall Douglas.Niall Douglas (a [underscors] sourceforge {at} nedprod [dot] com)2012-08-231-9/+15
| | | | | | | | | | | | | | | | | | | | | | WTK: This is the meat of Niall's commit 4632cb6d22faa7220540f92af67693084f80f033 Author: Niall Douglas ... Date: Wed Feb 22 17:46:06 2012 +0000 Fixed small bug where running from inside zip support was over preferring .pyc files
* | Cherrypick initial zipfile support from Niall Douglas.Niall Douglas (a [underscors] sourceforge {at} nedprod [dot] com)2012-08-231-2/+27
| | | | | | | | | | | | | | | | | | | | | | WTK: This is a portion of Niall's commit 7f7a7738bcbcfd06a026f2985c1823a4ba5eb55b Author: Niall Douglas ... Date: Tue Feb 21 20:35:28 2012 +0000 Several hacks to make BE compatible with bbfreeze and therefore compilable into a self contained directory
* | storage:vcs:hg: remove grandchildren from Hg._vcs_listdir.W. Trevor King2012-08-231-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes: From: Phil Schumm Date: Thu, 23 Aug 2012 08:15:21 -0500 Subject: [Be-devel] -be diff- under Hg ... I've just noticed that -be diff- seems to yield different output under Git than it does under Hg (e.g., in a Mercurial +repository, -be diff- appears to show all changes as new bugs rather than modified). ...
* | storage:base: add tests to catch grandchildren in .children() output.W. Trevor King2012-08-231-1/+51
| | | | | | | | | | | | | | | | | | | | | | With a tree like: a `-- b `-- c children(a) should return [b], not [b, c] or [c]. This catches a bug in the Mercurial backend. Fix to follow.
* | storage:vcs:hg: fix missformed file_a -> file_b message typo.W. Trevor King2012-08-231-1/+1
| |
* | Update CherryPy dependency package to python-cherrypy3 on Debian.W. Trevor King2012-05-101-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks to Tim Mazid for reporting the bug, and Israel Basurto for suggesting the fix. On Wed, May 09, 2012 at 07:26:14PM +1000, Tim Mazid wrote: > $ interfaces/web/cfbe.py ~/projects/proj/ > Bugs Everywhere Directory v1.4 > Traceback (most recent call last): > File "interfaces/web/cfbe.py", line 42, in <module> > cherrypy.quickstart(WebInterface, '/', app_config) > AttributeError: 'module' object has no attribute 'quickstart' > > This is with the latest be from git, and python-cherrypy 2.3.0-3 from > Debian wheezy.
* | Fix deb-python -> dev-python typo in doc/install.txt.W. Trevor King2012-04-261-1/+1
| |
* | Change my email address from drexel.edu to tremily.us.W. Trevor King2012-04-181-2/+3
| |
* | Normalize whitespace in interfaces/web/webpy.W. Trevor King2012-03-251-37/+38
| |
* | Normalize whitespace in interfaces/web/templates/base.html.W. Trevor King2012-03-251-16/+16
| |
* | Add tag filter on the web interfaceIsrael Basurto2012-03-253-7/+30
| |
* | Apply Niall's earlier fix for comment XML loading to bug XML loading.W. Trevor King2012-03-032-2/+3
| | | | | | | | Sometimes saxutils returns unicode.
* | Make ID expansion less strict for comment text.W. Trevor King2012-03-031-3/+11
| | | | | | | | | | This avoids errors if the comment text references a repository that you don't have locally.
* | Fix `be import_xml` bugs.Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)2012-03-032-3/+7
| |
* | Make the full UUIDs optional for `new` and `comment`.W. Trevor King2012-03-032-2/+14
| | | | | | | | | | This makes the default output less threatening for new users, while still supplying the full UUIDs for driving BE from external software.
* | Print full UUIDs during `new` and `comment`.Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)2012-03-022-2/+2
| |
* | Added BE_INPUT_ENCODING and BE_OUTPUT_ENCODING to allow charset for stdin ↵Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com)2012-02-251-0/+8
| | | | | | | | and stdout to be overridden. This is necessary on Windows as there is no way for external programs to set stdin or stdout charsets :(
* | Oops, forgot to bump the version and date when tweaking the man page.W. Trevor King2012-02-251-2/+2
| |
* | Use a bare URL for the link from the man page to online docs.W. Trevor King2012-02-251-4/+3
| | | | | | | | | | This will make it easier (possible?) for people using the roff version of the man page to follow the link.
* | Use $ instead of % for the prompt in the man page bug submission example.W. Trevor King2012-02-251-3/+3
| |
* | I changed my mind and fixed #/03d07e61#.W. Trevor King2012-02-254-2/+22
| |
* | Keep stdin (file descriptor 0) open in the pager's child process.W. Trevor King2012-02-251-1/+0
| | | | | | | | | | | | | | | | | | This fixes the underlying problem that we worked around in commit 2c9ae15f53aef57d28091b237c193c653c6e80dd. Now even $ echo 'some bug | be --paginate new - will work instead of raising IOError: [Errno 9] Bad file descriptor.
* | Add `new` to list of commands that should not default to using the pager.W. Trevor King2012-02-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the command is run in the pager, access to stdin is tricky, so I avoid it by default. I'd just missed the fact that `new -` used stdin, which caused https://bugzilla.redhat.com/show_bug.cgi?id=751473 $ be new - Traceback (most recent call last): ... File "/usr/lib/python2.7/site-packages/libbe/command/new.py", line 89, in _run summary = self.stdin.readline() ... File "/usr/lib64/python2.7/codecs.py", line 473, in read newdata = self.stream.read(size) IOError: [Errno 9] Bad file descriptor
* | Hide the traceback on InvalidURL errors.W. Trevor King2012-02-251-0/+5
| | | | | | | | | | | | | | | | | | In response to https://bugzilla.redhat.com/show_bug.cgi?id=733945 in which Neal Becker was bummed at the long traceback, which may initially look like a programming issue.
* | Remove util.subproc.Pipe, as we no longer use it in BE.W. Trevor King2012-02-251-139/+0
| | | | | | | | | | | | | | | | | | | | This was at one point used by `update_copyright.py`. Now that that is an external package (and doesn't use `Pipe` anymore either), we can safely remove this code. As a side benifit, the Pipe doctests will no longer be there to fail on OS X and other systems sufficiently different from my development box.
* | Add CherryPy dependency and minimal install info to doc/install.txt.W. Trevor King2012-02-252-21/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I seem to have left CherryPy out of the earlier list. The extra handholding for minimal installations is an attempt to address problems people have had installing BE on non-Linux systems, where the standard build tools are less common. I also mention my Gentoo overlay and Michel Alexandre Salim's Fedora package, so people running Gentoo and Fedora don't have to bother figuring any of this out ;). Finally, I moved the package information up to the top of the install page, so people on supported systems realize they have an easy out before reading through the install procedure.
* | Cherrypick a better version string for setup.py from Niall Douglas.Niall Douglas (a [underscors] sourceforge {at} nedprod [dot] com)2012-02-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | WTK: This is a small part of Niall's commit 7f7a7738bcbcfd06a026f2985c1823a4ba5eb55b Author: Niall Douglas ... Date: Tue Feb 21 20:35:28 2012 +0000 Several hacks to make BE compatible with bbfreeze and therefore compilable into a self contained directory I cleaned up his string construction, which was originally version.version()+" ("+rev_date+")"
* | Avoid generating another StringIO instance in StringInputOutput.get_stdout().W. Trevor King2012-02-241-2/+1
| |
* | Shuffle doc/conf.py to get the Git revision into the Sphinx documentation.W. Trevor King2012-02-171-10/+12
|/
* Update update-copyright to version 0.3.W. Trevor King2012-02-161-0/+0
|
* Add update-copyright as a submodule and update release.py accordingly.W. Trevor King2012-02-164-4/+15
| | | | Also add `**kwargs` to `invoke` so we can specify the environment.
* Fix release.py to allow uncommented initial _VERSION.W. Trevor King2012-02-161-1/+1
| | | | | | | | | | | | | | I was in favor of always leaving _VERSION commented in the trunk, since released branches should fork off the trunk: trunkA -> trunkB -> trunkC -> trunkD `-> 1.0.0 `-> 1.1.0 `-> 1.0.1 `-> 1.1.1 But that doesn't seem to have been how things have worked out in BE. In any case, you will need to release on top of a previous release (e.g. 1.0.1 on top of 1.0.0 in my above example), so we cannot depend on an initial comment character before _VERSION.
* Modify release.py for external update-copyright.py.W. Trevor King2012-02-161-4/+1
|
* Ran update-copyright.py.W. Trevor King2012-02-1673-720/+723
|
* Transition to my external update-copyright package.W. Trevor King2012-02-162-662/+18
| | | | http://pypi.python.org/pypi/update-copyright/
* Add .mailmap, mapping Git committers and authors to canonical names.W. Trevor King2012-02-161-0/+13
|
* Generated libbe/_version.py was not UTF-8 aware.Matěj Cepl2012-01-024-1/+40
| | | | | | So make failed for me (Matěj Cepl). Signed-off-by: Matěj Cepl <mcepl@redhat.com>
* Fix .gitignoreMatěj Cepl2012-01-022-3/+20
| | | | | | | | | | | Per gitignore(5) it seems to me that directories in the root of the repository should be ignored without leading ./ files. E.g. build/ is correct for ignoring build/ directory and its content. Signed-off-by: Matěj Cepl <mcepl@redhat.com>