Hi Bill,
Some first comments:
1) Force to disk
The current implementation does not force changes to disk, i.e. you do not know
the commit decision has been written to hardware (only the OS buffer cache).
| private void writeObject(Object obj) throws IOException
| {
| baos.reset();
| ObjectOutputStream oos = new ObjectOutputStream(baos);
| oos.writeObject(obj);
| byte[] bytes = baos.toByteArray();
| os.writeInt(bytes.length);
| os.write(bytes);
| + os.getFD().sync();
| }
|
2) Why do you need a ObjectStream?
It introduces an unecessary overhead when you know the format is in String and
ints.
3) Log is open for r/w
This does not perform very well. It also introduces complications relating to
the
buffering implementation of the OS/device.
In general logs should be only open for write, giving superior performance
and also avoiding potentially nasty buffers corruptions across threads
of what you think is already synced data.
4) The RecoveryLogTerminator needs to be stored in the TransactionImpl
across prepare/commit for the external transaction commit.
5) You need to fix your "pretty print" it has done some horrible things with the
source formatting. It would also be a good idea to run "pretty print" before
making changes so we can actually see the changes on the cvs commit.
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3861469#3861469
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3861469
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
JBoss-Development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-development