[ 
https://issues.apache.org/jira/browse/NIFI-4194?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nathan Gough updated NIFI-4194:
-------------------------------
    Comment: was deleted

(was: [~tony0918]

Hi Tony,

This issue was fixed by an upgrade to OkHttp version from 2.7.1 in NiFi v1.3.0, 
to 3.8.1 in NiFi v1.4.0. This changed the way the HostnameVerifier is used by 
the InvokeHTTP processor. I have verified this by building NiFi v1.3.0 and 
experienced this exception:

!Screen Shot 2018-07-12 at 3.29.50 PM.png!)

> NullPointerException in InvokeHTTP processor when trusted hostname property 
> is used
> -----------------------------------------------------------------------------------
>
>                 Key: NIFI-4194
>                 URL: https://issues.apache.org/jira/browse/NIFI-4194
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 1.3.0
>            Reporter: Andy LoPresto
>            Assignee: Nathan Gough
>            Priority: Major
>              Labels: hostname, okhttp, security, tls
>         Attachments: Screen Shot 2018-07-12 at 3.29.50 PM.png, 
> flow_20170717-192339_trusted_hostname.xml
>
>
> When a user configures the {{InvokeHTTP}} processor with HTTPS (using an 
> {{SSLContextService}}) and populates the {{trustedHostname}} property, the 
> processor will throw a {{NullPointerException}} because the OkHttp client 
> does not have a valid {{HostnameVerifier}} configured when the 
> {{@OnScheduled}} method is called and that verifier is delegated to the 
> processor. This results in the stacktrace below:
> {code}
> 2017-07-17 19:15:49,341 ERROR [Timer-Driven Process Thread-6] 
> o.a.nifi.processors.standard.InvokeHTTP 
> InvokeHTTP[id=53784003-015d-1000-ffb0-e07173729c9c] Routing to Failure due to 
> exception: java.lang.NullPointerException: java.lang.NullPointerException
> java.lang.NullPointerException: null
>       at 
> org.apache.nifi.processors.standard.InvokeHTTP$OverrideHostnameVerifier.verify(InvokeHTTP.java:1050)
>       at 
> com.squareup.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192)
>       at 
> com.squareup.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:145)
>       at 
> com.squareup.okhttp.internal.io.RealConnection.connect(RealConnection.java:108)
>       at 
> com.squareup.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
>       at 
> com.squareup.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
>       at 
> com.squareup.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
>       at 
> com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:283)
>       at 
> com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
>       at com.squareup.okhttp.Call.getResponse(Call.java:286)
>       at 
> com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:243)
>       at 
> com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205)
>       at com.squareup.okhttp.Call.execute(Call.java:80)
>       at 
> org.apache.nifi.processors.standard.InvokeHTTP.onTrigger(InvokeHTTP.java:630)
>       at 
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
>       at 
> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1120)
>       at 
> org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:147)
>       at 
> org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47)
>       at 
> org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:132)
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>       at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>       at java.lang.Thread.run(Thread.java:745)
> {code}
> When that method is invoked, the existence of the {{HostnameVerifier}} should 
> be checked before it is provided to the {{OverrideHostnameVerifier}}, and a 
> default value of {{OkHostnameVerifier.INSTANCE}} (public static singleton) 
> should be provided if none is available.



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

Reply via email to