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

Joe Witt updated NIFI-16311:
----------------------------
    Status: Patch Available  (was: Open)

> ParseSyslog initializes SyslogParser unsafely under concurrent tasks
> --------------------------------------------------------------------
>
>                 Key: NIFI-16311
>                 URL: https://issues.apache.org/jira/browse/NIFI-16311
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>            Reporter: Joe Witt
>            Assignee: Joe Witt
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> ParseSyslog keeps a SyslogParser in a non-volatile instance field and lazily 
> constructs it inside onTrigger:
>     if (parser == null || !parser.getCharsetName().equals(charsetName)) {
>         parser = new SyslogParser(Charset.forName(charsetName));
>     }
> NiFi uses a single processor instance for all concurrent tasks, so this is an 
> unsynchronized check-then-act. A second thread can observe a non-null parser 
> whose charset has not been published, or two threads can replace the field 
> while parseEvent is running.
> The Character Set property does not support Expression Language, so its value 
> cannot change between triggers. The per-trigger re-init is unnecessary.
> ParseSyslog5424 already does this correctly: it builds the parser in 
> @OnScheduled and stores it in a volatile field.
> This ticket is only that lifecycle/concurrency fix. It does not change 
> parsing, relationships, or how FlowFile content is read.
> Expected:
> - SyslogParser is created once when the processor is scheduled
> - Concurrent tasks share a safely published, immutable-for-the-run parser
> - Existing RFC3164/RFC5424 parse tests still pass
> - A TestRunner test with concurrent tasks succeeds
> Actual:
> - Parser construction races in onTrigger when Concurrent Tasks > 1



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to