[CP] Fix: When removing the thread lock to acquire the session
This commit is contained in:
		@ -6500,16 +6500,17 @@ int ObExecEnv::store(ObBasicSessionInfo &session)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void ObBasicSessionInfo::on_get_session()
 | 
					void ObBasicSessionInfo::on_get_session()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  LockGuard lock_guard(thread_data_mutex_);
 | 
					 | 
				
			||||||
  const char *str = lbt();
 | 
					  const char *str = lbt();
 | 
				
			||||||
  int len = STRLEN(str);
 | 
					  int len = STRLEN(str);
 | 
				
			||||||
  if (sess_bt_buff_pos_ + len + 2 < MAX_SESS_BT_BUFF_SIZE) {
 | 
					  int pos = sess_bt_buff_pos_;
 | 
				
			||||||
    MEMCPY(sess_bt_buff_ + sess_bt_buff_pos_, str, len);
 | 
					  if (pos + len + 2 < MAX_SESS_BT_BUFF_SIZE) {
 | 
				
			||||||
    sess_bt_buff_pos_ += len;
 | 
					    MEMCPY(sess_bt_buff_ + pos, str, len);
 | 
				
			||||||
    sess_bt_buff_[sess_bt_buff_pos_] = ';';
 | 
					    pos += len;
 | 
				
			||||||
    sess_bt_buff_pos_ += 1;
 | 
					    sess_bt_buff_[pos] = ';';
 | 
				
			||||||
    sess_bt_buff_[sess_bt_buff_pos_] = '\0';
 | 
					    pos += 1;
 | 
				
			||||||
 | 
					    sess_bt_buff_[pos] = '\0';
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  sess_bt_buff_pos_ = pos;
 | 
				
			||||||
  (void)ATOMIC_AAF(&sess_ref_cnt_, 1);
 | 
					  (void)ATOMIC_AAF(&sess_ref_cnt_, 1);
 | 
				
			||||||
  (void)ATOMIC_AAF(&sess_ref_seq_, 1);
 | 
					  (void)ATOMIC_AAF(&sess_ref_seq_, 1);
 | 
				
			||||||
  LOG_INFO("on get session", KP(this), K(sess_ref_cnt_), K(sess_ref_seq_),
 | 
					  LOG_INFO("on get session", KP(this), K(sess_ref_cnt_), K(sess_ref_seq_),
 | 
				
			||||||
@ -6518,7 +6519,6 @@ void ObBasicSessionInfo::on_get_session()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void ObBasicSessionInfo::on_revert_session()
 | 
					void ObBasicSessionInfo::on_revert_session()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  LockGuard lock_guard(thread_data_mutex_);
 | 
					 | 
				
			||||||
  int32_t v = ATOMIC_AAF(&sess_ref_cnt_, -1);
 | 
					  int32_t v = ATOMIC_AAF(&sess_ref_cnt_, -1);
 | 
				
			||||||
  if (v <= 0) {
 | 
					  if (v <= 0) {
 | 
				
			||||||
    sess_bt_buff_pos_ = 0;
 | 
					    sess_bt_buff_pos_ = 0;
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user