I spent today trying to smoke out the causes behind the "please close()
me" messages in the log. Many of them were our fault, and I have fixed
most cases of that (I think there may be one remaining, but it is very
rare), however some seemed to come out of nowhere.

Adding the number of bytes written and the total size to the error
message, so I could see if the streams were being dropped without being
used at all, it turns out that the strange instances all report "( 0 of
0 read)". This is impossible - we never start these streams with zero
bytes (I checked) and the total length if a final field so it cannot be
muted later.

I explicitely checked this - I added a final String field set to a
litteral in the constructor, and when these finalizers come up, it is
suddenly null. Unless there is something about finalizers that I don't
know, this should be impossible, and must be a JVM error. Interestingly
though, we have a number of objects with similiar warnings in the
finalizer, but it only ever seems to happen with this one
(KeyInputStreamImpl).

This is Sun JVM 1.4. I guess we can add this to our list of JVM
weirdness (after the IBM long heisenbug, the Windows file delete()
silent failure, the various issues with setSOTimeout, the kaffe
anonymous class errors, etc etc). It isn't that critical, just annoying.


In other news, I finally tracked down and the last thread hangs waiting
for failure codes (with Tavin's help). This should get rid of most the
"Cache failed" entries caused by my previous workaround code. I also
found a major bug in the CircularBuffer which should have caused a lot
data corruption. Lastly I redid the queuing of requeststates yesterday,
so they are now sorted by priority - no active states are being lost on
hawk since this was implemented, which is good.

The remaining critical bugs are, as far as I know:

- A bug in the FS code that causes Cache failed on send, with the
message "IOException - bad data". These seem to be related to circular
buffers, but I'm not sure how as it goes deeper into that code then I
have mastered. I'm interested to see if anybody is seeing this where the
stacktrace doesn't include "CircularBuffer", or if it only effects
those.

- A warning that the ConnectionHandler is not properly terminated. This
should not be a big deal.

- The bandwidth throttling. I got no response to my previous message
about this, and I will simply disable it if nothing is done. 

- The good old datastore corruption.

Performance is steadily improving as we check off these issues. The node
on Hawk handled 16000 requests in one hour this afternoon, and is
averaging more than 10000 (calling the 18000 absolute limit into
question). Hit rates are still bad though - less than 1000 request an
hour lead to actual transfer of data...


-- 

Oskar Sandberg
[EMAIL PROTECTED]

_______________________________________________
devl mailing list
[EMAIL PROTECTED]
http://hawk.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to