support glibc_maloc alloc succeed when tenant reach limit

This commit is contained in:
tushicheng
2023-06-30 10:24:28 +00:00
committed by ob-robot
parent 4e0a02cc9a
commit 8e4046c707
3 changed files with 18 additions and 9 deletions

View File

@ -25,6 +25,18 @@ thread_local ObMemAttr ObMallocHookAttrGuard::tl_mem_attr(OB_SERVER_TENANT_ID,
"glibc_malloc", "glibc_malloc",
ObCtxIds::GLIBC); ObCtxIds::GLIBC);
ObMallocHookAttrGuard::ObMallocHookAttrGuard(const ObMemAttr& attr)
: old_attr_(tl_mem_attr)
{
tl_mem_attr = attr;
tl_mem_attr.ctx_id_ = ObCtxIds::GLIBC;
}
ObMallocHookAttrGuard::~ObMallocHookAttrGuard()
{
tl_mem_attr = old_attr_;
}
bool ObLabel::operator==(const ObLabel &other) const bool ObLabel::operator==(const ObLabel &other) const
{ {
bool bret = false; bool bret = false;

View File

@ -593,15 +593,8 @@ private:
class ObMallocHookAttrGuard class ObMallocHookAttrGuard
{ {
public: public:
ObMallocHookAttrGuard(const ObMemAttr& attr) ObMallocHookAttrGuard(const ObMemAttr& attr);
: old_attr_(tl_mem_attr) ~ObMallocHookAttrGuard();
{
tl_mem_attr = attr;
}
~ObMallocHookAttrGuard()
{
tl_mem_attr = old_attr_;
}
static ObMemAttr get_tl_mem_attr() static ObMemAttr get_tl_mem_attr()
{ {
return tl_mem_attr; return tl_mem_attr;

View File

@ -62,6 +62,10 @@ void *ob_malloc_retry(size_t size)
ObMemAttr attr = ObMallocHookAttrGuard::get_tl_mem_attr(); ObMemAttr attr = ObMallocHookAttrGuard::get_tl_mem_attr();
SET_USE_500(attr); SET_USE_500(attr);
ptr = ob_malloc(size, attr); ptr = ob_malloc(size, attr);
if (OB_ISNULL(ptr)) {
attr.tenant_id_ = OB_SERVER_TENANT_ID;
ptr = ob_malloc(size, attr);
}
if (OB_ISNULL(ptr)) { if (OB_ISNULL(ptr)) {
::usleep(10000); // 10ms ::usleep(10000); // 10ms
} }