intersystems / TestCoverage

Test Coverage Tool
MIT License
9 stars 8 forks source link

Unable to acquire lock for DELETE of table 'TestCoverage_Data.CodeUnitMap #15

Closed mdavidovichHst closed 2 years ago

mdavidovichHst commented 2 years ago

When running tool from Jenkins, got the following error:

ERROR #5540: SQLCODE: -110 Message: Unable to acquire lock for DELETE of table 'TestCoverage_Data.CodeUnitMap' on row with RowID = '4e7xumcIrVxRuZuRfo3jEuMFJY4=\|\|5\|\|MrfPEUkHOfQ\|2732473838\|\|13'

IRIS for Windows (x86-64) 2020.1.1 (Build 408U) Sun Mar 21 2021 22:04:09 EDT

isc-tleavitt commented 2 years ago

@mdavidovichHst in a CI setting it might be helpful to run prior to any unit tests: do ##class(TestCoverage.Utils).Clear()

This just makes sure you're starting out with a clean slate each time, and that you don't end up taking up tons of space with code snapshots and coverage data. (It might also help with errors like this.)

Not a solution, just something we do that you might find helpful as well.

If you can reproduce the issue at will, setting: set ^oddENV("callererrorinfo")=2 then providing the stack trace from the %Status, would be helpful.

mdavidovichHst commented 2 years ago

@isc-tleavitt Thanks, Tim. Will add the Clear() method in a moment but trying to reproduce first with the instructions you mention. I'm not sure I'm getting you what you're asking for:

NAMESPACE>s status=##class(TestCoverage.Manager).RunTest(,"/nodelete",.param)

Tracking code coverage on resources listed in C:\InterSystems\unitTests\coverage.list                                                                           Taking snapshot of code and CLS/MAC/INT mappings: 11.169889 seconds
  TestCoverage.Manager:OnBeforeAllTests begins ...
LogStateStatus:0:TestCoverage.Manager:OnBeforeAllTests:ERROR #5540: SQLCODE: -110 Message: Unable to acquire lock for DELETE of table 'TestCoverage_Data.CodeUnitMap' on row with RowID = 'oIjFlOdhMe+qCPnAoiE9JZyTnZk=||1005||NqKX+JpzluI|1466220739||1025'  <<==== **FAILED**                                                 TestCoverage.Manager:OnBeforeAllTests:::
  TestCoverage.Manager:OnBeforeAllTests failed
Mapping to class/routine coverage: .000207 seconds
Aggregating coverage data: .000066 seconds
No code coverage found (!)

Use the following URL to view the result:
http://localhost:52773/csp/sys/%25UnitTest.Portal.Indices.cls?Index=305&$NAMESPACE=NAMESPACE                                                                     Use the following URL to view test coverage data:
http://localhost:52773/csp/app/TestCoverage.UI.AggregateResultViewer.cls?Index=23                                                                           Some tests FAILED in suites:
  TestCoverage.Manager:OnBeforeAllTests
NAMESPACE>
mdavidovichHst commented 2 years ago

Running the Clear() method worked. Thank you!

I can leave the issue open @isc-tleavitt if you want to dig more on the root cause, but we can close if this is good enough.