Issue Details (XML | Word | Printable)

Key: DERBY-271
Type: Sub-task Sub-task
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Jeff Levitt
Reporter: Sunitha Kambhampati
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Derby
DERBY-218

Document the new property derby.system.durability=test

Created: 12/May/05 04:02 AM   Updated: 19/May/05 03:07 AM
Return to search
Component/s: Documentation
Affects Version/s: 10.1.1.0
Fix Version/s: 10.1.1.0

Time Tracking:
Not Specified

File Attachments:
  Size
Zip Archive Licensed for inclusion in ASF works derby271modifiedfinal.zip 2005-05-18 09:09 AM Jeff Levitt 7 kB

Resolution Date: 19/May/05 03:07 AM


 Description  « Hide
Need to document the new property - derby.system.durability
This should probably go along with other properties in Tuning guide.

--------------------------------------------------
derby.system.durability

Currently the only valid supported case insensitive value is 'test'
If this property is set to any other value other than 'test', this
property setting is ignored

In the future, this property can be used to set different modes of durability
- for example a form of relaxed durability where database can recover to a
consistent state, or to enable some kind of in-memory mode.

When set to 'test', the store system will not force sync calls in the
following cases
- for the log file at each commit
- for the log file before data page is forced to disk
- for page allocation when file is grown
- for data writes during checkpoint

That means
- a commit no longer guarantees that the transaction's modification
will survive a system crash or JVM termination
- the database may not recover successfully upon restart
- a near full disk at runtime may cause unexpected errors
- database can be in an inconsistent state

This setting is provided for performance reasons and should ideally
only be used when the system can withstand the above consequences.

One sample use would be to use this mode (derby.system.durability=test)
when using Derby as a test database, where high performance is required
and the data is not very important.

If database is booted with derby.system.durability=test, the following warning message is logged in derby.log

WARNING: The database is booted with derby.system.durability=test. In this mode, it is possible that database may not be able to recover, committed transactions may be lost, database may be in an inconsistent state. Please use this mode only when these consequences are acceptable

and a similar message will appear in derby.log if the database was booted with derby.system.durability=test at any time previously.

It is important to realize that once the database is booted with derby.system.durability=test, there are no guarantees on if the database is consistent or not.

-------------------

Valid supported values are test

Example
derby.system.durability=test
One can set this as a command line option to the JVM when starting the
application or in the derby.properties file. It is a system level
property.

This property is static; if you change it while Derby is running,
the change does not take effect until you reboot.


 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Jeff Levitt added a comment - 12/May/05 05:30 AM
Sorry, I closed the wrong issue!

Jeff Levitt added a comment - 14/May/05 05:21 AM
This patch creates a new file, rtunproperdurability.dita, for the Tuning Guide. It places this new file, which is titled "derby.system.durability", right before the "derby.system.home" property, so that it appears in alphabetical order in the Properties section of the Tuning Guide. I have included the HTML output of this new page for review in the zip file with the patch.

This patch should only be committed when the parent task for adding this functionality has been committed.

Jeff Levitt added a comment - 14/May/05 05:50 AM
Decided to add another change, this time to the main Properties overview page (ctunproper22250.dita) to add this property to the table on that page. I have deleted the old patch zip from this JIRA entry and added the new one, along with the HTML output for review.

Jeff Levitt added a comment - 17/May/05 02:07 AM
Could someone possibly review this so we can commit if all is OK? Thanks!

Sunitha Kambhampati added a comment - 17/May/05 09:05 AM
Thanks Jeff for quickly generating the doc.
Here are some of my comments. Thanks.
------------------------

This is a property that can take values other than test, but currently we only support 'test' but in future will be used for other durability modes.
Therefore I dont think we should say ' This property can be used under testing purposes to improve performance' but maybe instead to say something similar to

This property can be used to change the default durability of derby to improve performance at the expense of consistency and durability of the database.
Currently the only valid supported case insensitive value is 'test'. If this property is set to any other value other than 'test', this property setting is ignored
In the future, this property can be used to set different modes of durability - for example a form of relaxed durability where database can recover to a
consistent state, or to enable some kind of in-memory mode.

1) I think we need to specify that the supported value is test , maybe after 'Default' section .
Supported values are 'test'

2) This line needs to change 'Consequently, this property should only be set when using Derby as a test database, where high performance is required and the data is not very important.'
Since users can use it for whatever they want as long as they can withstand the consequences of using derby.system.durability=test. So how about we change this to say a sample usage would be to enable this property when using Derby as a test database where consistency or recoverability is not an issue. It could probably go along in the example section.

Jeff Levitt added a comment - 18/May/05 05:25 AM
The attached zip contains your changes plus output for review. I stayed away from mentioning anything that had to do with the future. For example, I didn't mention that we "currently" support only 'test', I instead just said that we only support 'test.' When we add support for any other values, then we'll just modify the docs to include it. The idea is to avoid making promises to users that we may not be able to keep, because adding support for more values might get pushed to a later time, no one may have the resources to change the code, etc. So I tried to avoid saying anything about the future, or anything but what the code currently does.

Sunitha Kambhampati added a comment - 18/May/05 08:27 AM
All looks good. just a minor comment. how about saying I/O synchronization calls instead of just synchronization calls in the first para.

Thanks again for getting it out so quickly.


Jeff Levitt added a comment - 18/May/05 09:09 AM
Here's an updated patch...can you review it again and comment that it looks good and can be committed if that's the case? Thanks!

Sunitha Kambhampati added a comment - 18/May/05 09:43 AM
It looks good to me now.

Jean T. Anderson added a comment - 19/May/05 03:07 AM
Committed, revision 170786, patch in derby271modifiedfinal.zip that adds documentation for the new derby.system.durability property to the Tuning Guide.