Speed up --oneline dramatically
authorDon Zickus <dzickus@redhat.com>
Fri, 5 Jun 2009 21:16:47 +0000 (17:16 -0400)
committerDon Zickus <dzickus@redhat.com>
Fri, 5 Jun 2009 21:16:47 +0000 (17:16 -0400)
commitac307a814f18edf3b87b5e1e0d3f1c72e7d3ae04
tree52acf145539a3ae37418bd125aabce046bbb18ad
parent1297b3989fdc8abb91edc61f7ab02b299ebe0161
Speed up --oneline dramatically

Normally the output format does not provide enough data to display what is
needed for the --oneline format.  As a result a call to getbug() is made to
provide more data.  This extra call to the server takes precious time and
bandwidth as the server has to re-process the bug ids _and_ spit out a ton
of data over the wire back to the client.  Ewww how wasteful!!

Let's be greener (and celebrate World Environment Day!).  According to dkl,
we can customize the output the server sends to us using column_list.
Therefore if the app knows ahead of time what data is wants to display
(which it does), why not tell the server what data to send back.

This cuts out the getbug() call, saving us a return trip to the server and
conserves lots of bandwidth by providing _exactly_ the data we want on the
first call.  You really can't do better than that!!!  Toss in --bztype at
the command line and a query that returns 290 bzs used to take over a
minute, now takes 6 seconds!!  Wow.

I mean Wow.

The downside is the output format and the column_list variable must always
be kept in sync otherwise you cause a return trip to the server.

**side note** Normally one would think this would cause a fault because the
data wouldn't exist, which makes it trivial to spot when the colum_list and
output format get out of sync.  But nooooo.  python-bugzilla is way to
clever for us.  Instead the fault handling causes the app to go back to the
server and look for the data.  Only if the server comes back empty does it
fault like we would expect.  This makes it harder to notice when things are
out of sync (unless you are a freak about speed like myself and can notice
these lapses).

Wasn't sure where to point that out so I decided to stick it in the commit
log.

Cheers,
Don
bin/bugzilla