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
