diff --git a/src/rootserver/ob_ddl_service.cpp b/src/rootserver/ob_ddl_service.cpp index eed9ec1697294ed1078eb896d3a8d78184865523..e68028422b3faa966dd9e1b29d42d3e91a592d1a 100755 --- a/src/rootserver/ob_ddl_service.cpp +++ b/src/rootserver/ob_ddl_service.cpp @@ -2259,8 +2259,7 @@ int ObDDLService::create_tables_in_trans(const bool if_not_exist, const ObString false, // is index old_view_schema))) { LOG_WARN("failed to get table schema", K(view_name), K(ret)); - } - if (OB_ISNULL(old_view_schema)) { + } else if (OB_ISNULL(old_view_schema)) { ret = OB_SUCCESS; } else { if (OB_FAIL(ddl_operator.drop_table(*old_view_schema, trans))) { diff --git a/src/rootserver/ob_schema_history_recycler.cpp b/src/rootserver/ob_schema_history_recycler.cpp index db5ae34e52468f87356d69865fc32396c3b1bdee..a0257a007d342f26e921172c871d9dc312e79be7 100644 --- a/src/rootserver/ob_schema_history_recycler.cpp +++ b/src/rootserver/ob_schema_history_recycler.cpp @@ -184,15 +184,17 @@ void ObSchemaHistoryRecycler::run3() int ret = OB_SUCCESS; if (!inited_) { ret = OB_NOT_INIT; - LOG_WARN("not inited", K(ret)); + LOG_WARN("not inited", KR(ret)); + } else if (OB_FAIL(recycle_schema_versions_.clear())) { + LOG_WARN("fail to clear recycle schema version map", KR(ret)); } else { while (!stop_) { ObCurTraceId::init(GCTX.self_addr_); LOG_INFO("[SCHEMA_RECYCLE] recycle schema history start"); if (OB_FAIL(try_recycle_schema_history())) { - LOG_WARN("fail to recycle schema history", K(ret)); + LOG_WARN("fail to recycle schema history", KR(ret)); } - LOG_INFO("[SCHEMA_RECYCLE] recycle schema history finish", K(ret)); + LOG_INFO("[SCHEMA_RECYCLE] recycle schema history finish", KR(ret)); // retry until stopped, reset ret to OB_SUCCESS ret = OB_SUCCESS; idle(); diff --git a/src/share/schema/ob_multi_version_schema_service.cpp b/src/share/schema/ob_multi_version_schema_service.cpp index 6bd6666cb65d0515846524d891b2eb8fef201260..75d544629425b3b71eeb0b9d2b6fd32216d8700a 100644 --- a/src/share/schema/ob_multi_version_schema_service.cpp +++ b/src/share/schema/ob_multi_version_schema_service.cpp @@ -3975,14 +3975,14 @@ int ObMultiVersionSchemaService::try_gc_existed_tenant_schema_mgr() ObArray tenant_ids; if (!check_inner_stat()) { ret = OB_INNER_STAT_ERROR; - LOG_WARN("inner stat error", K(ret)); + LOG_WARN("inner stat error", KR(ret)); } else if (!is_sys_full_schema()) { ret = OB_SCHEMA_EAGAIN; - LOG_WARN("full schema is not ready, cann't get fallback schema guard", K(ret)); + LOG_WARN("full schema is not ready, cann't get fallback schema guard", KR(ret)); } else if (OB_FAIL(get_tenant_schema_guard(OB_SYS_TENANT_ID, schema_guard))) { - LOG_WARN("get schema guard failed ", K(ret)); + LOG_WARN("get schema guard failed ", KR(ret)); } else if (OB_FAIL(schema_guard.get_tenant_ids(tenant_ids))) { - LOG_WARN("fail to get tenant ids", K(ret)); + LOG_WARN("fail to get tenant ids", KR(ret)); } else { bool is_schema_splited = GCTX.is_schema_splited(); ObSchemaMemMgr* mem_mgr = NULL; @@ -3992,7 +3992,7 @@ int ObMultiVersionSchemaService::try_gc_existed_tenant_schema_mgr() mem_mgr = &mem_mgr_; schema_mgr_cache = &schema_mgr_cache_; if (OB_FAIL(try_gc_another_allocator(tenant_id, mem_mgr, schema_mgr_cache))) { - LOG_WARN("fail to gc another allocator", K(ret)); + LOG_WARN("fail to gc another allocator", KR(ret)); } else if (ObSchemaService::g_liboblog_mode_) { // liboblog/agentserver do nothing } else if (OB_FAIL(try_gc_tenant_schema_mgr_for_fallback(tenant_id, false))) { @@ -4004,16 +4004,22 @@ int ObMultiVersionSchemaService::try_gc_existed_tenant_schema_mgr() const uint64_t tenant_id = tenant_ids.at(i); if (NULL == (schema_store = schema_store_map_.get(tenant_id))) { ret = OB_ENTRY_NOT_EXIST; - LOG_WARN("fail to get schema_store", K(ret)); + LOG_WARN("fail to get schema_store", KR(ret)); } else if (FALSE_IT(schema_mgr_cache = &schema_store->schema_mgr_cache_)) { } else if (OB_FAIL(mem_mgr_map_.get_refactored(tenant_id, mem_mgr))) { - LOG_WARN("fail to get mem mgr", K(ret), K(tenant_id)); - } else if (OB_FAIL(try_gc_another_allocator(tenant_id, mem_mgr, schema_mgr_cache))) { - LOG_WARN("fail to gc another allocator", K(ret), K(tenant_id)); - } else if (ObSchemaService::g_liboblog_mode_) { - // liboblog/agentserver do nothing - } else if (OB_FAIL(try_gc_tenant_schema_mgr_for_fallback(tenant_id))) { - LOG_WARN("fail to gc tenant schema mgr for fallback", KR(ret), K(tenant_id)); + LOG_WARN("fail to get mem mgr", KR(ret), K(tenant_id)); + } else { + // ignore failure in eache scene + // 1. another allocator for schema refresh + if (OB_FAIL(try_gc_another_allocator(tenant_id, mem_mgr, schema_mgr_cache))) { + LOG_WARN("fail to gc another allocator", KR(ret), K(tenant_id)); + } + // 2. schema fallback + if (ObSchemaService::g_liboblog_mode_) { + // liboblog/agentserver do nothing + } else if (OB_FAIL(try_gc_tenant_schema_mgr_for_fallback(tenant_id))) { + LOG_WARN("fail to gc tenant schema mgr for fallback", KR(ret), K(tenant_id)); + } } } }