[
https://issues.apache.org/jira/browse/NUTCH-2936?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17476615#comment-17476615
]
Sebastian Nagel commented on NUTCH-2936:
----------------------------------------
Using protocol-okhttp causes parsechecker to raise the following error (also
related to java.security):
{noformat}
$> bin/nutch parsechecker -Dplugin.includes='protocol-okhttp|parse-tika'
https://example.com/
...
2022-01-15 15:18:06,016 WARN o.a.n.p.PluginRepository [main] Could not find
org.apache.nutch.protocol.okhttp.OkHttp
java.lang.NullPointerException: Parameter specified as non-null is null: method
okhttp3.OkHttpClient$Builder.sslSocketFactory, parameter sslSocketFactory
at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.kt) ~[?:?]
at org.apache.nutch.protocol.okhttp.OkHttp.setConf(OkHttp.java:129)
~[?:?]
at
org.apache.nutch.plugin.Extension.getExtensionInstance(Extension.java:175)
~[apache-nutch-1.19-SNAPSHOT.jar:?]
at
org.apache.nutch.plugin.PluginRepository.createURLStreamHandler(PluginRepository.java:597)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at
org.apache.nutch.plugin.URLStreamHandlerFactory.createURLStreamHandler(URLStreamHandlerFactory.java:95)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at java.net.URL.getURLStreamHandler(URL.java:1432) [?:?]
at java.net.URL.<init>(URL.java:651) [?:?]
at java.net.URL.<init>(URL.java:541) [?:?]
at java.net.URL.<init>(URL.java:488) [?:?]
at javax.crypto.JceSecurity.<clinit>(JceSecurity.java:239) [?:?]
at javax.crypto.Cipher.getInstance(Cipher.java:540) [?:?]
at sun.security.ssl.JsseJce.getCipher(JsseJce.java:190) [?:?]
at
sun.security.ssl.SSLCipher.isTransformationAvailable(SSLCipher.java:509) [?:?]
at sun.security.ssl.SSLCipher.<init>(SSLCipher.java:498) [?:?]
at sun.security.ssl.SSLCipher.<clinit>(SSLCipher.java:81) [?:?]
at sun.security.ssl.CipherSuite.<clinit>(CipherSuite.java:69) [?:?]
at
sun.security.ssl.SSLContextImpl.getApplicableSupportedCipherSuites(SSLContextImpl.java:348)
[?:?]
at
sun.security.ssl.SSLContextImpl$AbstractTLSContext.<clinit>(SSLContextImpl.java:580)
[?:?]
at java.lang.Class.forName0(Native Method) ~[?:?]
at java.lang.Class.forName(Class.java:315) [?:?]
at java.security.Provider$Service.getImplClass(Provider.java:1918) [?:?]
at java.security.Provider$Service.newInstance(Provider.java:1894) [?:?]
at sun.security.jca.GetInstance.getInstance(GetInstance.java:236) [?:?]
at sun.security.jca.GetInstance.getInstance(GetInstance.java:164) [?:?]
at javax.net.ssl.SSLContext.getInstance(SSLContext.java:168) [?:?]
at org.apache.nutch.protocol.okhttp.OkHttp.<clinit>(OkHttp.java:94)
[protocol-okhttp.jar:?]
at
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
~[?:?]
at
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[?:?]
at
jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[?:?]
at java.lang.reflect.Constructor.newInstance(Constructor.java:490) [?:?]
at
org.apache.nutch.plugin.Extension.getExtensionInstance(Extension.java:170)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at
org.apache.nutch.plugin.PluginRepository.createURLStreamHandler(PluginRepository.java:597)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at
org.apache.nutch.plugin.URLStreamHandlerFactory.createURLStreamHandler(URLStreamHandlerFactory.java:95)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at java.net.URL.getURLStreamHandler(URL.java:1432) [?:?]
at java.net.URL.<init>(URL.java:651) [?:?]
at java.net.URL.<init>(URL.java:541) [?:?]
at java.net.URL.<init>(URL.java:488) [?:?]
at
org.apache.nutch.protocol.ProtocolFactory.getProtocol(ProtocolFactory.java:109)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at
org.apache.nutch.util.AbstractChecker.getProtocolOutput(AbstractChecker.java:196)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at org.apache.nutch.parse.ParserChecker.process(ParserChecker.java:185)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at
org.apache.nutch.util.AbstractChecker.processSingle(AbstractChecker.java:87)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at org.apache.nutch.parse.ParserChecker.run(ParserChecker.java:150)
[apache-nutch-1.19-SNAPSHOT.jar:?]
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
[hadoop-common-3.1.3.jar:?]
at org.apache.nutch.parse.ParserChecker.main(ParserChecker.java:307)
[apache-nutch-1.19-SNAPSHOT.jar:?]
{noformat}
> Early registration of URL stream handlers provided by plugins may fail Hadoop
> jobs running in distributed mode
> --------------------------------------------------------------------------------------------------------------
>
> Key: NUTCH-2936
> URL: https://issues.apache.org/jira/browse/NUTCH-2936
> Project: Nutch
> Issue Type: Bug
> Components: plugin, protocol
> Affects Versions: 1.19
> Reporter: Sebastian Nagel
> Priority: Major
> Fix For: 1.19
>
>
> After merging NUTCH-2429 I've observed that Nutch jobs running in distributed
> mode may fail early with the following dubious error:
> {noformat}
> 2022-01-14 13:11:45,751 ERROR crawl.DedupRedirectsJob: DeduplicationJob:
> java.io.IOException: Error generating shuffle secret key
> at
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:182)
> at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1565)
> at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1562)
> at java.base/java.security.AccessController.doPrivileged(Native
> Method)
> at java.base/javax.security.auth.Subject.doAs(Subject.java:423)
> at
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1762)
> at org.apache.hadoop.mapreduce.Job.submit(Job.java:1562)
> at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1583)
> at
> org.apache.nutch.crawl.DedupRedirectsJob.run(DedupRedirectsJob.java:301)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
> at
> org.apache.nutch.crawl.DedupRedirectsJob.main(DedupRedirectsJob.java:379)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
> Caused by: java.security.NoSuchAlgorithmException: HmacSHA1 KeyGenerator not
> available
> at java.base/javax.crypto.KeyGenerator.<init>(KeyGenerator.java:177)
> at
> java.base/javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:244)
> at
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:179)
> ... 16 more
> {noformat}
> After removing the early registration of URL stream handlers (see NUTCH-2429)
> in NutchJob and NutchTool, the job starts without errors.
> Notes:
> - the job this error was observed a [custom de-duplication
> job|https://github.com/commoncrawl/nutch/blob/cc/src/java/org/apache/nutch/crawl/DedupRedirectsJob.java]
> to flag redirects pointing to the same target URL. But I'll try to reproduce
> it with a standard Nutch job and in pseudo-distributed mode.
> - should also verify whether registering URL stream handlers works at all in
> distributed mode. Tasks are launched differently, not as NutchJob or
> NutchTool.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)