[CP] to issue<2024122500106636323>:fix 4016 when hit disk cache of system package

This commit is contained in:
hanr881 2025-01-02 19:45:37 +00:00 committed by ob-robot
parent e553c75a18
commit b148d16cd5
3 changed files with 16 additions and 8 deletions

View File

@ -499,7 +499,7 @@ int ObPLCompiler::compile(
lib::ObMallocHookAttrGuard malloc_guard(lib::ObMemAttr(MTL_ID(), GET_PL_MOD_STRING(OB_PL_CODE_GEN)));
ObRoutinePersistentInfo::ObPLOperation op = ObRoutinePersistentInfo::ObPLOperation::NONE;
ObRoutinePersistentInfo routine_storage(
MTL_ID(), routine.get_database_id(), session_info_.get_database_id(), func_ast.get_id());
MTL_ID(), routine.get_database_id(), session_info_.get_database_id(), func_ast.get_id(), routine.get_tenant_id());
bool exist_same_name_obj_with_public_synonym = false;
OZ (ObRoutinePersistentInfo::has_same_name_dependency_with_public_synonym(schema_guard_,
func_ast.get_dependency_table(),
@ -776,7 +776,8 @@ int ObPLCompiler::generate_package(const ObString &exec_env, ObPLPackageAST &pac
ObRoutinePersistentInfo routine_storage(MTL_ID(),
session_info_.get_database_id(),
session_info_.get_database_id(),
package.get_id());
package.get_id(),
get_tenant_id_by_object_id(package.get_id()));
ObRoutinePersistentInfo::ObPLOperation op = ObRoutinePersistentInfo::ObPLOperation::NONE;
bool exist_same_name_obj_with_public_synonym = false;
OZ (ObRoutinePersistentInfo::has_same_name_dependency_with_public_synonym(schema_guard_,

View File

@ -569,8 +569,11 @@ int ObRoutinePersistentInfo::read_dll_from_disk(ObSQLSessionInfo *session_info,
if (OB_SUCC(ret)) {
bool match = false;
int64_t tenant_schema_version = OB_INVALID_VERSION;
if (OB_FAIL(schema_guard.get_schema_version(tenant_id_, tenant_schema_version))) {
LOG_WARN("fail to get schema version");
if (OB_INVALID_ID == tenant_id_belongs_) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected tenant id", K(ret));
} else if (OB_FAIL(schema_guard.get_schema_version(tenant_id_belongs_, tenant_schema_version))) {
LOG_WARN("fail to get schema version", K(ret), K(tenant_id_belongs_));
} else if (merge_version == tenant_schema_version) {
match = true;
op = ObRoutinePersistentInfo::ObPLOperation::NONE;
@ -592,7 +595,7 @@ int ObRoutinePersistentInfo::read_dll_from_disk(ObSQLSessionInfo *session_info,
int8_t level = 0;
int16_t id = 0;
if (OB_FAIL(decode_dll(*session_info, schema_guard, exec_env, unit_ast, unit, binary.ptr(), binary.length(), pos, level, id))) {
LOG_WARN("fail to decode dll", K(ret), K(level), K(id));
LOG_WARN("fail to decode dll", K(ret), K(level), K(id), K(merge_version), K(tenant_schema_version));
} else if (0 != level || 0 != id) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("fail to decode dll", K(ret), K(level), K(id));

View File

@ -80,12 +80,14 @@ public:
#else
arch_type_(ARCH_TYPE_DEF[ObPLArchType::OB_X86_ARCH_TYPE]),
#endif
allocator_(ObMemAttr(MTL_ID() == OB_INVALID_TENANT_ID ? OB_SYS_TENANT_ID : MTL_ID(), GET_PL_MOD_STRING(OB_PL_JIT)))
allocator_(ObMemAttr(MTL_ID() == OB_INVALID_TENANT_ID ? OB_SYS_TENANT_ID : MTL_ID(), GET_PL_MOD_STRING(OB_PL_JIT))),
tenant_id_belongs_(OB_INVALID_ID)
{}
ObRoutinePersistentInfo(uint64_t tenant_id,
uint64_t database_id,
uint64_t compile_db_id,
uint64_t key_id)
uint64_t key_id,
uint64_t tenant_id_belongs)
: tenant_id_(tenant_id),
database_id_(database_id),
compile_db_id_(compile_db_id),
@ -95,7 +97,8 @@ public:
#else
arch_type_(ARCH_TYPE_DEF[ObPLArchType::OB_X86_ARCH_TYPE]),
#endif
allocator_(ObMemAttr(tenant_id_, GET_PL_MOD_STRING(OB_PL_JIT)))
allocator_(ObMemAttr(tenant_id_, GET_PL_MOD_STRING(OB_PL_JIT))),
tenant_id_belongs_(tenant_id_belongs)
{}
int64_t get_head_size() { return 1 + 1 + 2 + 2;/* 8bit flags + 8bit level + 8bit id + 8bit nums*/ }
@ -166,6 +169,7 @@ private:
ObString arch_type_;
ObArenaAllocator allocator_;
uint64_t tenant_id_belongs_;
};
}