[CP] Fix transfer handler work before standby swith to primary
This commit is contained in:
		@ -397,11 +397,18 @@ int ObTransferHandler::check_self_is_leader_(bool &is_leader)
 | 
				
			|||||||
  ObRole role = ObRole::INVALID_ROLE;
 | 
					  ObRole role = ObRole::INVALID_ROLE;
 | 
				
			||||||
  int64_t proposal_id = 0;
 | 
					  int64_t proposal_id = 0;
 | 
				
			||||||
  const uint64_t tenant_id = MTL_ID();
 | 
					  const uint64_t tenant_id = MTL_ID();
 | 
				
			||||||
 | 
					  bool is_primary_tenant = true;
 | 
				
			||||||
  is_leader = false;
 | 
					  is_leader = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!is_inited_) {
 | 
					  if (!is_inited_) {
 | 
				
			||||||
    ret = OB_NOT_INIT;
 | 
					    ret = OB_NOT_INIT;
 | 
				
			||||||
    LOG_WARN("transfer handler do not init", K(ret));
 | 
					    LOG_WARN("transfer handler do not init", K(ret));
 | 
				
			||||||
 | 
					  } else if (OB_FAIL(ObStorageHAUtils::check_is_primary_tenant(tenant_id, is_primary_tenant))) {
 | 
				
			||||||
 | 
					    //Setting the tenant as the primary tenant from the standby tenant and changing the leader attribute of palf are not atomic.
 | 
				
			||||||
 | 
					    //The attributes of palf will change first, and then the attributes of the tenant will change.
 | 
				
			||||||
 | 
					    LOG_WARN("failed to check is primary tenant", K(ret), K(tenant_id));
 | 
				
			||||||
 | 
					  } else if (!is_primary_tenant) {
 | 
				
			||||||
 | 
					    is_leader = false;
 | 
				
			||||||
  } else if (OB_FAIL(ls_->get_log_handler()->get_role(role, proposal_id))) {
 | 
					  } else if (OB_FAIL(ls_->get_log_handler()->get_role(role, proposal_id))) {
 | 
				
			||||||
    LOG_WARN("failed to get role", K(ret), KPC(ls_));
 | 
					    LOG_WARN("failed to get role", K(ret), KPC(ls_));
 | 
				
			||||||
  } else if (is_strong_leader(role)) {
 | 
					  } else if (is_strong_leader(role)) {
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user