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]

Reply via email to