Skip to content

The Issue363 test reports an error "Shutdown in progress" during multiple iterations. #711

@SeasonPilot

Description

@SeasonPilot

Describe the bug
When running the Issue363 series tests (e.g., Issue363SF1Test) with the number of iterations set to 5 (or any value greater than 1), the test fails at the second iteration with the error message "Shutdown in progress".

This occurs because the QueryTester.execute() method calls environment.shutdown() in the finally block after each execution, which triggers the JVM's shutdown hooks. When the test loop proceeds to the second iteration and attempts to create a new Environment, the component initialization code (AbstractComponent.init()) tries to register a new shutdown hook. However, since the JVM is already in the shutdown process, an IllegalStateException is thrown.

Expected behavior
The test should complete all configured iterations (e.g., 5 iterations) successfully to properly collect and calculate performance statistics. Multiple iterations should not be affected by the environment shutdown of the previous iteration, or the test should support reusing the same environment instance across multiple iterations.

Additional context

Error Flow:
First iteration → QueryTester.execute() → environment.shutdown()
Triggers JVM shutdown hooks → ClusterMetaStore.close()
Second iteration → new Environment → AbstractComponent.init()
Runtime.getRuntime().addShutdownHook() → Throws IllegalStateException: Shutdown in progress

Root Cause: This issue is specific to the test pattern where QueryTester.build().execute() is called in a loop within a single @Test method. This leads to repeated creation and destruction of the environment, conflicting with the one-time nature of JVM shutdown hooks.

Key Files:

  • AbstractComponent.java: Line 74 (Attempts to add a shutdown hook on each initialization)
  • QueryTester.java: Lines 155-157 (Forces environment shutdown after execution)

Recommended Fix: Modify QueryTester to support reusing an existing Environment via a withEnvironment() method, thereby avoiding repeated triggering of the JVM shutdown process in loops.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions