[BUG.FIX] fix load meta obj -4015
This commit is contained in:
		@ -443,14 +443,21 @@ int ObMetaPointerMap<Key, T>::load_and_hook_meta_obj(
 | 
				
			|||||||
          STORAGE_LOG(ERROR, "fail to release object", K(ret), KP(meta_pointer));
 | 
					          STORAGE_LOG(ERROR, "fail to release object", K(ret), KP(meta_pointer));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } else if (OB_UNLIKELY(disk_addr != meta_pointer->get_addr()
 | 
					      } else if (OB_UNLIKELY(disk_addr != meta_pointer->get_addr()
 | 
				
			||||||
 | 
					          || meta_pointer != tmp_ptr_hdl.get_resource_ptr()
 | 
				
			||||||
          || meta_pointer->get_addr() != tmp_ptr_hdl.get_resource_ptr()->get_addr())) {
 | 
					          || meta_pointer->get_addr() != tmp_ptr_hdl.get_resource_ptr()->get_addr())) {
 | 
				
			||||||
        ret = OB_ITEM_NOT_MATCH;
 | 
					        ret = OB_ITEM_NOT_MATCH;
 | 
				
			||||||
        int tmp_ret = OB_SUCCESS;
 | 
					        int tmp_ret = OB_SUCCESS;
 | 
				
			||||||
        if (OB_SUCCESS != (tmp_ret = meta_pointer->release_obj(t))) {
 | 
					        if (OB_SUCCESS != (tmp_ret = meta_pointer->release_obj(t))) {
 | 
				
			||||||
          STORAGE_LOG(ERROR, "fail to release object", K(ret), K(tmp_ret), KP(meta_pointer));
 | 
					          STORAGE_LOG(ERROR, "fail to release object", K(ret), K(tmp_ret), KP(meta_pointer));
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
 | 
					          if (meta_pointer != tmp_ptr_hdl.get_resource_ptr()) {
 | 
				
			||||||
 | 
					            meta_pointer = tmp_ptr_hdl.get_resource_ptr();
 | 
				
			||||||
 | 
					            if (OB_TMP_FAIL(ptr_hdl.assign(tmp_ptr_hdl))) {
 | 
				
			||||||
 | 
					              STORAGE_LOG(WARN, "fail to assign pointer handle", K(ret), K(tmp_ret), K(ptr_hdl), K(tmp_ptr_hdl));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
          if (REACH_TIME_INTERVAL(1000000)) {
 | 
					          if (REACH_TIME_INTERVAL(1000000)) {
 | 
				
			||||||
            STORAGE_LOG(WARN, "disk address change", K(ret), K(disk_addr), KPC(meta_pointer));
 | 
					            STORAGE_LOG(WARN, "disk address or pointer change", K(ret), K(disk_addr), KPC(meta_pointer));
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
@ -573,8 +580,16 @@ int ObMetaPointerMap<Key, T>::get_meta_obj_with_external_memory(
 | 
				
			|||||||
              need_free_obj = true;
 | 
					              need_free_obj = true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          } else if (OB_UNLIKELY(disk_addr != t_ptr->get_addr()
 | 
					          } else if (OB_UNLIKELY(disk_addr != t_ptr->get_addr()
 | 
				
			||||||
 | 
					              || t_ptr != tmp_ptr_hdl.get_resource_ptr()
 | 
				
			||||||
              || t_ptr->get_addr() != tmp_ptr_hdl.get_resource_ptr()->get_addr())) {
 | 
					              || t_ptr->get_addr() != tmp_ptr_hdl.get_resource_ptr()->get_addr())) {
 | 
				
			||||||
            ret = OB_ITEM_NOT_MATCH;
 | 
					            ret = OB_ITEM_NOT_MATCH;
 | 
				
			||||||
 | 
					            if (t_ptr != tmp_ptr_hdl.get_resource_ptr()) {
 | 
				
			||||||
 | 
					              t_ptr = tmp_ptr_hdl.get_resource_ptr();
 | 
				
			||||||
 | 
					              int tmp_ret = OB_SUCCESS;
 | 
				
			||||||
 | 
					              if (OB_TMP_FAIL(ptr_hdl.assign(tmp_ptr_hdl))) {
 | 
				
			||||||
 | 
					                STORAGE_LOG(WARN, "fail to assign pointer handle", K(ret), K(tmp_ret), K(ptr_hdl), K(tmp_ptr_hdl));
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            if (REACH_TIME_INTERVAL(1000000)) {
 | 
					            if (REACH_TIME_INTERVAL(1000000)) {
 | 
				
			||||||
              STORAGE_LOG(WARN, "disk address change", K(ret), K(disk_addr), KPC(t_ptr));
 | 
					              STORAGE_LOG(WARN, "disk address change", K(ret), K(disk_addr), KPC(t_ptr));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user