I know this has been discussed before but it looks like in IRC because I
can't find anything via Google.

I'm running into too many file descriptors (again), or rather a file
descriptor leak.

For completeness here is the whole flow:

1.) I loop a list of sites and access pre-downloaded RSS files like this:

(for S *Sites
   (let Str (in (pack *Downloads (; S id) ".xml") (till NIL T))
      (rssToPages> S Str)) )

2.) rssToPages> looks like this:

(dm rssToPages> @
   (let Str (or (next) (exclient~call (; This rssLink) "" 5))
      (for A (rss~parseFrom (pipe (prin Str)))
         (let Url
            (req!> '+Url
               'link (a; A 'htmlUrl)
               'title (a; A 'title)
               'site This
               'pubAt (dtp~utcToStamp (a; A 'pubDate)) )
            (linkUrl> '+SiteTag Url This) ) ) ) )

The exclient call will never happen in this case as we're passing in the
content in the argument.

rss~parseFrom is here:

So as can be seen there's quite a lot of matching involved (in rss) which I
remember had something to do with open file descriptors, but also pipe and
in calls.

I don't know what is going wrong here because I feel like all open
descriptors should be closed on each conclusion of the site and/or article
loop. But they just seem to be accumulating for some reason.


Reply via email to