|
|
|
[
Permlink
| « Hide
]
Robin Shen [06/Oct/10 01:08 PM]
Please send data backup of your QuickBuild instance to [robin AT pmease DOT com], as well as the build log containing the error. Please also tell which configuration is in trouble.
Please also do another test if it is convenient for you: temporarily disable the JUnit report publish step by setting the step condition to "false" to see if the file is still locked by QuickBuild.
I sent the qb2 database backup to [robin AT pmease DOT com].
I am sorry, since we are currently in release cycle, i cannot turn off junit report publishing now. Since this problem happens "sporadically", i would have to turn it of for quite a long time to be sure, it does not happen without junit report publishing. Maybe we can do this after our current release is out. In the meantime, i will watch the the build logs, if this problem happens again. We did another intense analysis session.
During this session we instrumented the quickbuild Agents with our product, dynaTrace. On one hand, we used it to generate memory dumps when this problem happens, but we also instrumented a selected set of methods within QuickbuildAgent. Our product was configured to initiate GarbageCollections before it does a memdump. The interesting part was, that after gc, there where no FileInputStream Objects left, whereas before the gc, there where around 50 (in an idle QB Agent). The analysis run afterwards showed the following: During junit report generation, DefaultGenerator.generate() is called. Further down the stack, XMLHelper.readXML() is called, which calls getEncoding(File file). getEncoding creates a FileReader (and thus a FileInputStream), which is never closed in that method. This is a resource leak. The file handles get closed only when there is a gc and the FileInputStreams get collected. The finalize() method of FileInputStream does a close(), thus the handles are freed. Will there be a backport to QB2 ?
We cannot upgrade to QB3 within the next 2 months or so. Thank you! |