[ 
https://issues.apache.org/jira/browse/NIFI-2259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15391377#comment-15391377
 ] 

ASF GitHub Bot commented on NIFI-2259:
--------------------------------------

GitHub user ijokarumawak opened a pull request:

    https://github.com/apache/nifi/pull/714

    NIFI-2259: HTTP Site-to-Site can't handle DEST_FULL

    Hello, I found a bug related HTTP Site-to-Site push data transport, when 
there's a lots of items queued up at the remote NiFi instance.
    
    HTTP Site-to-Site can't handle TRANSACTION_FINISHED_BUT_DESTINATION_FULL
    scenario as expected.
    
    That happens if the remote NiFi's input port destination relationship
    becomes full during Site-to-Site client sends data. The data which has
    already sent to the remote NiFi has to be committed successfully.
    However, the remote NiFi returns 503 as a response of commit HTTP
    request. Because it does check port availability.
    
    The port availability check shouldn't be called at commit request, since
    the session at source NiFi has already been committed. The remote NiFi
    should commit its session as well, and return
    TRANSACTION_FINISHED_BUT_DESTINATION_FULL response.
    
    This fix makes a remote NiFi to keep the handshaken properties when it holds
    transaction to be committed. Then if a transaction already has
    handshaken properties, then use it, instead of doing a handshake process
    again.
    
    Please review the change, thank you!

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/ijokarumawak/nifi nifi-2259

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/nifi/pull/714.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #714
    
----
commit 79521d8cd01c0675bd8bd4d6a9f9382e11ca9d6b
Author: Koji Kawamura <[email protected]>
Date:   2016-07-25T03:14:12Z

    NIFI-2259: HTTP Site-to-Site can't handle DEST_FULL
    
    HTTP Site-to-Site can't handle TRANSACTION_FINISHED_BUT_DESTINATION_FULL
    scenario as expected.
    
    That happens if the remote NiFi's input port destination relationship
    becomes full during Site-to-Site client sends data. The data which has
    already sent to the remote NiFi has to be committed successfully.
    However, the remote NiFi returns 503 as a response of commit HTTP
    request. Because it does check port availability.
    
    The port availability check shouldn't be called at commit request, since
    the session at source NiFi has already been committed. The remote NiFi
    should commit its session as well, and return
    TRANSACTION_FINISHED_BUT_DESTINATION_FULL response.
    
    This fix makes a remote NiFi to keep the handshaken properties when it holds
    transaction to be committed. Then if a transaction already has
    handshaken properties, then use it, instead of doing a handshake process
    again.

----


> HTTP Site-to-Site doesn't handle TRANSACTION_FINISHED _BUT_DESTINATION_FULL 
> as expected
> ---------------------------------------------------------------------------------------
>
>                 Key: NIFI-2259
>                 URL: https://issues.apache.org/jira/browse/NIFI-2259
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>    Affects Versions: 1.0.0
>            Reporter: Koji Kawamura
>            Assignee: Koji Kawamura
>             Fix For: 1.0.0
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> If a remote NiFi instance input-port's destination becomes full, It's 
> expected that remote NiFi instance returns 
> TRANSACTION_FINISHED_BUT_DESTINATION_FULL response.
> However, an IOException occurred due to DESTINATION_FULL handshake error when 
> org.apache.nifi.remote.Transaction.complete() is called.
> The cause of this issue is SiteToSiteResource.commitInputPortTransaction() 
> checks if all of input-port's destination is full. Which shouldn't be 
> executed at complete(). The transaction is already committed on source NiFi.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to