Hi,

It's almost certain (at least for me with JBoss) the eager-release. I turned it off 
and everything i expected came back through the query.

Did get a few stack traces of the sort 
[CachedConnectionManager] Successfully closed a connection for you.  Please close them 
yourself: [EMAIL PROTECTED]

        at 
org.jboss.resource.connectionmanager.CachedConnectionManager.closeAll(CachedConnectionManager.java:376)
        at 
org.jboss.resource.connectionmanager.CachedConnectionManager.popMetaAwareObject(CachedConnectionManager.java:199)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:190)
        at 
org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:271)
etc...


I had eager-release on as thats's what it said to do in the deployment docs for JBoss 
3.0 and greater. Unfortuanately inserts don't seem to work for ODMG when setting 
eager-release to false. I get a first stack trace,

18:08:22,070 INFO  [CachedConnectionManager] Successfully closed a connection for you. 
 Please close them yourself: [EMAIL PROTECTED]
java.lang.Exception: Stack Trace
        at 
org.jboss.resource.connectionmanager.CachedConnectionManager.closeAll(CachedConnectionManager.java:376)
        at 
org.jboss.resource.connectionmanager.CachedConnectionManager.popMetaAwareObject(CachedConnectionManager.java:199)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:190)
        at 
org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:271)

followed by a few pages of 

18:08:22,070 INFO  [CachedConnectionManager] Successfully closed a connection for you. 
 Please close them yourself: [EMAIL PROTECTED]
java.lang.Exception: Stack Trace
        at 
org.jboss.resource.connectionmanager.CachedConnectionManager.closeAll(CachedConnectionManager.java:376)
        at 
org.jboss.resource.connectionmanager.CachedConnectionManager.popMetaAwareObject(CachedConnectionManager.java:199)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:190)
        at 
org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:271)
etc...

which is probably why we need eager-release for JBoss. Presumably the eager-release 
gives OJB a hint to cleanup its connections before JBoss comes to repossess them.

regards

Gary


-----Original Message-----
From: Thomas Mahler [mailto:[EMAIL PROTECTED]
Sent: 02 June 2003 17:44
To: OJB Users List
Subject: Re: Limited collection returned


So both of you use the eager-release="true" feature.
Have you tried to disable it?

Maybe Armin knows a bit more about this feature ?

cheers,
Thomas

Ken Dempster wrote:
> My setup is as follows:
> Jboss 3.2.1
> OBJ 1.0 RC3
> OJB.properties set to PersistenceBrokerImpl,
> PersistenceBrokerFactoryDefaultImpl, and ConnectionFactoryManagedImpl,
> ObjectCachePerBrokerImpl. 
> DB2 database
> Server AS400 running both Jboss and DB2
> I generate my own JdbcConnectionDescriptor with the following settings:
> JdbcConnectionDescriptor descriptor = new JdbcConnectionDescriptor();
> descriptor.setBatchMode(false);
> descriptor.setDatasourceName("java:DB2DS");
> descriptor.setDbAlias("serverName");
> descriptor.setDbms("Db2");
> descriptor.setDefaultConnection(true);
> descriptor.setEagerRelease(true);
> descriptor.setIgnoreAutoCommitExceptions(false);
> descriptor.setJcdAlias("java:DB2DS");
> descriptor.setJdbcLevel("2.0");
> descriptor.setPassWord("password");
> descriptor.setProtocol("jdbc");
> descriptor.setSubProtocol("db2");
> descriptor.setUseAutoCommit(0);
> descriptor.setUserName("user_name");
> SequenceDescriptor sequenceDescriptor = new
> SequenceDescriptor("org.apache.ojb.broker.util.sequence.SequenceManagerN
> extValImpl");
> 
> - Ken
> 
> 
> 
> 
> 
> 
> Ken Dempster
> Programmer Analyst
> Vision Solutions, Inc.
> 
> 17911 Von Karman Ave,  5th Floor
> Irvine, CA 92614
> UNITED STATES
> 
> Tel: +1 (949) 253-6500
> Fax: +1 (949) 253-6501
> Email: [EMAIL PROTECTED]
> <http://www.visionsolutions.com/>
> Disclaimer - 6/2/2003
> The contents of this e-mail (and any attachments) are confidential, may be 
> privileged, and may contain copyright material of Vision Solutions, Inc. or third 
> parties. You may only reproduce or distribute the material if you are expressly 
> authorized by Vision Solutions to do so. If you are not the intended recipient, any 
> use, disclosure or copying of this e-mail (and any attachments) is unauthorized. If 
> you have received this e-mail in error, please immediately delete it and any copies 
> of it from your system and notify us via e-mail at [EMAIL PROTECTED] 
> -----Original Message-----
> From: McCaffrey, John G. [mailto:[EMAIL PROTECTED] 
> Sent: Monday, June 02, 2003 8:02 AM
> To: 'OJB Users List'
> Subject: RE: Limited collection returned
> 
> 
> Thanks for your investigation Gary. This is exactly what I was
> suspecting (RSIterator not iterating), now I guess the thing is to
> figure out how the result set got closed. I am not sure why there seem
> to be only a few people having this problem, it seems like such basic
> functionality that there would be more of an uproar. It makes me wonder
> what the afflicted have in common, and for those people that can get a
> collection of dependent objects, how is their setup different (assuming
> that there are people that are not having this problem)
> 
> my setup
> I have the basic OJB.props settings 
> default PersistenceBrokerImpl,  PersistenceBrokerFactoryDefaultImpl,
> ConnectionManagerImpl, 
> and I am using ConnectionFactoryDBCPImpl (though I have tried the others
> and still have the problem).
> 
>  Windows 2000, db-ojb-1.0.rc3.jar, commons-dbcp.jar
> I am using WSAD (with datasource) and DB2, and I am using the PB API.
> 
> 
> ######
> Gary, Dan, Jin, Ken, etc what is your basic setup?
> 
> Is there anybody with this same setup that is able to get a collection
> of dependent objects? (help me figure out what i have that is different)
> ###### I feel like a solution is right around the corner. (and its a
> good thing, because I am supposed to go to production by the end of the
> week!)
> 
> Thanks to Gary and everyone that is looking into this.
> -john
> 
> -----Original Message-----
> From: Gary Richards [mailto:[EMAIL PROTECTED]
> Sent: Monday, June 02, 2003 9:05 AM
> To: OJB Users List
> Subject: RE: Limited collection returned
> 
> 
>  
> Hi everyone,
>  
> Thought I'd offer my current observations on this as I work with Dan and
> am running off the same codebase (JBoss 3.2.x, MySql, ODMG etc....) and
> therefore trying to crack the same problem.
>  
> I've been using the eclipse debugger to step through the action of
> invoking a query. I have spent most of the recent time observing 
> private ManageableCollection getCollectionByQuery(Class collectionClass,
> Class itemClass, Query query) of the PersistanceBrokerImpl class (line
> 1293), inparticular the actions of the while loop on line 1335 which
> reads as,
>  
>  while (((endAt == Query.NO_END_AT_INDEX) || (retrievedCount <
> numberOfObjectsToFetch)) && iter.hasNext())
>  
> I have witnessed the hasNext() call of this condition to return false
> during the second cycle of the loop, even though I now there to be 13
> rows in the database table and 13 elements behind the Iterator. I have
> determined this (for those who know eclipse) by editing the detail
> formatter of the RSIterator class to read "this.size()" which shows 13
> when I highlight it.
>  
> This leads me onto RSIterator.hasNext() (line 216) which I have moved
> onto observe as a result. 
> I noticed that on the second cycle of the iterator, the call from within
> hasNext() will issue
>  
> hasNext = m_rsAndStmt.m_rs.next(); (line 223)
>  
> This throws an expection which is caught by the same method so that
> false is returned. 
>  
> catch (Exception ex)
> {
>  hasNext = false;
> }
>  
> I have noticed that the message given by this exception ex (which is not
> logged, only gets caught) is "Operation not allowed after ResultSet
> closed". This certainly suggests that something has closed the ResultSet
> before the iterator has been fininshed with (exactly what it says in the
> message ;) ).
>  
> This almost always seems to happen after dependant objects have been
> retieved as when we set auto-retrieve = "false"  in repository_user.xml
> for the appropriate property we get all rows of the single table we
> query on but no dependant objects, however when we set auto-retrieve =
> "true"  we get only the first row of the single table and all its
> dependant objects.
>  
> Is this possibly linked to the eager-release feature which needs to be
> enabled for operation on JBoss, or a side effect of bug OJB172?
>  
> Any other thoughts?
>  
> regards
>  
> Gary
> 
> 
>       -----Original Message----- 
>       From: Dan Hanley 
>       Sent: Mon 02/06/2003 14:38 
>       To: OJB Users List 
>       Cc: 
>       Subject: RE: Limited collection returned
>       
>       
> 
>       Jin
>       Are you also running in a managed environment (e.g. jBoss)?
>       I suspect the bug you're referring to is:
>       Type :        Defect
>       Issue Id :    OJB172
>       Reported by: Rob Kischuk
>                    rkischuk - (rkischuk <at> gttx.org)
>       
>       Details:
>       
>       Platform: PC
>       Operating system: windows 2000
>       Summary: Loading composite object leads to truncated collection
>       Description: Repeated calls to retrieve a collection of objects
> that each contain another object are
>       retrieving truncated results, which are incrementally built to
> their proper length using repeated
>       requests.
>       Status: New
>       Priority: Undecided
>       Severity: Major
>       Functional area: Setup
>       
>       ... which sounds like it could be the culprit. A colleague of
> mine is trying to trace through with the eclipse debugger to see if we
> can cast any light on this.
>       
>       You are not alone, its holding a lot of people up...
>       
>       Dan
>       
>               -----Original Message-----
>               From: Jin Bal [mailto:[EMAIL PROTECTED]
>               Sent: Fri 30/05/2003 22:07
>               To: OJB Users List
>               Cc:
>               Subject: Re: Limited collection returned
>              
>              
>       
>               I'm also having this problem - thank god someone else's
> said so !  it's been
>               driving me mad ;-)
>              
>               i've been using ojb since 0.9.5 and have only noticed it
> recently. (sorry
>               can't be more precise than that)
>               here's the offending class descriptor
>              
>                   <class-descriptor
> class="com.buyacar.businessobjects.Vehicle"
>               table="vehicle">
>                  ....blah  blah properties etc
>                 <!-- IMAGES -->
>                  <collection-descriptor
>                        name="images"
>                        auto-retrieve="true"
>       
> element-class-ref="com.buyacar.businessobjects.VehicleImage">
>                        <inverse-foreignkey field-id-ref="1"/>
>                     </collection-descriptor>
>                   </class-descriptor>
>              
>                   <class-descriptor
> class="com.buyacar.businessobjects.BACVehicleDetails"
>               table="bac_details">
>              
>                            <reference-descriptor
>                                       name="vehicle"
>       
> class-ref="com.buyacar.businessobjects.Vehicle"
>                                       auto-retrieve="true">
>                               <foreignkey field-id-ref="2"/>
>                            </reference-descriptor>
>              
>                   </class-descriptor>
>              
>               whenever I load a BACVehicleDetails (and therefore a
> Vehicle)  I only ever
>               get one image in the collection.
>              
>              
>               more over I have a search engine that only returns 1
> result the first time
>               then 2 on the second submit then 3 ......etc  :-(
>              
>               heres the search engine code
>              
>                       PersistenceBroker broker = null;
>                       try {
>                           broker = getBroker();
>                           Criteria criteria = new Criteria();
>              
>                           // check if theyve specified a price bracket
>                           if(searchParams.getMaxPrice() !=null &&
>               searchParams.getMinPrice()!=null) {
>              
>       
> criteria.addBetween("price",searchParams.getMinPrice(),searchParams.getM
> axPr
>               ice());
>                           } else if(searchParams.getMaxPrice()!=null
> &&
>               searchParams.getMinPrice()==null) {
>              
>       
> criteria.addLessOrEqualThan("price",searchParams.getMaxPrice());
>                           } else if(searchParams.getMaxPrice()==null
> &&
>               searchParams.getMinPrice()!=null)  {
>              
>       
> criteria.addGreaterOrEqualThan("price",searchParams.getMinPrice());
>                           }
>              
>                           if(searchParams.getManufacturer() !=null &&
>               searchParams.getModel()==null) {
>              
>       
> criteria.addEqualTo("vehicle.model.manufacturerId",searchParams.getManuf
> actu
>               rer());
>                           }
>              
>                           if(searchParams.getModel() !=null) {
>              
>       
> criteria.addEqualTo("vehicle.modelId",searchParams.getModel());
>                           }
>                           if(searchParams.getBodyStyle() != null) {
>              
>       
> criteria.addEqualTo("vehicle.derivative.bodyStyleId",searchParams.getBod
> ySty
>               le());
>                           }
>                           if(searchParams.getFuelType() != null) {
>              
>       
> criteria.addEqualTo("vehicle.derivative.fuelId",searchParams.getFuelType
> ());
>                           }
>              
>                           if(searchParams.getOrderBy() !=null) {
>       
> criteria.addOrderByAscending(searchParams.getOrderBy());
>                           }
>              
>                           if(searchParams.getChannel()!=null &&
>               !searchParams.getChannel().equals("")) {
>       
> criteria.addEqualTo("channel",searchParams.getChannel());
>                           }
>              
>       
> criteria.addEqualTo("status",searchParams.getStatus());
>       
> criteria.addEqualTo("visibility",searchParams.getVisibility());
>       
> criteria.addGreaterOrEqualThan("displayTo",new
>               java.util.Date());
>       
> criteria.addLessOrEqualThan("displayFrom",new
> java.util.Date());
>                           Query query = new
>               QueryByCriteria(BACVehicleDetails.class,criteria,true);
>              
>                           Collection c =
> broker.getCollectionByQuery(query);
>                           logger.debug("collection size: "+c.size());
>                           Iterator results = c.iterator();
>                          ArrayList list = new ArrayList();
>              
>                           while(results.hasNext()) {
>                               // perform cast now to check that we've
> got the correct
>               object type
>                               BACVehicleDetails vDetails =
> (BACVehicleDetails)
>               results.next();
>                               list.add(vDetails);
>                           }
>                           return list;
>                       } finally {
>                           if (broker!=null) {
>                               broker.close();
>                           }
>                       }
>              
>               sorry for the long code post
>              
>              
>               it seems that when the cache is filled up it works ok
>              
>               help this is stopping me going live with the site  :-(
>              
>               BTW I did a search on the dev list and noticed a bug
> opened on the 23rd MAy
>               but i can't find it now
>              
>               cheers
>              
>              
>               Jin
>              
>               ----- Original Message -----
>               From: "McCaffrey, John G." <[EMAIL PROTECTED]>
>               To: "'OJB Users List'" <[EMAIL PROTECTED]>
>               Sent: Friday, May 30, 2003 5:52 PM
>               Subject: RE: Limited collection returned
>              
>              
>               > yes, I also noticed that, and I tried pre-fetching,
> but that didn't help
>               me
>               > either.
>               >
>               > so are you having the same problem then? You are only
> getting one row
>               back,
>               > instead of many?
>               >
>               > (my collection is filled properly with the right child
> elements, but I am
>               > not getting all of the parents that match the query,
> and the query is
>               select
>               > all parents)
>               >
>               > can you see the SQL? I couldn't get P6Spy to work, so
> I don't know what
>               the
>               > sql looks like.
>               >
>               > thanks for speaking up, I wonder if anyone else has
> had/is having this
>               > problem!
>               >
>               > -John
>               >
>               > -----Original Message-----
>               > From: Dan Hanley [mailto:[EMAIL PROTECTED]
>               > Sent: Friday, May 30, 2003 11:47 AM
>               > To: OJB Users List
>               > Subject: RE: Limited collection returned
>               >
>               >
>               > John
>               > Setting auto-retrieve = "false" works for me using
> JBoss & mySQL *except*
>               > that then I don't get any dependant ojbects loaded :-(
>               >
>               >
>               > -----Original Message-----
>               > From: McCaffrey, John G.
> [mailto:[EMAIL PROTECTED]
>               > Sent: 30 May 2003 17:45
>               > To: 'OJB Users List'
>               > Subject: RE: Limited collection returned
>               >
>               >
>               > I have been having the same problem. It seems like the
> initial query
>               > actually gets all the rows, but the RSIterator only
> gives you one at a
>               time.
>               > In my situation if I  have 4 rows that match the
> query, and I execute the
>               > query once, I only get one row, each additional time I
> execute the query I
>               > get one more row (all previous rows are also returned
> in the collection).
>               > This is only happening for a referenced collection,
> all of my other
>               queries
>               > are working fine.  I have no Idea what the deal is, I
> really hope that
>               > someone can help you.
>               >
>               > -John
>               >
>               > -----Original Message-----
>               > From: Ken Dempster
> [mailto:[EMAIL PROTECTED]
>               > Sent: Friday, May 30, 2003 11:38 AM
>               > To: [EMAIL PROTECTED]
>               > Subject: Limited collection returned
>               >
>               >
>               > Most everything works except I only get one out of the
> know four row
>               > objects from the table in my collection.  I want to
> get all the row
>               > objects in the table.  My question is why am I only
> getting only one row
>               > object?  I am not sure what I am doing something
> wrong.
>               >
>               > Here is how I have things setup.  I have set jboss 3.2
> as suggested in
>               > the deployment section of the documentation and have
> jboss configured it
>               > with data source to connect to a DB2 database.  I am
> requesting a
>               > collection from a client to a SessionBean that
> delegates to a
>               > PersistenceBroker instance.   Basicly I am using the
> code
> in
>               > PersistenceBrokerBean as a template for my EJB.  I do
> generate my own
>               > JdbcConnectionDescriptor and pass it to the
> ConnectionRepository instead
>               > of using the repository.xml to define my
> JdbcConnectionDescriptor.
>               >
>               > My query looks as follows:
>               > Query query = new QueryByCriteria(Runner.class, null);
>               >
>               > Collection list =
>               >
> getPersistenceBrokerRemote().getCollectionByQuery(query);
>               >
>               >
>               > My ClassDescriptor of the collection of objects I am
> trying to get is
>               > defined in the repository_user.xml as follows :
>               >
>               > <class-descriptor class="test.ojb.Runner"
> table="KENLIB.RUNNER">
>               >
>               > <field-descriptor name="m_id" column="ID"
> jdbc-type="INTEGER"
>               > primarykey="true" autoincrement="true"/>
>               >
>               > <field-descriptor name="m_name" column="NAME"
> jdbc-type="VARCHAR"/>
>               >
>               > <collection-descriptor name="m_times"
> element-class-ref="test.ojb.Time">
>               >
>               > <inverse-foreignkey field-ref="m_id"/>
>               >
>               > </collection-descriptor>
>               >
>               > </class-descriptor>
>               >
>               > <class-descriptor class="test.ojb.Race"
> table="KENLIB.RACE">
>               >
>               > <field-descriptor name="m_id" column="ID"
> jdbc-type="INTEGER"
>               > primarykey="true" autoincrement="true"/>
>               >
>               > <field-descriptor name="m_location" column="LOCATION"
>               > jdbc-type="VARCHAR"/>
>               >
>               > <field-descriptor name="m_date" column="DATE"
> jdbc-type="DATE"/>
>               >
>               > </class-descriptor>
>               >
>               > <class-descriptor class="test.ojb.Time"
> table="KENLIB.RACE_TIME">
>               >
>               > <field-descriptor name="m_id" column="ID"
> jdbc-type="INTEGER"
>               > primarykey="true" autoincrement="true"/>
>               >
>               > <field-descriptor name="m_runner_id"
> column="RUNNER_ID"
>               > jdbc-type="INTEGER"/>
>               >
>               > <field-descriptor name="m_race_id" column="RACE_ID"
>               > jdbc-type="INTEGER"/>
>               >
>               > <field-descriptor name="m_time" column="TIME"
> jdbc-type="VARCHAR"/>
>               >
>               > <reference-descriptor name="m_race"
> class-ref="test.ojb.Race">
>               >
>               > <foreignkey field-ref="m_race_id"/>
>               >
>               > </reference-descriptor>
>               >
>               > </class-descriptor>
>               >
>               >
>               >
>               >
>               > Ken Dempster
>               > Programmer Analyst
>               > Vision Solutions, Inc.
>               >
>               > 17911 Von Karman Ave,  5th Floor
>               > Irvine, CA 92614
>               > UNITED STATES
>               >
>               > Tel: +1 (949) 253-6500
>               > Fax: +1 (949) 253-6501
>               > Email: [EMAIL PROTECTED]
>               > <http://www.visionsolutions.com/>
>               > Disclaimer - 5/30/2003
>               > The contents of this e-mail (and any attachments) are
> confidential, may be
>               > privileged, and may contain copyright material of
> Vision Solutions, Inc.
>               or
>               > third parties. You may only reproduce or distribute
> the material if you
>               are
>               > expressly authorized by Vision Solutions to do so. If
> you are not the
>               > intended recipient, any use, disclosure or copying of
> this e-mail (and any
>               > attachments) is unauthorized. If you have received
> this e-mail in error,
>               > please immediately delete it and any copies of it from
> your system and
>               > notify us via e-mail at [EMAIL PROTECTED]
>               >
>               >
>               >
> ---------------------------------------------------------------------
>               > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
>               > For additional commands, e-mail:
> [EMAIL PROTECTED]
>               >
>               >
>               >
> ---------------------------------------------------------------------
>               > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
>               > For additional commands, e-mail:
> [EMAIL PROTECTED]
>               >
>               >
> ---------------------------------------------------------------------
>               > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
>               > For additional commands, e-mail:
> [EMAIL PROTECTED]
>               >
>               >
>              
>       
> ---------------------------------------------------------------------
>               To unsubscribe, e-mail:
> [EMAIL PROTECTED]
>               For additional commands, e-mail:
> [EMAIL PROTECTED]
>              
>              
>       
>       
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to