ObjectDB's Database Doctor Incorrect Error Report

#1

Am I reading this correctly?  It seems that Doctor is telling me that one of my objects is missing.  Looking at the database with ObjectDB's Database Explorer though seems to show that the reference to the object is good and that the object does indeed exist.

 

Output from Doctor Diagnose and Doctor Repair is attached.  So are the two databases and screenshots of Explorer showing the reference to the object and the existence of the object.

text/plain iconDoctorOutput.txt (2.68KB)
Command line output when running Doctor Diagnose on "bih.obd", repair on it to new "bih-Repaired.odb", and diagnose of "bih-Repa
image/png iconExplorer1.png (53.6KB)
Shows reference to "missing object" exists.
image/png iconExplorer2.png (50.8KB)
Shows "missing object" exists.
application/vnd.oasis.opendocument.database iconbih.odb (5MB)
"Corrupt" database.
application/vnd.oasis.opendocument.database iconbih-Repaired.odb (256KB)
Repaired database.
#2

There is indeed a problem with this database file.

Have you set the database page size to 256KB? The maximum supported page size is 64KB, but unfortunately somehow this was not enforced by ObjectDB. This was fixed now so starting the next build there will be a clear limit of 64KB.

Thank you for this report. To avoid this error use page size of 64KB or smaller.

ObjectDB Support
ObjectDB - Fast Object Database for Java (JPA/JDO)
#3

Ah, OK.  I will do that.

 

I don't suppose though that ObjectDB could support the 256KB max page size?  For my use case, this would make 4 less disk accesses in the Amazon AWS EC2 provisioned IOPS environment I use.

 

If it were a simple define change and recompile in ObjectDB then my application could be 4 times faster.

 

It never hurts to ask.  =)

 

Thank you for your help, and for the feature request consideration.

#4

The 64KB limit is due to references to page entries in a page, which are currently 16 bits each. It may be changed in the future, but this will not happen soon. You may create a feature request if you are interested.

Anyway, probably you should not worry too much about the speed and I/O operations. For sure, it will not make your application 4 times slower. You may get 4 ObjectDB pages on every I/O operations, and in many cases neighbour pages are related and may become useful. Note that even with large 256KB pages you may still retrieve large pages and use only part of them. Page size of 256KB may be more efficient in this case (and therefore should be considered for future releases of ObjectDB), but the improvement is expected to be limited.

ObjectDB Support
ObjectDB - Fast Object Database for Java (JPA/JDO)
#5

Thank you for the explaination.  That makes sense.  I also recall some AWS documentation that states that the OS may combine multiple IO requests, so indeed, perhaps the 4 64KB ObjectDB IO requests might get combined at the AWS driver level into a single "across the wire" access of a 256KB IO request.  Nice!

#6

Was ObjectDB version 2.6.9_01 intended to have the enhancement of disallowing database page sizes greater than 64 KB?  (My test with that version did not show any blocking protection when again tried to use 256 KB page size.)  Perhaps the enhancement is intended for the next full release (e.g. 2.6.10).

#7

Build 2.6.9_01 limits the maximum page size to 64KB by using 64KB if a larger page size is specified. We preferred a soft fix rather than an exception in this immediate fix, and we will consider adding an exception in future versions.

ObjectDB Support
ObjectDB - Fast Object Database for Java (JPA/JDO)
#8

I ask that you do consider an exception as a future enhancement.  Without it, a user may be misled that larger page sizes are actually being used.  I would have done many test with greater than 64 KB page sizes to try to determine the optimal page size for my application.  An immediate exception would have let me know that nothing would change after 64 KB.

 

I also would not have designed the rest of my architecture around the 256 KB page size that "feed" the ObjectDB page size of presumably 256 KB.  (So I was wasting a lot of RAM and resources like caching based on 256 KB when I only needed 64 KB based size support caches, etc.)

 

Thanks for the consideration and thank you more for the current fix and explainations.  =)


Post Reply

To post a reply and/or subscribe to update notifications - please login