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

Roman Puchkovskiy updated IGNITE-23233:
---------------------------------------
    Description: 
There is just 1 node in cluster.

RemoteJobExecution.stateAsync() -> ComputeMessaging.removeStateAsync() -> 
MessagingService.invoke (to self) -> ComputeMessaging.processRequest() -> 
ComputeMessaging.processJobStateRequest() -> ExecutionManager.stateAsync() -> 
RemoteJobExecution.stateAsync()

RemoteJobExecution instance in the beginning and in the end is the same, so an 
infinite recursion is formed. It results in a StackOverflowException.

This can be reproduced by adding the following test to 
ItInProcessRestartApiReferencesTest:

@Test
void test() {
JobExecution<String> execution = 
refs.compute.submit(anyNode(refs.clusterNodes), 
JobDescriptor.builder(NoOpJob.class).build(),
null);
assertThat(execution.stateAsync(), willCompleteSuccessfully());
}

The test itself does NOT fail, but, if you add an exception breakpoint for 
StackOverflowError and run the test in Debug, the error will trigger the 
breakpoint.

The error is also swallowed somewhere, the test passes successfully. This needs 
to be investigated as well.

> Infinite loop in RemoteJobExecution#stateAsync()
> ------------------------------------------------
>
>                 Key: IGNITE-23233
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23233
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>
> There is just 1 node in cluster.
> RemoteJobExecution.stateAsync() -> ComputeMessaging.removeStateAsync() -> 
> MessagingService.invoke (to self) -> ComputeMessaging.processRequest() -> 
> ComputeMessaging.processJobStateRequest() -> ExecutionManager.stateAsync() -> 
> RemoteJobExecution.stateAsync()
> RemoteJobExecution instance in the beginning and in the end is the same, so 
> an infinite recursion is formed. It results in a StackOverflowException.
> This can be reproduced by adding the following test to 
> ItInProcessRestartApiReferencesTest:
> @Test
> void test() {
> JobExecution<String> execution = 
> refs.compute.submit(anyNode(refs.clusterNodes), 
> JobDescriptor.builder(NoOpJob.class).build(),
> null);
> assertThat(execution.stateAsync(), willCompleteSuccessfully());
> }
> The test itself does NOT fail, but, if you add an exception breakpoint for 
> StackOverflowError and run the test in Debug, the error will trigger the 
> breakpoint.
> The error is also swallowed somewhere, the test passes successfully. This 
> needs to be investigated as well.



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

Reply via email to