RE: weakly referenced paged queries

From: Scott Anderson (sanderso..irvana.com)
Date: Fri Jun 20 2008 - 13:34:10 EDT

  • Next message: Øyvind Harboe: "Re: weakly referenced paged queries"

    It looks like the synchronized block is designed to prevent concurrent modification of the list. I don't believe that particular code would suffer the consequences if concurrent modification occurred, but it's generally best to synchronize list access when in doubt, since even a simple iteration can be the offender.

    -----Original Message-----
    From: oyvindharbo..mail.com [mailto:oyvindharboe@gmail.com] On Behalf Of Øyvind Harboe
    Sent: Friday, June 20, 2008 9:46 AM
    To: cayenne-use..ncubator.apache.org
    Subject: weakly referenced paged queries

    I'm toying around with weak references in paged queries.

    This turned out to be rather hairy from the point of view that
    a query is supposed to return a List and this List has
    to live up to a lot of expectations from the calling code +
    promises of the List interfaces.

    Consider two of the subList implementations in IncrementalFaultList:

    a)

        public List<E> subList(int fromIndex, int toIndex) {
            synchronized (elements) {
                resolveInterval(fromIndex, toIndex);
                return elements.subList(fromIndex, toIndex);
            }
        }

    b)

        public List<E> subList(int fromIndex, int toIndex) {
                List<E> l=new LinkedList<E>();
                for (int i=fromIndex; i<toIndex; i++)
                {
                        l.add(get(i));
                }
                return l;
        }

    1. JavaDoc states that list.subList(from, to).clear() will clear that
    range. Here b) is broken.

    2. I was greatly surprised to see synchronized() for the list returned
    from the query. Is the synchronisation for the benefit of the
    calling code or the implementation?

    Attached is the work in progress. First and foremost I'm after measuring
    the performance of such an implementation. So far it doesn't look very
    promising. It does use less memory but it is dog slow. Will tinker with it more.

    -- 
    Øyvind Harboe
    http://www.zylin.com/zy1000.html
    ARM7 ARM9 XScale Cortex
    JTAG debugger and flash programmer
    



    This archive was generated by hypermail 2.0.0 : Fri Jun 20 2008 - 13:35:08 EDT