[Adium-devl] Burning Duck 2.0

Jeffrey Melloy jmelloy at visualdistortion.org
Thu Dec 21 06:04:30 UTC 2006


I wrote this while at work today:

(I'm at work and adding thoughts throughout the day.  Also, my mail  
is acting up, so I'm going basically from memory.  When GMail is down  
it messes with my world in a very sad way.)

There is a new crash reporter in development.  I've been busy and  
lazy, so it hasn't gotten done.  I'd say it's 80% done to be usable,  
and 50% done to what was envisioned.

It does a couple things.  First, when you import a log, it parses it  
and splits it into the various pieces.  It finds the crashed thread,  
it pulls out all the installed plugins, it parses the OS: 10.4.1  
lines, etc.

After it splits out the crashed thread, it goes line by line and  
inserts the crashed objects into a table with a unique index.  Then  
it takes the object ids and creates what it calls a "crash print".   
The crash print is a string of numbers like  
1-3-42-28-24-21-65-12-62.  Crashes which have the same crash stacks  
will have the same crash print; crashes which have similar crash  
stacks will have similar crash prints.  (IE, the crash print  
28-24-21-65-12-62 will have the same bottom six objects, but the  
first crash will have gotten farther in the stack.)  It creates what  
amounts to a stats table to compare version/crash prints.

I'm very curious how this piece performs.  After it gets more done,  
that might need to be rewritten for speed.

The main page (which I have a screenshot of somewhere, but can't  
find) then reads off that and groups popular crashes by version and  
shows the first half dozen objects in the crash.

That part is done.  The part that isn't done is viewing any crash  
other than the first one in the group, but that won't take much.   
Searching is about 50% done.

There is a logon system envisioned, where guests can see "non- 
sensitive" information (No email, IP, etc) and devs can mark the  
entire group fixed.  How to mark a group fixed needs to have some  
thought put into it.  Grouping itself could use a little thought, too.

As far as the old system goes, the searching has a couple big problems:

1) The version of PostgreSQL used on my server was created in the  
Mesozoic.  It originally communicated through smoke signals, and was  
only recently updated to use the TCP/IP stack.  One of the main,  
documented issues this version has is index bloat on a linearly  
growing table that periodically has old records deleted.  Sound  
familiar?

2) In the SQL Logger, I use a module called tsearch which is  
specifically designed for speedy searching.  I don't on Visual  
Distortion, because it's not installed.  Thus we use the old'n'busted  
method, which is basically a regexp.  A non-indexed regexp.

The new crash reporter will take advantage of tsearch, since to not  
is just silly.

The request was made that we get crashes/day, crashes/version, common  
crashes/version, etc, graphs.  It's on the todo list, but I'm not  
considering them necessary.  However, the new schema is much more  
flexible.

A new host may be nice.  To use the existing codebase, it would  
require PostgreSQL and a servlet engine like Tomcat or Resin.

I apologize for not taking care of some of this stuff sooner; the new  
one is so close it's beyond ridiculous.  When I get home from work I  
have a tendency to not want to do anything on a computer requiring  
thought, and I get busy or lazy or both on the weekends.

Jeff


On Dec 20, 2006, at 3:42 PM, Zac West wrote:

> I'd likely end up writing it, and I have a few ideas in my head  
> about how to index, search and process them quickly.
>
> Zac
> _______________________________________________
> Adium-devl mailing list
> Adium-devl at adiumx.com
> http://adiumx.com/mailman/listinfo/adium-devl_adiumx.com





More information about the devel mailing list