references to a forced-refresh class can cause operations on a closed ResultSet
-------------------------------------------------------------------------------
Key: OJB-49
URL: http://issues.apache.org/jira/browse/OJB-49
Project: OJB
Type: Bug
Components: PB-API
Versions: 1.0.3
Environment: Oracle 10.1.0.3 on Linux
Reporter: Lucas Bergman
When I do a getCollectionByQuery(...) on a class whose returned records
reference one or more classes that have refresh="true" set in the repository
configuration, the ResultSet is closed without the RsIterator knowing about it.
The code path by which the ResultSet is closed is the following:
StatementManager.closeResources(Statement, ResultSet) line: 88
JdbcAccessImpl.materializeObject(ClassDescriptor, Identity) line: 618
PersistenceBrokerImpl.getDBObject(Identity) line: 1394
PersistenceBrokerImpl.refreshInstance(Object, Identity,
ClassDescriptor) line: 1572
PersistenceBrokerImpl.doGetObjectByIdentity(Identity) line: 1545
QueryReferenceBroker.retrieveReference(Object, ClassDescriptor,
ObjectReferenceDescriptor, boolean) line: 382
QueryReferenceBroker.retrieveReferences(Object, ClassDescriptor,
boolean) line: 447
RsIterator.getObjectFromResultSet() line: 480
RsIterator.next() line: 275
ReferencePrefetcher(BasePrefetcher).prefetchRelationship(Collection)
line: 107
QueryReferenceBroker.performRetrievalTasks() line: 347
QueryReferenceBroker.getCollectionByQuery(Class, Class, Query) line: 169
QueryReferenceBroker.getCollectionByQuery(Class, Query, boolean) line:
251
QueryReferenceBroker.getCollectionByQuery(Query, boolean) line: 271
PersistenceBrokerImpl.getCollectionByQuery(Query) line: 1367
PoolablePersistenceBroker(DelegatingPersistenceBroker).getCollectionByQuery(Query)
line: 338
PersistenceBrokerHandle(DelegatingPersistenceBroker).getCollectionByQuery(Query)
line: 338
Then, on the next call to RsIterator.hasNext(), there will be a fatal (at least
with Oracle) error when next() is called on a closed ResultSet.
I don't have a proper test case right now; this showed up in an application at
my work when we upgraded OJB from 1.0rc6 to 1.0.3. I wanted to file this bug
to get it on the record; hopefully there's enough information for someone who
understands the code paths involved to have some idea of what's going on. I'm
fairly certain I can come up with a proper test case if pressed.
Workaround: Don't set refresh="true" on any classes in your repository
configuration.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]