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

Knut Anders Hatlen updated DERBY-5406:
--------------------------------------

    Attachment: d5406-4a-retry-on-conglomerate-error.diff

I experimented with always retrying the compilation if it failed with 
conglomerate does not exist, see the attached patch 
d5406-4a-retry-on-conglomerate-error.diff. That patch also backs out the 
changes in the 2a patch, since the case addressed by that fix will also be 
covered by the broader fix in the 4a patch.

I ran four parallel processes of the D4275 repro for almost two hours, two of 
the processes with the fix and two without the fix. The processes that had the 
fix only had one occurrence of DERBY-5358, and no other errors. The processes 
that ran without the fix, had about 30 errors.

So this fix appears to take care of the remaining issues, at least those I'm 
able to reproduce. It is however just a workaround for a more fundamental 
problem with how we track dependencies between statements and conglomerates. I 
would have felt more comfortable if we found a way to fix the underlying issue 
that makes invalidation requests vanish. I'll do a little more digging before I 
give up...

All regression tests ran cleanly with the 4a patch, except one intermittent 
failure (DERBY-5498) that didn't show up when rerunning the tests.
                
> Intermittent failures in CompressTableTest and TruncateTableTest
> ----------------------------------------------------------------
>
>                 Key: DERBY-5406
>                 URL: https://issues.apache.org/jira/browse/DERBY-5406
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.8.2.2, 10.9.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: CompressAndPrepare.java, 
> d5406-1a-detect-invalidation-during-compilation.diff, d5406-1b.diff, 
> d5406-2a-invalidate-self.diff, d5406-3a.diff, d5406-4a-push-retry-logic.diff, 
> d5406-4a-retry-on-conglomerate-error.diff
>
>
> The test cases CompressTableTest.testConcurrentInvalidation() and 
> TruncateTableTest.testConcurrentInvalidation() fail intermittently with 
> errors such as:
> ERROR XSAI2: The conglomerate (2,720) requested does not exist.
> The problem has been analyzed in the comments on DERBY-4275, and a patch 
> attached to that issue (invalidation-during-compilation.diff) fixes the 
> underlying race condition. However, that patch only works correctly together 
> with the fix for DERBY-5161, which was backed out because it caused the 
> regression DERBY-5280.
> We will therefore need to find a way to fix DERBY-5161 without reintroducing 
> DERBY-5280 in order to resolve this issue.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to