[
https://issues.apache.org/jira/browse/NUTCH-738?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirby Bohling updated NUTCH-738:
--------------------------------
Attachment: NUTCH-738.patch
Alternative implementation, that uses Thread interruption as cancel semantics.
Because I'm not sure that the project properly handles interruption
everywhere, I capture the interruption request to ensure the shutdown is not
lost.
If this is not patch acceptable, I believe that the original patch needs to
make the boolean used become volatile to conform to the Java Memory Model.
The this.$0 in the SegmentUpdater, the segmentUpdater and the fact that
segmentUpdater is a GC root (all threads are GC roots), appears to confuse the
GC into not releasing this cluster of objects, thus holding this the class
loader in memory.
If segmentUpdater needs to stay final, just pass the values from FetchSegments
and make SegmentUpdater become a static class. I believe that will also
resolve the problem, but I didn't actually try it.
Using this, and the patch from NUTCH-746, and adding
"-XX:+CMSClassUnloadingEnabled" to Tomcat's 6.0.18 startup script will allow
the classes to be unloaded.
> Close SegmentUpdater when FetchedSegments is closed
> ---------------------------------------------------
>
> Key: NUTCH-738
> URL: https://issues.apache.org/jira/browse/NUTCH-738
> Project: Nutch
> Issue Type: Improvement
> Components: searcher
> Affects Versions: 1.1
> Reporter: Martina Koch
> Priority: Minor
> Attachments: FetchedSegments.patch, NUTCH-738.patch
>
>
> Currently FetchedSegments starts a SegmentUpdater, but never closes it when
> FetchedSegments is closed.
> (The problem was described in this mailing:
> http://www.mail-archive.com/[email protected]/msg13823.html)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.