Commit 8307fc9d authored by Eugene Kosov's avatar Eugene Kosov Committed by Sergey Vojtovich

fix a data race in debug build (#523)

* fix a data race in debug build
parent 1761e382
......@@ -188,19 +188,19 @@ bool
fil_validate_skip(void)
/*===================*/
{
/** The fil_validate() call skip counter. Use a signed type
because of the race condition below. */
/** The fil_validate() call skip counter. */
static int fil_validate_count = FIL_VALIDATE_SKIP;
/* There is a race condition below, but it does not matter,
because this call is only for heuristic purposes. We want to
reduce the call frequency of the costly fil_validate() check
in debug builds. */
if (--fil_validate_count > 0) {
/* We want to reduce the call frequency of the costly fil_validate()
check in debug builds. */
int count = my_atomic_add32_explicit(&fil_validate_count, -1,
MY_MEMORY_ORDER_RELAXED);
if (count > 0) {
return(true);
}
fil_validate_count = FIL_VALIDATE_SKIP;
my_atomic_store32_explicit(&fil_validate_count, FIL_VALIDATE_SKIP,
MY_MEMORY_ORDER_RELAXED);
return(fil_validate());
}
#endif /* UNIV_DEBUG */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment