Skip to content

JMeter shutdown using timers releases thundering herd of interrupted samplers #4459

@asfimport

Description

@asfimport

Antony Bowesman (Bug 61380):
Seems like there's a flaw in the shutdown logic

When a test is running, it goes through JMeterThread. executeSamplePackage() where it goes into the delay(pack.getTimers()) call.

If you shut down a test, it will interrupt the timers and you will see these messages in jmeter.log

jmeter.threads.JMeterThread: The delay timer was interrupted - probably did not wait as long as intended

As a result, all threads blocked waiting to sample() will get released at pretty much the same time and as the JMeter iteration logic does the delay before the sample() rather than after, it means all threads will go into sample() at about the same time.

We've had cases where we've had to stop a production test as we're breaking it and the shutdown exacerbates the problem.

As the JMeterThread.stop() sets the running flag to false, it's probably a simple fix to wrap the code following the delay() call with if (running) {

}

Severity: normal
OS: All

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions