You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nutch.apache.org by "Sebastian Nagel (JIRA)" <ji...@apache.org> on 2018/07/24 14:19:00 UTC

[jira] [Created] (NUTCH-2625) ProtocolFactory.getProtocol(url) may create multiple plugin instances

Sebastian Nagel created NUTCH-2625:
--------------------------------------

             Summary: ProtocolFactory.getProtocol(url) may create multiple plugin instances
                 Key: NUTCH-2625
                 URL: https://issues.apache.org/jira/browse/NUTCH-2625
             Project: Nutch
          Issue Type: Improvement
          Components: protocol
    Affects Versions: 1.15
            Reporter: Sebastian Nagel
             Fix For: 1.16


The method ProtocolFactory.getProtocol(URL url) may create unnecessarily multiple instances of protocol plugins given the same configuration. The following snippets from a Fetcher using 100 FetcherThreads show that the setConf(conf) method of the protocol-okhttp plugin is called 100 times (once for each thread):
{noformat}
2018-07-12 12:04:32,811 INFO [main] org.apache.nutch.fetcher.FetcherThread: FetcherThread 1 Using queue mode : byHost
... (skipped 98 repeated messages)
2018-07-12 12:04:33,136 INFO [main] org.apache.nutch.fetcher.FetcherThread: FetcherThread 1 Using queue mode : byHost

...

2018-07-12 12:04:37,493 INFO [FetcherThread] org.apache.nutch.protocol.RobotRulesParser: robots.txt whitelist not configured.
2018-07-12 12:04:37,493 INFO [FetcherThread] org.apache.nutch.protocol.okhttp.OkHttp: http.proxy.host = null
...
2018-07-12 12:04:37,494 INFO [FetcherThread] org.apache.nutch.protocol.okhttp.OkHttp: http.enable.cookie.header = false

... (skipped 98 blocks of repeated messages)

2018-07-12 12:04:39,080 INFO [FetcherThread] org.apache.nutch.protocol.RobotRulesParser: robots.txt whitelist not configured.
2018-07-12 12:04:39,080 INFO [FetcherThread] org.apache.nutch.protocol.okhttp.OkHttp: http.proxy.host = null
...
2018-07-12 12:04:39,080 INFO [FetcherThread] org.apache.nutch.protocol.okhttp.OkHttp: http.enable.cookie.header = false
{noformat}

The method ProtocolFactory.getProtocol(URL url) is synchronized, however each FetcherThread holds its own instance of the ProtocolFactory.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)