Objectivity Release Notes for JAV Version 6.0 SUPPORTED CONFIGURATIONS OS Vendor Hardware Operating System Java Vendor J2SDK Release --------- --------------- ---------------- ----------- ----------- Compaq Alpha Tru64 UNIX 4.0D Compaq 1.2.2-7 HP HP9000s700/800 HP-UX 11.x HP TBD IBM RS/6000 TBD IBM TBD Microsoft Intelx86 Windows NT 4.0 Javasoft 1.3 Windows 2000 Windows 98 Redhat Intelx86 Linux 6.1 Javasoft 1.3 SGI Iris/Indigo IRIX 6.5 SGI TBD Sun SPARCStation Solaris 2.6 Sun 1.3 Sun SPARCStation Solaris 2.7 Sun 1.3 1. OFJ requirements for native stack size may be higher than the default allocated by the JVM. For non-multithreaded programs, specify a minimum of 1 Meg by using the -Xss flag to the JVM. For multi-threaded programs, you may need to increase this. 2. OFJ memory requirements exceed memory requiements on other platforms because of DEC/ALPHAOSF1's 64-bit architecture. Applications that have large memory requirements will encounter java.lang.OutOfMemory errors with more frequently. Running the JVM with the -Xms and/or the -Xmx may help in these cases. ************************** NEW AND CHANGED FEATURES ************************** Please refer to Objectivity Release Notes PDF file for the new and changed features. **************** FIXED PROBLEMS **************** (11534) Create index fails if 300 or more objects added to db in a session Symptom Create index fails if 300 or more objects added to db in a session. The application throws the following RunTimeException in session.commit(): COM.objy.db.ObjyRuntimeException: ociGetVArraySize(): Index Manager: Internal Error: Error in deleting entry from User Btree page (5) ... JNI panic: native code used a wrong method ID to invoke a Java method (11817) ooDBObj_connectionIDForContainer() cannot distinguish between container not existent or not accessible Symptom When OFJ tries to determine if a container exists by seeking an OID from the kernel, the kernel tries to get a lock on the container before returning the OID. If there is already a lock on the container, the kernel will not return the OID, and OFJ will interpret that to mean that the container does not exist. (11836) Error message clarification - if object has reference to locked object, fetch() throws FetchFailedException with msg: "objref ..... not found" Symptom Complete message is: "objref member : with oid: not found" Change message to "objref member : with oid: not found or accessible" or something to that effect. (15349) deleting an object with an association throws an exception on commit Symptom An error is thrown when a Java application attempts to write an object that is unaware has been previously deleted. (15365) ooTreeMap.put doesn't work when ooTreeMap uses default comparator Symptom ooTreeMap.put doesn't work when ooTreeMap uses default comparator java.lang.UnsatisfiedLinkError: jooTreeMap_put (15468) graceful exit for: database access during deactivate method causes JVM crash Symptom Database accesses which should require an in-progress transaction were being allowed during a deactivate event. (15471) OFJ objectFrom() enhancement to allow update mode. See Objectivity for Java Release 6.0 Programmer's Reference for new method details. Note: please see also (15355) Adding object references to an ooTreeList can cause application crash, in CPP_GENERIC_fixedBugs. ********************** DOCUMENTATION ERRATA ********************** CHANGES TO INSTALLATION OF OBJECTIVITY FOR JAVA ----------------------------------------------- Installation and Platform Notes for Windows and Installation and Platform Notes for Unix have been reprinted for Release 6.0. CHANGES TO OBJECTIVITY FOR JAVA GUIDE AND REFERENCE --------------------------------------------------- The Objectivity for Java guide and reference are both available online in HTML format, and can be viewed through an HTML browser. On Windows, start browsing from: installDir\doc\java\index.html On UNIX, start browsing from: installDir/arch/doc/java/index.html The Objectivity for Java guide is also provided online in Portable Document Format (PDF), which you can view using the freely available Acrobat Reader software from Adobe Systems, Inc. You can obtain Acrobat Reader for your platform from Adobe's online services. Use your World Wide Web browser to access the web site www.adobe.com. On Windows, the online book is located in: installDir\doc\javaGuide.pdf On UNIX, the online book is located in: installDir/arch/doc/javaGuide.pdf A more recently updated PDF version of this book may be available on Objectivity's InfoCenter. Use your World Wide Web browser to access the web site http://info.objy.com ************************************************************** *************** OPEN PROBLEMS *************** (11338) newly created ooMap will lose initial values if transaction is aborted Symptom If you create an ooMap, setting initial values for binCount, maxAverageDensity, and/or growthFactor, then make the ooMap persistent, then abort the transaction, those initial setting will be lost, and will revert to the default settings. (11355) DB lookup returns "could not get DB" errors during concurrent db access Symptom Several reader threads that each open the same DB can get "could not get DB" errors during concurrent db access. (11441) TransactionNotInProgressException thrown incorrectly during db.contains() on non-existent DB Symptom When an application deletes a DB, there is a window of time between the delete() and when the transaction is committed. If another thread attempts to access the DB within this timeframe, Java will incorrectly throw: "COM.objy.db.TransactionNotInProgressException: ooHandle(ooDBObj):: contains(): Object Manager was unable to open the system name space" (11476) fetching many objects with (very) large strings may cause JNI panic Symptom Related to 11455: Many objects fetched from database may cause JNI panic. (11504) moving an object that is in an index does not properly update the index Symptom The index will not get updated correctly and can have various problems when the index is later maintained or used during a scan. (11517) In fresh fd, creating 2 indices in a session might cause schema container lock conflict Symptom Creating 2 indices in a session might cause schema container lock conflict (11527) Deleting "ooDBKeyDescs" or "ooFDKeyDescs" container causes ClassCastException: COM.objy.pm.ooKeyDesc Symptom If you attempt to delete the Index containers "ooDBKeyDescs" or "ooFDKeyDescs", a ClassCastException results when the container delete tries to deaden the containers objects, which is an pm.ooKeyDesc, not ooObjPersistor. The call to ooObjPersistor.nullRelationships() tries to do a provide target() which causes the ClassCastException. (11584) read lock on get container Symptom When a container is retrieved by name lookup or from an iterator it is read-locked. The container should be unlocked. (11695) index creation in C++ glue layer has memory leaks for ooKeyDesc and ooKeyField creation Symptom We do news that go on the heap and we never free them. We can just as easily put the key desc and field(s) on the stack and have them get cleared up. (11786) Several problems exist with the SGI Java installation samples Symptom SGI Java installation samples generate multiple errors when executed. (11791) Request for Java support of mapping * _uint Symptom We have a persistent C++ class that contains as a data member a pointer (don't ask me why ... I didn't define the class!), which we are attempting to match in Java. An ooshow of the federation shows protected * _unit and we have tried, in Java, defining it as int and as long (we don't actually want to reference it, fortunately), but we get a runtime exception: class : Reconstructor pos: 1 name: _unit Member type does not match How can we kludge the Java class so that it's happy with this member? (11963) lookupObjName() throws ObjyRuntimeException (rather than LockNotGrantedException) if scoping object is write locked. Symptom ookupObjName() throws ObjyRuntimeException if scoping object is locked for write. The kernel returns an empty string and does not detect that the scoping object is write locked. For consistent behavior, LockNotGrantedException should be thrown. (12223) Elements in iterator returned from contains() sometimes causes JavaClassNotFoundException Symptom If you get an iterator from ooContObj.contains() and then access each element in the iterator, you can get JavaClassNotFoundException for system classes. (12224) fetch() errors of objects with an array member in a multi-threaded program can cause Exception or possible crash Symptom If you have a multi-threaded program that fetches alot of objects of a class that has a member AND you have fetch errors, this program could throw unexpected exceptions or crash. (12310) index not updated when subclasses added to schema after index created Symptom If you create an index on a class in a transaction, add a few instances of the class to the indexed scope within another transaction, then submit a subclass of the indexed class to the schema manager in another transaction and create an object of that class in the indexed scope, the newly created sub class object is not added to the index. However the other instances of the non-subclassed objects appear in the index as they should be. (12312) predicate scan and schema modification in same transaction fails Symptom When you perform a predicate scan, and subsequently attempt to modify the schema in the same transaction, you will get a lock conflict (the predicate scan reads the schema and the lock is not released until the end of the transaction). (15348) database access during deactivate method causes JVM crash Symptom observed effect: If you make a database access in the deactivate method the JVM crashes. desired effect:: If you make a database access in the deactivate method you should get a TransactionNotInProgressException. (15460) java usability of transient instances of persistent capable objects Symptom Currently when you create an instance in Java, it is transient until made persistent. If you use the object before it is made persistent, all is well UNLESS you are using relationships. If you try to use a relationship on a transient persistent-capable object, a null pointer exception is thrown. Adding it to a relationship of an already persistent object works, but that is not good enough. (15471) OFJ objectFrom() enhancement to allow update mode Symptom I would like to request the following feature: We make extensive use of ooFDObj.objectFrom(String) ooFDObj.objectFrom(ooId) Using these methods will cause a read lock to be applied to the object indicated by the string or ooid. It would be very useful to extend the API to include ooFDObj.objectFrom(String, int) ooFDObj.objectFrom(ooId, int)