nifi-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (Jira)" <j...@apache.org>
Subject [jira] [Commented] (NIFI-6395) CountText processor is not thread safe - concurrency error
Date Tue, 05 Nov 2019 12:02:00 GMT

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

ASF subversion and git services commented on NIFI-6395:
-------------------------------------------------------

Commit 7f96fa1d0dbcfd061fba1e061c891ac35da4333d in nifi's branch refs/heads/master from Ivan
Ezequiel Rodriguez
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=7f96fa1 ]

NIFI-6395: Thread-safety bug fixed and added new flag property to handle the way to adjust
the counters

Update CountText.java

Local variable changes by AtomicInteger

NIFI-6395 - Fix line is longer than 200 characters

This closes #3552.

Signed-off-by: Koji Kawamura <ijokarumawak@apache.org>


> CountText processor is not thread safe - concurrency error
> ----------------------------------------------------------
>
>                 Key: NIFI-6395
>                 URL: https://issues.apache.org/jira/browse/NIFI-6395
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 1.9.2
>         Environment: software platform
>            Reporter: Iván Ezequiel Rodriguez
>            Assignee: Iván Ezequiel Rodriguez
>            Priority: Major
>              Labels: concurrency, count, error, processor, text, thread-safe
>          Time Spent: 4h 20m
>  Remaining Estimate: 0h
>
> The processor counters fail to execute multiple threads. The programming is not safe
since they are not atomic operations. They are using a volatile instance variable accessed
by multiple threads when onTrigger is called. The solution is to declare those local variables
to onTrigger. Perform several tests with millions of records and the counter does not work
correctly when it is executed with more than one task.
> The problem is in the declaration of these instance variables:
> private *volatile int* lineCount;
>  private *volatile int* lineNonEmptyCount;
>  private *volatile int* wordCount;
>  private *volatile int* characterCount;
> This is not safe to perform atomic operations on these variables. As a result the counters
register less amount of lines when executed with multiple threads.
> I propose the following solution:
> [Fix bug pull request|https://github.com/apache/nifi/pull/3552]
> problem graph:
> [!https://1.bp.blogspot.com/-o-RrxVFT1BA/XW7BW9e-iyI/AAAAAAAAAV4/SjV_4QzA5Po47fM-Roz75mE9mYwKxkIrQCLcBGAs/s640/thread-safe2.png|width=640,height=353!|https://1.bp.blogspot.com/-o-RrxVFT1BA/XW7BW9e-iyI/AAAAAAAAAV4/SjV_4QzA5Po47fM-Roz75mE9mYwKxkIrQCLcBGAs/s1600/thread-safe2.png]
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message