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

Jan Bednar updated CAMEL-15718:
-------------------------------
           Component/s:     (was: camel-core)
    External issue URL: 
https://stackoverflow.com/questions/64433933/apache-camel-lumberjack-component-not-thread-safe
     Affects Version/s: 3.6.0

All session data in LumberjackSessionHandler are stored as field variables and 
thus shared between different threads/channels.

These variables needs to be moved to Channel attributes - 
[https://netty.io/4.0/api/io/netty/util/AttributeMap.html]

Like:
{code:java}
ctx.channel().attr(AttributeKey.valueOf("LumberjackSessionHandler.state")).set(new
 LumberjackSessionState());
{code}

> Camel lumberjack server component not thread safe
> -------------------------------------------------
>
>                 Key: CAMEL-15718
>                 URL: https://issues.apache.org/jira/browse/CAMEL-15718
>             Project: Camel
>          Issue Type: Bug
>    Affects Versions: 3.5.0, 3.6.0
>         Environment: camel 3.5.0, filebeat 7.9.1, jdk 1.8.0_242, Debian 10, 
> Linux 4.19.0-6-amd64
>            Reporter: Erik Zimmermann
>            Priority: Major
>
> I am new to camel. I use a filebeat source that delivers logfile data over 
> the lumberjack v2 batch protocol. As a receiving server I use the camel 
> lumberjack component to further process the data in a camel pipeline.
> I realized that the LumberjackSessionHandler of camels lumberjack component 
> is not stateless but is being used by camel for all parallel lumberjack 
> connection requests. Thus, new incoming connections with their own batch 
> windows mess up any ongoing process of the already existing window, e.g. 
> window size settings and counting acknowledges.
> Many different combinations of multicast().parallelProcessing().threads(...) 
> with filebeats workers/pipelines showed the same result.
> The states of the stateful LumberjackSessionHandler are mixed up and the 
> handling of parallel windows is broken which results in unwanted/unfinished 
> acknowledges. As a result it hangs up the whole communication process to the 
> filebeat source.
> The LumberjackSessionHandler is not able to handle multiple threads, but 
> camel uses it as it would be able to. 
> How can I tell camel to use separate LumberjackSessionHandlers and processing 
> pipelines for each lumberjack batch request? Or do I misunderstand the 
> concept of how camel uses components?
> Sorry, I wasn't able to find a more specific "camel-lumberjack" component in 
> the list of issue proposals above so I selected camel-core...



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

Reply via email to