Friday, April 23, 2004

DM's concern about using multiple graphs was based on the concern that each graph may be using different transactions. This was not the case, so I could go ahead with the fix as described yesterday.

Unfortunately, every insertion and deletion into a model has been creating a new graph on the current with which to do it. Since graphs now need to have a JRDFFactory and JenaFactory on creation, this meant that I had to make sure each of the delete and insertion methods were aware of these new objects. Every method which is has Jena objects in its parameter list has been given a Jena and JRDF factory as well. There are still a couple of outstanding methods which are not aware of Jena objects, and so I gambled and let them use null for their factories, based on the assumption that since they are not Jena aware then code which calls these methods will not be calling any methods which depend on either of these factories. This appears to have worked.

These changes invovled quite a few dependencies, so it took some time to get it all through.

At the same time, I instituted the fixes and cleanup for the RMI objects as described yesterday. These all work fine, and hopefully they will help alleviate some of the out of memory problems experienced on the server by RT. They won't fix them all, as the errors are coming about due to unclosed file tuples, but it will certainly help. The presence of these errors seems to indicate that there are unclosed answers still in the system somewhere.

Unfortunately, some time was wasted by trying to test both fixes at the same time. I did the RMI tests in a separate directly, so I could build in a known clean environment. This let the tests be independent, but they couldn't be run at the same time, as the server for each test was going to bind to the one port. This led to some strange things failing, and I had to back out a few things before I worked out what was wrong. After running the tests one at a time everything seemed to work.

No comments: