diff --git a/sysbench/scripting/script_lua.c b/sysbench/scripting/script_lua.c index 5590d7f..71f2a8a 100644 --- a/sysbench/scripting/script_lua.c +++ b/sysbench/scripting/script_lua.c @@ -20,6 +20,8 @@ # include "config.h" #endif +#include + #include "script_lua.h" #include "lua.h" #include "lualib.h" @@ -29,7 +31,7 @@ #include "db_driver.h" #include "sb_rnd.h" -#include +#include "ck_pr.h" #define EVENT_FUNC "event" #define PREPARE_FUNC "prepare" @@ -245,17 +247,11 @@ sb_request_t sb_lua_get_request(int thread_id) (void) thread_id; /* unused */ - if (sb_globals.max_requests > 0) + if (sb_globals.max_requests > 0 && + ck_pr_faa_uint(&nevents, 1) >= sb_globals.max_requests) { - SB_THREAD_MUTEX_LOCK(); - if (nevents >= sb_globals.max_requests) - { - req.type = SB_REQ_TYPE_NULL; - SB_THREAD_MUTEX_UNLOCK(); - return req; - } - nevents++; - SB_THREAD_MUTEX_UNLOCK(); + req.type = SB_REQ_TYPE_NULL; + return req; } req.type = SB_REQ_TYPE_SCRIPT; diff --git a/tests/include/script_oltp_common.sh b/tests/include/script_oltp_common.sh index aa9b715..f0cacf8 100644 --- a/tests/include/script_oltp_common.sh +++ b/tests/include/script_oltp_common.sh @@ -12,6 +12,6 @@ ARGS="--test=${SBTEST_SCRIPTDIR}/oltp.lua $DB_DRIVER_ARGS --oltp-tables-count=8" sysbench $ARGS prepare -sysbench $ARGS --max-requests=100 --num-threads=1 run +sysbench $ARGS --max-requests=100 --num-threads=2 run sysbench $ARGS cleanup