db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-2949) AssertionFailedError in testStalePlansOnLargeTable
Date Tue, 07 Dec 2010 13:44:09 GMT

    [ https://issues.apache.org/jira/browse/DERBY-2949?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12968733#action_12968733
] 

Knut Anders Hatlen commented on DERBY-2949:
-------------------------------------------

It also looks like it will be more reliable to invoke a checkpoint explicitly. Even if we
make the flusher table bigger or the page cache smaller, filling up the page cache with the
flusher table does not mean every dirty page will be written to disk immediately. The page
cache will just schedule work with the background worker thread, so we'd have to wait for
some time in order to be sure that the row counts have actually been updated. SYSCS_CHECKPOINT_DATABASE,
on the other hand, won't return until the dirty pages have been written to disk.

If I only change flushRowCount() to call SYSCS_CHECKPOINT_DATABASE(), testStalePlansOnLargeTable()
starts failing consistently. The problem appears to be that the row count change is not significant
enough to trigger a recompile at a time where the test expects the plan to change. A significant
change is 10% when the table has more than 400 rows (see BaseActivation.informOfRowCount()).
The actual change in the row count at that point was less than 1%, but it used to work before
because the initial row count estimate was inaccurate and the change therefore appeared to
be larger. I think the solution is to add more rows to the table to make sure the row count
changes sufficiently to always trigger a recompile.

> AssertionFailedError in testStalePlansOnLargeTable
> --------------------------------------------------
>
>                 Key: DERBY-2949
>                 URL: https://issues.apache.org/jira/browse/DERBY-2949
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.3.1.4
>         Environment: Microsoft© Windows VistaT Ultimate - 6.0.6000 N/A Build 6000
> WindowsNT 0 6
> 2 X [Sun Fire X4100 Server x64 Family 15 Model 37 Stepping 1 AuthenticAMD]: ~2592 MHz,
 cache. 3ÿ967 Total Memory.
> JVM: Sun Microsystems Inc. 1.5.0_07-b03 
>            Reporter: Henri van de Scheur
>            Assignee: Knut Anders Hatlen
>            Priority: Minor
>         Attachments: expected-plan.txt, plan.txt
>
>
> testStalePlansOnLargeTable(org.apache.derbyTesting.functionTests.tests.lang.StalePlansTest)junit.framework.AssertionFailedError
> 	at org.apache.derbyTesting.functionTests.tests.lang.StalePlansTest.testStalePlansOnLargeTable(StalePlansTest.java:264)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:88)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> 	at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> 	at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)

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


Mime
View raw message