[
https://issues.apache.org/jira/browse/CAMEL-23030?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Parmeley updated CAMEL-23030:
-------------------------------------
Description:
We have some routes with a streaming splitter that uses aggregation to group
file rows into batches of rows that throws a StackOverflowError on versions of
Camel > 4.6.
I have attached a project with a single unit test in it that recreates the
problem. Steps to recreate:
1. Extract the attached project: tar xvfz
camel-synchronous-executor-stackoverflow-reproducer.tar.gz
2. Navigate into the created directory: cd
camel-synchronous-executor-stackoverflow-reproducer
3. Execute: ./gradlew test
It comes "out-of-the-box" running with camel 4.17 and it will throw a
StackOverFlow error.
To test against other versions edit `build.gradle` and uncomment/comment the
appropriate `camelVersion` declaration. The build.gradle file has comments
regarding versions that fail and pass. Although it is any version > 4.6 that
fail.
I looked at the source for AggregateProcessor::onSubmitCompletion() and I do
see a difference on how the task is scheduled at the end between 4.6 and 4.7.
4.6:
{code:java}
reactiveExecutor.schedule(task);
{code}
4.7:
{code:java}
reactiveExecutor.scheduleSync(task);
{code}
It changes further in 4.8 to this:
{code:java}
if (exchange.isTransacted()) {
reactiveExecutor.scheduleQueue(task);
} else {
reactiveExecutor.scheduleSync(task);
}
{code}
I ran my unit test against the very recently released 4.18 and the test still
results in a StackOverFlow error.
Issue https://issues.apache.org/jira/browse/CAMEL-22147 seems similiar although
the fix made for that did not fix the issue we are having.
was:
We have some routes with a streaming splitter that uses aggregation to group
file rows into batches of rows that throws a StackOverflowError on versions of
Camel > 4.6.
I have attached a project with a single unit test in it that recreates the
problem. Steps to recreate:
1. Extract the attached project: tar xvfz
camel-synchronous-executor-stackoverflow-reproducer.tar.gz
2. Navigate into the created directory: cd
camel-synchronous-executor-stackoverflow-reproducer
3. Execute: ./gradlew test
It comes "out-of-the-box" running with camel 4.17 and it will throw a
StackOverFlow error.
To test against other versions edit `build.gradle` and uncomment/comment the
appropriate `camelVersion` declaration. The build.gradle file has comments
regarding versions that fail and pass. Although it is any version > 4.6 that
fail.
I looked at the source for AggregationProcessor::onSubmitCompletion() and I do
see a difference on how the task is scheduled at the end between 4.6 and 4.7.
4.6:
{code:java}
reactiveExecutor.schedule(task);
{code}
4.7:
{code:java}
reactiveExecutor.scheduleSync(task);
{code}
It changes further in 4.8 to this:
{code:java}
if (exchange.isTransacted()) {
reactiveExecutor.scheduleQueue(task);
} else {
reactiveExecutor.scheduleSync(task);
}
{code}
I ran my unit test against the very recently released 4.18 and the test still
results in a StackOverFlow error.
Issue https://issues.apache.org/jira/browse/CAMEL-22147 seems similiar although
the fix made for that did not fix the issue we are having.
> Streaming splitter with aggregation using synchronous executor results in
> StackOverflowError
> ----------------------------------------------------------------------------------------------
>
> Key: CAMEL-23030
> URL: https://issues.apache.org/jira/browse/CAMEL-23030
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 4.7.0
> Environment: This issues occurs with any JVM version I have tried
> (17, 21, 24) and it occurs on my Mac OS developer machine as well as a linux
> vm that runs unit tests.
> Reporter: Michael Parmeley
> Priority: Minor
> Fix For: 4.14.6, 4.18.1, 4.19.0
>
> Attachments:
> camel-synchronous-executor-stackoverflow-reproducer.tar.gz
>
>
> We have some routes with a streaming splitter that uses aggregation to group
> file rows into batches of rows that throws a StackOverflowError on versions
> of Camel > 4.6.
> I have attached a project with a single unit test in it that recreates the
> problem. Steps to recreate:
> 1. Extract the attached project: tar xvfz
> camel-synchronous-executor-stackoverflow-reproducer.tar.gz
> 2. Navigate into the created directory: cd
> camel-synchronous-executor-stackoverflow-reproducer
> 3. Execute: ./gradlew test
> It comes "out-of-the-box" running with camel 4.17 and it will throw a
> StackOverFlow error.
> To test against other versions edit `build.gradle` and uncomment/comment the
> appropriate `camelVersion` declaration. The build.gradle file has comments
> regarding versions that fail and pass. Although it is any version > 4.6 that
> fail.
> I looked at the source for AggregateProcessor::onSubmitCompletion() and I do
> see a difference on how the task is scheduled at the end between 4.6 and 4.7.
> 4.6:
> {code:java}
> reactiveExecutor.schedule(task);
> {code}
> 4.7:
> {code:java}
> reactiveExecutor.scheduleSync(task);
> {code}
> It changes further in 4.8 to this:
> {code:java}
> if (exchange.isTransacted()) {
> reactiveExecutor.scheduleQueue(task);
> } else {
> reactiveExecutor.scheduleSync(task);
> }
> {code}
> I ran my unit test against the very recently released 4.18 and the test still
> results in a StackOverFlow error.
> Issue https://issues.apache.org/jira/browse/CAMEL-22147 seems similiar
> although the fix made for that did not fix the issue we are having.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)