COWDB2 release 0.1
o Bug fix: Transaction Abort is now working.
o ForkBranch is now working, which means that all utilities (except RunScript and Browse) have now been implemented and are working.
Exploring Time as a dimension in Software Applications and further developments of the AgileWiki project, salted lightly with personal notes.
o Bug fix: Transaction Abort is now working.
o Adjacent free and available blocks are now being consolidated. This solves a disk fragmentation problem and reduced the footprint on disk significantly.
o The DeleteBranch utility is now working.
o ListBranches, CreateBranch, ListOpenBranches, and CloseBranch utilities are now working.
I have just revised the home page for AgileWiki at http://agilewiki.wiki.sourceforge.net/ and very much desire any suggestions you may have. I believe that a clear and compelling value proposition is important if we are to continue to grow the development team.
Validate is now working.
For a very long time now I have not been happy with attributes. On the one hand, they have been very dumb and on the other hand they can effect major changes. In COODBMS, only the admin was allowed to set attributes arbitrarily--the mechanism in place was completely unsafe.
Taking my thinkpad in for repair. The display no longer works and, while I can work using a monitor, I'm thinking I should get it fixed.
* Unblock was not updating disk.
In COWDB2 we should be able to implement a much more scalable and fragmentation resistant memory management system.
The following utilities are now working:
I am simply delighted with the way the new object model is progressing. More powerful and flexible than anticipated. At some point I expect to make much more extensive use of element aggregates in the framework but for now I think we will make do with implementing all the transactions as elements.
In the Rolonics world view, everything has for major aspects: wholeness, partness, structure and stream. Now these are the four packages under the elements package in the COWDB2 object model. Seems fitting.
Made some good progress on the object model for COWDB2, but still there is a long way to go.
It is the beginning of monsoon season here. We get rains in the afternoon and evening. And like every year in Raipur, the rains bring frequent and repeated power outages. Fortunately this condition doesn't last for too long. After a while the electric company gets things under control again and power becomes stable. Indeed, one of the advantages of living in Raipur is that the state capital has a surplus of electricity. It's only a temporary distribution problem.
I count COODBMS as an overall success. It includes a significant number of AgileWiki3's capabilities, despite having a very different implementation. It is significantly more robust than AgileWiki3 and solved the problem of having an ever growing footprint on disk--AgileWiki3 had no equivalent to COODBMS's PurgeHistory. Still it is a partial implementation of AgileWiki3 and there is much to be done if we were to continue this implementation.
There are no known bugs as of this release, which includes fixes for caching problems, memory leaks and navigation of past time. Multi-threaded stress testing has also been completed successfully.
Dirty cache issues and memory leaks have now been addressed. There are no known bugs.
After that last run, I ran purge history. Here's the result:
I increased the dirty cache size from 750 to 4096 and the memory leaks vanished. I'll note that the new algo for managing the dirty cache does require a larger cache size.
The bug in dirty cache is fixed. I set the max entries down to 64 to add further stress on the system and the scripts ran longer but still I am getting a memory leak.
COODBMS runs consistently until it is about 3 Mb in size. Then the caching problem nails it every time. But that was long enough a run time to complete some nice multi-threading stress tests, which it passed with flying colors.
o Bug found/fixed: validate throwing spurious dup allocation exceptions.
o Database validation is greatly enhanced.
With release 0.18.9, the only significant known error remaining is a memory leak. The work done these last two days was not easy, but putting an end to those pending errors was a great step forward.
o Reworked how freed blocks are processed--the code was not working when there were multiple branches/snapshots. This fixes all known pending errors.
I've been chasing my tail all day trying to track down pending and dup allocation errors. I did narrow it down to a chained fork issue. Then after a few more turns I finally realized the flaw in the logic.
Back from a trip to Delhi, and a bit tired. I did manage to read a book on Delhi and I like the language, especially blocks. I am thinking that display logic can be written in Ruby (or Python), stored in DSecs in the database and accessed as needed. This will keep the front end thin and application independent.