You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2010/05/31 13:40:53 UTC

[jira] Closed: (DERBY-4678) Avoid code duplication in GenericConglomerateController.fetch()

     [ https://issues.apache.org/jira/browse/DERBY-4678?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Knut Anders Hatlen closed DERBY-4678.
-------------------------------------

    Issue & fix info:   (was: [Patch Available])
          Resolution: Won't Fix

I changed the test to use a table with 1 million rows, and increased the size of the page cache so that it could hold the entire table + index and reran the test. I also increased the time each test ran from 20s+40s to 40s+60s (that is, 40s warmup, 60s data collection). With 250 runs with each jar, I now see that the patched version gives 0.8% lower throughput on average than trunk. I also added a variant where the calls to fetch/3 in IndexToBaseRowResultSet are replaced with calls to fetch/4, and a 0.8% decrease was observed there as well.

Since these results show the averages of a fairly high number of runs, and they are also consistent with some shorter test (20s+40s, 100 runs per jar) that I ran before this last experiment, I think there's a high probability that the decrease we see is real, and not just random variation. Having an extra method won't cause any big problems for DERBY-4676, so I guess it's not worthwhile to make this change. I'm therefore closing the issue as Won't Fix.

(I see I didn't mention this in my previous comment, so, for the record, all the tests were performed on a dual-cpu AMD Opteron running OpenSolaris 2009.06 and Sun's Java SE 6u20.)

> Avoid code duplication in GenericConglomerateController.fetch()
> ---------------------------------------------------------------
>
>                 Key: DERBY-4678
>                 URL: https://issues.apache.org/jira/browse/DERBY-4678
>             Project: Derby
>          Issue Type: Improvement
>          Components: Store
>    Affects Versions: 10.7.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>            Priority: Minor
>         Attachments: derby-4678-1a.diff, fetch.diff, FetchTest.java
>
>
> GenericConglomerateController has two methods named fetch(). One of these methods has a parameter called waitForLock, whereas the other one doesn't have such a parameter. When I diffed the two methods, the only difference I found, apart from a couple of whitespace diffs, was that the method with the waitForLock parameter called lockPosititionForRead/lockPositionForWrite using the parameter value, and the other method called them with a hard-coded value of true.
> To avoid duplication of code, fetch(RowLocation,DataValueDescriptor[],FormatableBitSet) should forward calls to fetch(RowLocation,DataValueDescriptor[],FormatableBitSet,boolean).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.