diff --git a/storage/innobase/lock/lock0lock.cc b/storage/innobase/lock/lock0lock.cc
index 8490773d..68b0fe38 100644
--- a/storage/innobase/lock/lock0lock.cc
+++ b/storage/innobase/lock/lock0lock.cc
@@ -118,6 +118,7 @@ void lock_sys_t::hash_table::resize(ulint n)
         {
           lock_t *next= static_cast<lock_t*>(c->node);
           while (next->hash)
+usleep(random() % 500);
             next= next->hash;
           next->hash= lock;
         }
@@ -284,6 +285,7 @@ namespace Deadlock
   {
     mysql_mutex_assert_owner(&lock_sys.wait_mutex);
     trx_t *tortoise= trx, *hare= trx;
+usleep(random() % 500);
     for (unsigned power= 1, l= 1; (hare= hare->lock.wait_trx) != nullptr; l++)
     {
       if (tortoise == hare)
@@ -617,6 +619,7 @@ lock_rec_has_to_wait(
 	    || lock_mode_compatible(
 		       static_cast<lock_mode>(LOCK_MODE_MASK & type_mode),
 		       lock2->mode())) {
+usleep(random() % 500);
 		return false;
 	}
 
@@ -869,9 +872,10 @@ lock_rec_has_expl(
 	 heap_no == PAGE_HEAP_NO_SUPREMUM ||
 	 ((LOCK_REC_NOT_GAP | LOCK_GAP) & precise_mode & lock->type_mode)) &&
 	lock_mode_stronger_or_eq(lock->mode(), static_cast<lock_mode>
-				 (precise_mode & LOCK_MODE_MASK)))
+				 (precise_mode & LOCK_MODE_MASK))){
+usleep(random() % 500);
       return lock;
-
+}
   return nullptr;
 }
 
@@ -996,6 +1000,7 @@ static void lock_wait_wsrep(trx_t *trx)
                   };);
 
   lock_sys.wr_unlock();
+usleep(random() % 500);
   mysql_mutex_unlock(&lock_sys.wait_mutex);
 
   for (const auto &v : victim_id)
@@ -1414,6 +1419,7 @@ static void lock_rec_add_to_queue(unsigned type_mode, hash_cell_t &cell,
 	}
 
 	if (type_mode & LOCK_WAIT) {
+usleep(random() % 500);
 		goto create;
 	} else if (lock_t *first_lock = lock_sys_t::get_first(cell, id)) {
 		for (lock_t* lock = first_lock;;) {
@@ -1600,6 +1606,7 @@ lock_rec_has_to_wait_in_queue(const hash_cell_t &cell, const lock_t *wait_lock)
 		if (heap_no < lock_rec_get_n_bits(lock)
 		    && (p[bit_offset] & bit_mask)
 		    && lock_has_to_wait(wait_lock, lock)) {
+usleep(random() % 500);
 			return(lock);
 		}
 	}
@@ -1879,6 +1886,7 @@ static void lock_wait_end(trx_t *trx)
 {
   mysql_mutex_assert_owner(&lock_sys.wait_mutex);
   ut_ad(trx->mutex_is_owner());
+usleep(random() % 500);
   ut_d(const auto state= trx->state);
   ut_ad(state == TRX_STATE_ACTIVE || state == TRX_STATE_PREPARED);
   ut_ad(trx->lock.wait_thr);
@@ -2215,6 +2223,7 @@ lock_rec_move(
 	     lock = lock_rec_get_next(donator_heap_no, lock)) {
 		const auto type_mode = lock->type_mode;
 		if (type_mode & LOCK_WAIT) {
+usleep(random() % 500);
 			ut_ad(lock->trx->lock.wait_lock == lock);
 			lock->type_mode &= ~LOCK_WAIT;
 		}
@@ -2260,6 +2269,7 @@ lock_move_granted_locks_to_front(
 		}
 
 		ut_ad(seen_waiting_lock);
+usleep(random() % 500);
 
 		if (!lock->is_waiting()) {
 			lock_t* prev = UT_LIST_GET_PREV(trx_locks, lock);
@@ -2522,7 +2532,7 @@ lock_move_rec_list_end(
           ut_ad("corrupted page" == 0);
           return;
         }
-
+usleep(random() % 500);
         trx_t *lock_trx= lock->trx;
         lock_trx->mutex_lock();
 
@@ -2742,7 +2752,7 @@ lock_rtr_move_rec_list(
 
           ut_ad(!memcmp(rec1, rec2, rec_get_data_size_old(rec2)));
         }
-
+usleep(random() % 500);
         trx_t *lock_trx= lock->trx;
         lock_trx->mutex_lock();
 
@@ -2926,7 +2936,8 @@ void lock_update_merge_left(const buf_block_t& left, const rec_t *orig_pred,
   const page_id_t l{left.page.id()};
   const rec_t *left_next_rec= page_rec_get_next_const(orig_pred);
   if (UNIV_UNLIKELY(!left_next_rec))
-  {
+{
+  usleep(random() % 500);
     ut_ad("corrupted page" == 0);
     return;
   }
@@ -3125,6 +3136,7 @@ lock_update_delete(
 	}
 
 	const page_id_t id{block->page.id()};
+usleep(random() % 500);
 	LockGuard g{lock_sys.rec_hash, id};
 
 	/* Let the next record inherit the locks from rec, in gap mode */
@@ -3762,6 +3774,7 @@ lock_rec_unlock(
 	ulint		heap_no;
 
 	ut_ad(trx);
+usleep(random() % 500);
 	ut_ad(rec);
 	ut_ad(!trx->lock.wait_lock);
 	ut_ad(trx_state_eq(trx, TRX_STATE_ACTIVE));
@@ -4442,6 +4455,7 @@ void lock_trx_print_wait_and_mvcc_state(FILE *file, const trx_t *trx,
 	fprintf(file, "---");
 
 	trx_print_latched(file, trx, 600);
+usleep(random() % 500);
 	trx->read_view.print_limits(file);
 
 	if (const lock_t* wait_lock = trx->lock.wait_lock) {
@@ -4635,6 +4649,7 @@ lock_rec_queue_validate(
 	ut_ad(rec_offs_validate(rec, index, offsets));
 	ut_ad(!page_rec_is_comp(rec) == !rec_offs_comp(offsets));
 	ut_ad(page_rec_is_leaf(rec));
+usleep(random() % 500);
 	ut_ad(!index || dict_index_is_clust(index)
 	      || !dict_index_is_online_ddl(index));
 
