Skip to content

Commit 3a6ab09

Browse files
Mikael Ronströmltangvald
authored andcommitted
WL#9638: Step 39
---------------- BUG#27942583 COPY_FRAGREQ scans can be blocked on row locks without any real time limit. So continue writing node log messages, but don't crash because this scan is taking a long time. Node restart will take an extreme amount of time, but we should not kill the live node because of that. If any node is to be killed, it is rather the starting node. Will still crash on too long waits for LCP scans and Backup scans since those ignore locks. Not sure though if there is any real possibility for those to be stalled for that long. This check was introduced in 7.6, so this bug should not affect any GA release. (cherry picked from commit 43bd5be81a3ed894ead380812f263bae48844d2f)
1 parent a2d6cdc commit 3a6ab09

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30428,7 +30428,7 @@ Dblqh::handle_check_system_scans(Signal *signal)
3042830428
else if (i == ZBACKUP_CHECK_INDEX)
3042930429
{
3043030430
jam();
30431-
g_eventLogger->info("Backup Scan have stalled for %u seconds, last"
30431+
g_eventLogger->info("Backup Scan have stalled for %u seconds, "
3043230432
"last seen on line %u, check_lcp_stop_count: %u",
3043330433
time_stalled,
3043430434
c_check_scanptr_save_line[i],
@@ -30449,8 +30449,15 @@ Dblqh::handle_check_system_scans(Signal *signal)
3044930449
signal->theData[0] = DumpStateOrd::LqhDumpOneScanRec;
3045030450
signal->theData[1] = loc_scanptr.i;
3045130451
EXECUTE_DIRECT(DBLQH, GSN_DUMP_STATE_ORD, signal, 2);
30452-
if (time_stalled >= 120)
30452+
if (time_stalled >= 120 &&
30453+
(i != ZCOPY_FRAGREQ_CHECK_INDEX))
3045330454
{
30455+
/**
30456+
* LCP and Backup scans proceed even in the presence of locks,
30457+
* COPY_FRAGREQ scans can be held up on locks without any
30458+
* real limits since transactions have no specified maximum
30459+
* time.
30460+
*/
3045430461
jam();
3045530462
abort();
3045630463
}

0 commit comments

Comments
 (0)