On Fri, Sep 5, 2008 at 11:17 AM, Marc Palmer <
marc@...> wrote:
>
> On 5 Sep 2008, at 09:02, Graeme Rocher wrote:
>
>> I believe the issue is that we override the default constructor to
>> perform data binding. The binding errors object is bound to either the
>> current thread or the current request
>>
>> Since these errors are scoped to the request they won't be GC'ed until
>> the request completes. You could regard this as a bug. One work around
>> may be do do:
>>
>> for (int i = 0; i < 100000; i++) {
>> def t = new Thing(name: "thing_${i}")
>> t.errors = null
>> Thread.sleep(50); // to allow time to watch things in the profiler
>> }
>>
>> I'm not sure what a better solution is for now. Maybe we could use a
>> ReferenceQueue or something to check if its a candidate for GC'ing and
>> then automatically clear the errors... hmmm needs some thought
>>
>
> Can't we introduce some new notion where we can allow such GORM operations
> take effect "out of a request/thread context"?
>
> i.e:
>
> AnyDomainClass.batchOperation {
> ... do anything in here and errors will be discarded automatically etc ...
> }
>
>
Yes that is a possibility
Cheers
--
Graeme Rocher
Grails Project Lead
G2One, Inc. Chief Technology Officer
http://www.g2one.com---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email