ndb -

  Fix error handling when out of diskspace
parent 79a275fe
...@@ -1382,8 +1382,9 @@ int Dbtup::handleInsertReq(Signal* signal, ...@@ -1382,8 +1382,9 @@ int Dbtup::handleInsertReq(Signal* signal,
regOperPtr.p->userpointer, regOperPtr.p->userpointer,
&regOperPtr.p->m_tuple_location); &regOperPtr.p->m_tuple_location);
((Tuple_header*)ptr)->m_operation_ptr_i= regOperPtr.i; base = (Tuple_header*)ptr;
((Tuple_header*)ptr)->m_header_bits= Tuple_header::ALLOC | base->m_operation_ptr_i= regOperPtr.i;
base->m_header_bits= Tuple_header::ALLOC |
(varsize ? Tuple_header::CHAINED_ROW : 0); (varsize ? Tuple_header::CHAINED_ROW : 0);
regOperPtr.p->m_tuple_location.m_page_no = real_page_id; regOperPtr.p->m_tuple_location.m_page_no = real_page_id;
} }
...@@ -1471,7 +1472,7 @@ int Dbtup::handleInsertReq(Signal* signal, ...@@ -1471,7 +1472,7 @@ int Dbtup::handleInsertReq(Signal* signal,
size_change_error: size_change_error:
jam(); jam();
terrorCode = ZMEM_NOMEM_ERROR; terrorCode = ZMEM_NOMEM_ERROR;
goto disk_prealloc_error; goto exit_error;
undo_buffer_error: undo_buffer_error:
jam(); jam();
...@@ -1505,9 +1506,13 @@ update_error: ...@@ -1505,9 +1506,13 @@ update_error:
regOperPtr.p->op_struct.in_active_list = false; regOperPtr.p->op_struct.in_active_list = false;
regOperPtr.p->m_tuple_location.setNull(); regOperPtr.p->m_tuple_location.setNull();
} }
disk_prealloc_error: exit_error:
tupkeyErrorLab(signal); tupkeyErrorLab(signal);
return -1; return -1;
disk_prealloc_error:
base->m_header_bits |= Tuple_header::FREED;
goto exit_error;
} }
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
......
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