fix clog return code retry
This commit is contained in:
		 Charles0429
					Charles0429
				
			
				
					committed by
					
						 wangzelin.wzl
						wangzelin.wzl
					
				
			
			
				
	
			
			
			 wangzelin.wzl
						wangzelin.wzl
					
				
			
						parent
						
							3772f41232
						
					
				
				
					commit
					f72d873722
				
			| @ -771,3 +771,11 @@ int ObDDLUtil::ddl_get_tablet( | ||||
|   } | ||||
|   return ret; | ||||
| } | ||||
|  | ||||
| bool ObDDLUtil::need_remote_write(const int ret_code) | ||||
| { | ||||
|   return OB_NOT_MASTER == ret_code | ||||
|     || OB_NOT_RUNNING == ret_code | ||||
|     || OB_LS_LOCATION_LEADER_NOT_EXIST == ret_code | ||||
|     || OB_EAGAIN == ret_code; | ||||
| } | ||||
|  | ||||
| @ -274,6 +274,7 @@ public: | ||||
|     return OB_TRY_LOCK_ROW_CONFLICT == ret || OB_NOT_MASTER == ret || OB_TIMEOUT == ret | ||||
|            || OB_EAGAIN == ret || OB_LS_LOCATION_LEADER_NOT_EXIST == ret; | ||||
|   } | ||||
|   static bool need_remote_write(const int ret_code); | ||||
|  | ||||
| private: | ||||
|   static int generate_column_name_str( | ||||
|  | ||||
| @ -656,6 +656,10 @@ int ObDDLRedoLogWriter::write_ddl_start_log(ObDDLKvMgrHandle &ddl_kv_mgr_handle, | ||||
|                                         lsn, | ||||
|                                         log_ts))) { | ||||
|     LOG_WARN("fail to submit ddl start log", K(ret), K(buffer_size)); | ||||
|     if (ObDDLUtil::need_remote_write(ret)) { | ||||
|       ret = OB_NOT_MASTER; | ||||
|       LOG_INFO("overwrite return to OB_NOT_MASTER"); | ||||
|     } | ||||
|   } else { | ||||
|     ObDDLClogCb *tmp_cb = cb; | ||||
|     cb = nullptr; | ||||
| @ -996,7 +1000,7 @@ int ObDDLSSTableRedoWriter::write_redo_log(const ObDDLMacroBlockRedoInfo &redo_i | ||||
|     LOG_WARN("allocate memory failed", K(ret), K(BUF_SIZE)); | ||||
|   } else if (!remote_write_) { | ||||
|     if (OB_FAIL(ObDDLMacroBlockRedoWriter::write_macro_redo(redo_info, ls->get_ls_id(), ls->get_log_handler(), macro_block_id, buffer_, ddl_redo_handle_))) { | ||||
|       if (need_remote_write(ret)) { | ||||
|       if (ObDDLUtil::need_remote_write(ret)) { | ||||
|         if (OB_FAIL(switch_to_remote_write())) { | ||||
|           LOG_WARN("fail to switch to remote write", K(ret)); | ||||
|         } | ||||
| @ -1073,7 +1077,7 @@ int ObDDLSSTableRedoWriter::write_prepare_log(const ObITable::TableKey &table_ke | ||||
|     LOG_ERROR("ls should not be null", K(ret), K(table_key)); | ||||
|   } else if (!remote_write_) { | ||||
|     if (OB_FAIL(ObDDLRedoLogWriter::get_instance().write_ddl_finish_log(log, ObDDLClogType::DDL_PREPARE_LOG, ls->get_log_handler(), handle))) { | ||||
|       if (need_remote_write(ret)) { | ||||
|       if (ObDDLUtil::need_remote_write(ret)) { | ||||
|         if (OB_FAIL(switch_to_remote_write())) { | ||||
|           LOG_WARN("fail to switch to remote write", K(ret), K(table_key)); | ||||
|         } | ||||
| @ -1127,7 +1131,7 @@ int ObDDLSSTableRedoWriter::write_commit_log(const ObITable::TableKey &table_key | ||||
|     LOG_ERROR("ls should not be null", K(ret), K(table_key)); | ||||
|   } else if (!remote_write_) { | ||||
|     if (OB_FAIL(ObDDLRedoLogWriter::get_instance().write_ddl_finish_log(log, ObDDLClogType::DDL_COMMIT_LOG, ls->get_log_handler(), handle))) { | ||||
|       if (need_remote_write(ret)) { | ||||
|       if (ObDDLUtil::need_remote_write(ret)) { | ||||
|         if (OB_FAIL(switch_to_remote_write())) { | ||||
|           LOG_WARN("fail to switch to remote write", K(ret), K(table_key)); | ||||
|         } | ||||
| @ -1154,13 +1158,6 @@ int ObDDLSSTableRedoWriter::write_commit_log(const ObITable::TableKey &table_key | ||||
|   return ret; | ||||
| } | ||||
|  | ||||
| bool ObDDLSSTableRedoWriter::need_remote_write(int ret_code) | ||||
| { | ||||
|   return OB_NOT_MASTER == ret_code | ||||
|     || OB_NOT_RUNNING == ret_code | ||||
|     || OB_LS_LOCATION_LEADER_NOT_EXIST == ret_code; | ||||
| } | ||||
|  | ||||
| int ObDDLSSTableRedoWriter::switch_to_remote_write() | ||||
| { | ||||
|   int ret = OB_SUCCESS; | ||||
|  | ||||
| @ -259,7 +259,6 @@ public: | ||||
|   OB_INLINE void set_start_log_ts(const int64_t start_log_ts) { ATOMIC_SET(&start_log_ts_, start_log_ts); } | ||||
|   OB_INLINE int64_t get_start_log_ts() const { return ATOMIC_LOAD(&start_log_ts_); } | ||||
| private: | ||||
|   bool need_remote_write(int ret_code); | ||||
|   int switch_to_remote_write(); | ||||
| private: | ||||
|   bool is_inited_; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user