[jira] [Updated] (NIFI-5952) RAW Site-to-Site fails with java.nio.channels.IllegalBlockingModeException

2019-09-13 Thread Mark Payne (Jira)


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

Mark Payne updated NIFI-5952:
-
Fix Version/s: 1.10.0
   Resolution: Fixed
   Status: Resolved  (was: Patch Available)

I have resolved this as fixed, after merging PR #3265. That PR does address the 
concern described here. If we want to provide an NIO-based implementation, we 
can do that in a new Jira.

> RAW Site-to-Site fails with java.nio.channels.IllegalBlockingModeException
> --
>
> Key: NIFI-5952
> URL: https://issues.apache.org/jira/browse/NIFI-5952
> Project: Apache NiFi
>  Issue Type: Sub-task
>  Components: Core Framework
> Environment: jdk-11.0.1
>Reporter: Koji Kawamura
>Assignee: Koji Kawamura
>Priority: Blocker
>  Labels: Java11
> Fix For: 1.10.0
>
>  Time Spent: 1h 50m
>  Remaining Estimate: 0h
>
> During the review cycle of NIFI-5820, I found that while HTTP S2S works 
> without issue, RAW S2S is failing with following Exception:
> {code:java}
>  2018-12-19 16:19:26,811 ERROR [Site-to-Site Listener] org.apache.nifi.NiFi
>  java.nio.channels.IllegalBlockingModeException: null
>  at 
> java.base/sun.nio.ch.ServerSocketAdaptor.accept(ServerSocketAdaptor.java:121)
>  at 
> org.apache.nifi.remote.SocketRemoteSiteListener$1.run(SocketRemoteSiteListener.java:125)
>  at java.base/java.lang.Thread.run(Thread.java:834)
> {code}
> Despite of the fact that the RAW has been worked with older Java versions, it 
> seems current nio usage at RAW S2S is not correct. And JDK 11 starts 
> complaining about it.
> Here are few things I've discovered with current NiFi and nio SocketChannel:
>  - NiFi accepts RAW S2S client connection with SocketRemoteSiteListener, 
> which uses ServerSocketChannel as non-blocking manner [1]
>  - But SocketRemoteSiteListener doesn't use Selector API to accept incoming 
> connection and transfer data with the channel. This is the cause of above 
> exception.
>  - SocketRemoteSiteListener spawns new thread when it accepts connection. 
> This is how connections are handled with a non-nio, standard Socket 
> programming. If we want to use non-blocking NIO, we need to use channels with 
> Selector
>  - But using non-blocking IO with current NiFi S2S protocol can only add few 
> or none benefit by doing so. [2]
> To make RAW S2S work with Java 11, we need either:
>  A. Stop using nio packages.
>  B. Implement correct nio usage, meaning use Selector IO and probably we need 
> another thread pool.
> I'm going to take the approach A above, because B would take much more 
> refactoring.
> [1] 
> [https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/main/java/org/apache/nifi/remote/SocketRemoteSiteListener.java#L120]
>  [2] 
> [https://stackoverflow.com/questions/12338204/in-java-nio-is-a-selector-useful-for-a-client-socketchannel]



--
This message was sent by Atlassian Jira
(v8.3.2#803003)


[jira] [Updated] (NIFI-5952) RAW Site-to-Site fails with java.nio.channels.IllegalBlockingModeException

2019-08-29 Thread Koji Kawamura (Jira)


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

Koji Kawamura updated NIFI-5952:

Priority: Blocker  (was: Critical)

> RAW Site-to-Site fails with java.nio.channels.IllegalBlockingModeException
> --
>
> Key: NIFI-5952
> URL: https://issues.apache.org/jira/browse/NIFI-5952
> Project: Apache NiFi
>  Issue Type: Sub-task
>  Components: Core Framework
> Environment: jdk-11.0.1
>Reporter: Koji Kawamura
>Assignee: Koji Kawamura
>Priority: Blocker
>  Labels: Java11
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> During the review cycle of NIFI-5820, I found that while HTTP S2S works 
> without issue, RAW S2S is failing with following Exception:
> {code:java}
>  2018-12-19 16:19:26,811 ERROR [Site-to-Site Listener] org.apache.nifi.NiFi
>  java.nio.channels.IllegalBlockingModeException: null
>  at 
> java.base/sun.nio.ch.ServerSocketAdaptor.accept(ServerSocketAdaptor.java:121)
>  at 
> org.apache.nifi.remote.SocketRemoteSiteListener$1.run(SocketRemoteSiteListener.java:125)
>  at java.base/java.lang.Thread.run(Thread.java:834)
> {code}
> Despite of the fact that the RAW has been worked with older Java versions, it 
> seems current nio usage at RAW S2S is not correct. And JDK 11 starts 
> complaining about it.
> Here are few things I've discovered with current NiFi and nio SocketChannel:
>  - NiFi accepts RAW S2S client connection with SocketRemoteSiteListener, 
> which uses ServerSocketChannel as non-blocking manner [1]
>  - But SocketRemoteSiteListener doesn't use Selector API to accept incoming 
> connection and transfer data with the channel. This is the cause of above 
> exception.
>  - SocketRemoteSiteListener spawns new thread when it accepts connection. 
> This is how connections are handled with a non-nio, standard Socket 
> programming. If we want to use non-blocking NIO, we need to use channels with 
> Selector
>  - But using non-blocking IO with current NiFi S2S protocol can only add few 
> or none benefit by doing so. [2]
> To make RAW S2S work with Java 11, we need either:
>  A. Stop using nio packages.
>  B. Implement correct nio usage, meaning use Selector IO and probably we need 
> another thread pool.
> I'm going to take the approach A above, because B would take much more 
> refactoring.
> [1] 
> [https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/main/java/org/apache/nifi/remote/SocketRemoteSiteListener.java#L120]
>  [2] 
> [https://stackoverflow.com/questions/12338204/in-java-nio-is-a-selector-useful-for-a-client-socketchannel]



--
This message was sent by Atlassian Jira
(v8.3.2#803003)


[jira] [Updated] (NIFI-5952) RAW Site-to-Site fails with java.nio.channels.IllegalBlockingModeException

2019-08-16 Thread Jeff Storck (JIRA)


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

Jeff Storck updated NIFI-5952:
--
Labels: Java11  (was: )

> RAW Site-to-Site fails with java.nio.channels.IllegalBlockingModeException
> --
>
> Key: NIFI-5952
> URL: https://issues.apache.org/jira/browse/NIFI-5952
> Project: Apache NiFi
>  Issue Type: Sub-task
>  Components: Core Framework
> Environment: jdk-11.0.1
>Reporter: Koji Kawamura
>Assignee: Koji Kawamura
>Priority: Critical
>  Labels: Java11
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> During the review cycle of NIFI-5820, I found that while HTTP S2S works 
> without issue, RAW S2S is failing with following Exception:
> {code:java}
>  2018-12-19 16:19:26,811 ERROR [Site-to-Site Listener] org.apache.nifi.NiFi
>  java.nio.channels.IllegalBlockingModeException: null
>  at 
> java.base/sun.nio.ch.ServerSocketAdaptor.accept(ServerSocketAdaptor.java:121)
>  at 
> org.apache.nifi.remote.SocketRemoteSiteListener$1.run(SocketRemoteSiteListener.java:125)
>  at java.base/java.lang.Thread.run(Thread.java:834)
> {code}
> Despite of the fact that the RAW has been worked with older Java versions, it 
> seems current nio usage at RAW S2S is not correct. And JDK 11 starts 
> complaining about it.
> Here are few things I've discovered with current NiFi and nio SocketChannel:
>  - NiFi accepts RAW S2S client connection with SocketRemoteSiteListener, 
> which uses ServerSocketChannel as non-blocking manner [1]
>  - But SocketRemoteSiteListener doesn't use Selector API to accept incoming 
> connection and transfer data with the channel. This is the cause of above 
> exception.
>  - SocketRemoteSiteListener spawns new thread when it accepts connection. 
> This is how connections are handled with a non-nio, standard Socket 
> programming. If we want to use non-blocking NIO, we need to use channels with 
> Selector
>  - But using non-blocking IO with current NiFi S2S protocol can only add few 
> or none benefit by doing so. [2]
> To make RAW S2S work with Java 11, we need either:
>  A. Stop using nio packages.
>  B. Implement correct nio usage, meaning use Selector IO and probably we need 
> another thread pool.
> I'm going to take the approach A above, because B would take much more 
> refactoring.
> [1] 
> [https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/main/java/org/apache/nifi/remote/SocketRemoteSiteListener.java#L120]
>  [2] 
> [https://stackoverflow.com/questions/12338204/in-java-nio-is-a-selector-useful-for-a-client-socketchannel]



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)


[jira] [Updated] (NIFI-5952) RAW Site-to-Site fails with java.nio.channels.IllegalBlockingModeException

2019-01-11 Thread Koji Kawamura (JIRA)


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

Koji Kawamura updated NIFI-5952:

Status: Patch Available  (was: In Progress)

> RAW Site-to-Site fails with java.nio.channels.IllegalBlockingModeException
> --
>
> Key: NIFI-5952
> URL: https://issues.apache.org/jira/browse/NIFI-5952
> Project: Apache NiFi
>  Issue Type: Sub-task
>  Components: Core Framework
> Environment: jdk-11.0.1
>Reporter: Koji Kawamura
>Assignee: Koji Kawamura
>Priority: Critical
>
> During the review cycle of NIFI-5820, I found that while HTTP S2S works 
> without issue, RAW S2S is failing with following Exception:
> {code:java}
>  2018-12-19 16:19:26,811 ERROR [Site-to-Site Listener] org.apache.nifi.NiFi
>  java.nio.channels.IllegalBlockingModeException: null
>  at 
> java.base/sun.nio.ch.ServerSocketAdaptor.accept(ServerSocketAdaptor.java:121)
>  at 
> org.apache.nifi.remote.SocketRemoteSiteListener$1.run(SocketRemoteSiteListener.java:125)
>  at java.base/java.lang.Thread.run(Thread.java:834)
> {code}
> Despite of the fact that the RAW has been worked with older Java versions, it 
> seems current nio usage at RAW S2S is not correct. And JDK 11 starts 
> complaining about it.
> Here are few things I've discovered with current NiFi and nio SocketChannel:
>  - NiFi accepts RAW S2S client connection with SocketRemoteSiteListener, 
> which uses ServerSocketChannel as non-blocking manner [1]
>  - But SocketRemoteSiteListener doesn't use Selector API to accept incoming 
> connection and transfer data with the channel. This is the cause of above 
> exception.
>  - SocketRemoteSiteListener spawns new thread when it accepts connection. 
> This is how connections are handled with a non-nio, standard Socket 
> programming. If we want to use non-blocking NIO, we need to use channels with 
> Selector
>  - But using non-blocking IO with current NiFi S2S protocol can only add few 
> or none benefit by doing so. [2]
> To make RAW S2S work with Java 11, we need either:
>  A. Stop using nio packages.
>  B. Implement correct nio usage, meaning use Selector IO and probably we need 
> another thread pool.
> I'm going to take the approach A above, because B would take much more 
> refactoring.
> [1] 
> [https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/main/java/org/apache/nifi/remote/SocketRemoteSiteListener.java#L120]
>  [2] 
> [https://stackoverflow.com/questions/12338204/in-java-nio-is-a-selector-useful-for-a-client-socketchannel]



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