Re: recent Library changes
Matthew Toseland <toad@...
2010-06-05 11:10:38 GMT
On Saturday 05 June 2010 04:28:55 Ximin Luo wrote:
> Hey toad,
> Could you please explain the following:
> - SkelTreeMap: What are you trying to do with it? None of the changes make any
> functional difference AFAICS. There's no point "encapsulating" SkelValue stuff
> into separate methods; that class is used only within SkelTreeMap.
I wanted to ensure that we always maintain consistency (e.g. w.r.t. isLoaded). This is the usual reason for
encapsulation. However, this was added during debugging, wierd things were happening; if you want to
change it back then do so.
> - SkelBTreeMap: In update(), what did you do to the main loop?
Ummm, several things? The most obvious thing I did was to create a wrapper method to deal with overflow -
stuff that doesn't fit in a node. Other stuff includes processing the queued data in the right order so we
don't generate load until we've dealt with as much as possible. Much of that was designed to ensure, and
enable, finite queue lengths, to avoid OutOfMemory / constant Full GC's.
> - Notifier: what's it for?
Avoiding all the 1 second Thread.sleep()'s.
> - ObjectProcessor: What's the new stuff (capacity, etc) you've added for?
Detecting overflow and thus preventing deadlocks. Look at the call stack.
> How is performance now? If it's still a problem, then it'll probably be better
> to make the async design changes I mentioned, rather than repeatedly add lots
> of hacks that bloat the code. (For example, data structures classes shouldn't
> need to have arbitrary queue limits hard-coded into them.)
That would be great but I want to ship a working system ASAP.
IMHO performance is reasonable at this point. I have still had some OOMs and other wierd errors (e.g. the
Packer stuff recently), but I'm hoping to ship this on Monday.
> Some minor changes that I will be making anyways:
> 1. adding a Objects.idString() instead of using System.identityHashcode in 3
> separate classes to do the same thing. Where have you used Object.toString()
> implicitly? I only know of "+this+", and I'll be replacing those snippets with
IMHO it is cleaner to have a proper toString(), and third party code will NEVER rely on it
> 2. re-implementing SkelBTreeMap.keySetAutoDeflate() to NOT DUPLICATE CODE.
> Instead, BTreeMap.entrySet() will use a separate BTreeIterator class with
> parameters/hooks(onDscInto,onAscFrom)/etc which SkelBTreeMap can use
> 3. finding a better alternative to TaskAbortExceptionConverter and
> ExceptionConverter which iirc were temporary hacks anyways.
I doubt that there is one, unless you want to store the RuntimeException's.
Devl mailing list