ouch! geez, thats a bit worrying... any chance we could introduce a
reference there? or make the class not static? makes it hard to put a
framework on top...
cheesr
dim
On Wed, 26 Sep 2001, Tim Fox wrote:
> I'd thought I'd share a very nasty problem that occurs when OQLQuery and
> QueryResults is used in a certain way - this has just cost me a fair amount
> of time - and the correct usage (IMHO) is not clear from the documentation.
>
> I have a method that returns a QueryResults instance (this is all fictitious
> code, simplified to demonstrate the problem)
>
> public QueryResults getResults()
> {
> OQLQuery query = _db.getOQLQuery("select .....");
> return query.execute();
> }
>
> and a method that uses the above method:
>
> public void foo()
> {
> QueryResults results = getResults();
>
> //Iterate thru
> while (results.hasMore())
> {
> Widget w = (Widget)results.next();
> }
> }
>
> The problem with this code is that after the call to getResults(), the
> OQLQuery instance goes out of scope - hence it is marked for garbage
> collection.
>
> Unfortunately the finalize() method of the OQLQuery class, closes its
> associated resultset (!)
>
> This means that if the OQLQuery instance is garbage collected before you've
> finished iterating through the resultset, then suddenly in the middle of an
> iteration, your code crashes with a mysterious null-pointer exception
> (intermittently and in different places).
>
> Moral of the story - always keep the OQLQuery and its resultset in the same
> scope.
>
> Moreover, always call close() explicitly on the resultset/query and don't
> rely on garbage collection to close it. Putting code in finalizers is (IMHO)
> rarely justified, and cause all sorts of weird bugs/deadlock etc.
>
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
>
>
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev