@@ -603,6 +603,9 @@ Dbtup::disk_page_prealloc(Signal* signal,
603603 case 0 :
604604 break ;
605605 case -1 :
606+ g_eventLogger->warning (" Out of space in RG_DISK_OPERATIONS"
607+ " resource, increase config parameter"
608+ " GlobalSharedMemory" );
606609 ndbrequire (" NOT YET IMPLEMENTED" == 0 );
607610 break ;
608611 default :
@@ -1619,10 +1622,12 @@ Dbtup::disk_restart_undo(Signal* signal, Uint64 lsn,
16191622}
16201623
16211624void
1622- Dbtup::disk_restart_undo_next (Signal* signal)
1625+ Dbtup::disk_restart_undo_next (Signal* signal, Uint32 applied )
16231626{
16241627 signal->theData [0 ] = LgmanContinueB::EXECUTE_UNDO_RECORD;
1625- sendSignal (LGMAN_REF, GSN_CONTINUEB, signal, 1 , JBB);
1628+ /* Flag indicating whether UNDO log was applied. */
1629+ signal->theData [1 ] = applied;
1630+ sendSignal (LGMAN_REF, GSN_CONTINUEB, signal, 2 , JBB);
16261631}
16271632
16281633void
@@ -1773,6 +1778,7 @@ Dbtup::disk_restart_undo_callback(Signal* signal,
17731778// key.m_file_no = pagePtr.p->m_file_no;
17741779
17751780 Uint64 lsn = 0 ;
1781+ Uint32 applied = 0 ;
17761782 lsn += pagePtr.p ->m_page_header .m_page_lsn_hi ; lsn <<= 32 ;
17771783 lsn += pagePtr.p ->m_page_header .m_page_lsn_lo ;
17781784
@@ -1788,6 +1794,7 @@ Dbtup::disk_restart_undo_callback(Signal* signal,
17881794 }
17891795
17901796 update = true ;
1797+ applied = 1 ;
17911798 if (DBG_UNDO)
17921799 ndbout_c (" applying %lld" , undo->m_lsn );
17931800 /* *
@@ -1830,7 +1837,7 @@ Dbtup::disk_restart_undo_callback(Signal* signal,
18301837 << " tab: " << tableId << endl;
18311838 }
18321839
1833- disk_restart_undo_next (signal);
1840+ disk_restart_undo_next (signal, applied );
18341841}
18351842
18361843void
@@ -1882,8 +1889,17 @@ Dbtup::disk_restart_undo_free(Apply_undo* undo)
18821889 {
18831890 abort ();
18841891 }
1885-
1886- ndbrequire (idx == undo->m_key .m_page_idx );
1892+
1893+ if (idx != undo->m_key .m_page_idx )
1894+ {
1895+ Uint64 lsn = undo->m_lsn ;
1896+ jam ();
1897+ jamLine (lsn & 0xFFFF );
1898+ jamLine ((lsn >> 16 ) & 0xFFFF );
1899+ jamLine ((lsn >> 32 ) & 0xFFFF );
1900+ jamLine ((lsn >> 48 ) & 0xFFFF );
1901+ ndbrequire (false );
1902+ }
18871903 const Disk_undo::Free *free = (const Disk_undo::Free*)undo->m_ptr ;
18881904 const Uint32* src= free->m_data ;
18891905 memcpy (ptr, src, 4 * len);
0 commit comments