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

Kristian Waagan commented on DERBY-5660:
----------------------------------------

+1 on reporting "final errors", i.e. the errors occurring during the last 
iteration.

If we assume that there won't be any such problems normally, I guess we can 
issue some ALARM statements? Failing the test/suite seems a bit strict to me, 
but that's also a possibility.
Once this has been implemented one may have to take care of existing issues in 
the tests, and potentially improve the cleaning logic in CleanDatabaseTestSetup.
                
> CleanDatabaseTestSetup should report the errors if the database object 
> dropping does not succeed. An alternative could be to drop and create a brand 
> new db if db objects from existing datbase runs into errors.
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5660
>                 URL: https://issues.apache.org/jira/browse/DERBY-5660
>             Project: Derby
>          Issue Type: Improvement
>          Components: Test
>            Reporter: Mamta A. Satoor
>
> While working on DERBY-5638, we found that CleanDatabaseTestSetup decorator 
> can run into lock time out issues while trying to drop database objects and 
> hence those objects do not get dropped. If there is a subsequent suite using 
> the same database, it will go through CleanDatabaseTestSetup's drop objects 
> sequence again, run into lock timeouts again and when it ties to next create 
> the database objects required by the next suite, it may run into Table/View 
> 'ObjectName' already exists in Schema 'SchemaName'. None of the errors 
> received during the object dropping attempts get reported and hence there is 
> no way of knowing that CleanDatabaseTestSetup had trouble cleaning up the 
> database.
> One solution as suggested by Dan Debrunner in DERBY-2220 a very long time ago 
> could be
> ****************** 
> I also think that you've found an issue in the clean database decorator and 
> as 
> such it would be good to fix it centrally there, rather than in a single 
> test. 
> for example, if the clean database decorator failed to cleanup the database, 
> it could report the failure and then blow away the database. 
> ****************** 
> Knut also suggested following in DERBY-5638.
> ****************** 
> 1) Wait for post-commit to finish after having deleted the rows. This can be 
> done by calling T_Access.waitForPostCommitToFinish() in a stored procedure 
> after deleteTable(). See ReleaseCompileLocksTest for an example. 
> 2) Use TRUNCATE TABLE instead of DELETE in the deleteTable() method. In 
> addition to being faster on large tables, it also avoids post-commit work and 
> shouldn't cause any concurrent locking to happen during tearDown(). 
> ****************** 
> Knut's suggestions above were made for the actual test and not the decorator. 
> But I think we may be able to use them in CleanDatabaseTestSetup. Will 
> require more research if CleanDatabaseTestSetup can actually implement these 
> because when the control is with CleanDatabaseTestSetup, we are no more in 
> the user transaction and hence there may be no way of waiting for post-commit 
> of that user transaction to finish.

--
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