diff --git a/deps/oblib/src/rpc/obrpc/ob_rpc_packet_list.h b/deps/oblib/src/rpc/obrpc/ob_rpc_packet_list.h index 1619a2e49..c35f90d77 100644 --- a/deps/oblib/src/rpc/obrpc/ob_rpc_packet_list.h +++ b/deps/oblib/src/rpc/obrpc/ob_rpc_packet_list.h @@ -1062,6 +1062,10 @@ PCODE_DEF(OB_DIRECT_LOAD_CONTROL, 0x1604) // PCODE_DEF(OB_FLUSH_LS_ARCHIVE, 0x1606) // PCODE_DEF(OB_ACQUIRE_LS_TRANSFER_SCN, 0x1607) +// kill client session. +// PCODE_DEF(OB_KILL_CLIENT_SESSION, 0x1608) +// obtain client session create time. +// PCODE_DEF(OB_CLIENT_SESSION_CONNECT_TIME, 0x1609) // create materialized view log // PCODE_DEF(OB_CREATE_MLOG, 0x1608) diff --git a/src/observer/ob_rpc_processor_simple.h b/src/observer/ob_rpc_processor_simple.h index a0ea066c3..68d8ec9b1 100644 --- a/src/observer/ob_rpc_processor_simple.h +++ b/src/observer/ob_rpc_processor_simple.h @@ -256,6 +256,8 @@ OB_DEFINE_PROCESSOR_S(Srv, OB_GET_LS_REPLAYED_SCN, ObRpcGetLSReplayedScnP); OB_DEFINE_PROCESSOR_S(Srv, OB_TABLE_TTL, ObTenantTTLP); OB_DEFINE_PROCESSOR_S(Srv, OB_HA_UNLOCK_MEMBER_LIST, ObAdminUnlockMemberListP); OB_DEFINE_PROCESSOR_S(Srv, OB_TABLET_MAJOR_FREEZE, ObRpcTabletMajorFreezeP); +// OB_DEFINE_PROCESSOR_S(Srv, OB_KILL_CLIENT_SESSION, ObKillClientSessionP); +// OB_DEFINE_PROCESSOR_S(Srv, OB_CLIENT_SESSION_CONNECT_TIME, ObClientSessionConnectTimeP); } // end of namespace observer } // end of namespace oceanbase diff --git a/src/observer/ob_srv_xlator_partition.cpp b/src/observer/ob_srv_xlator_partition.cpp index 29e5a8e66..660402769 100644 --- a/src/observer/ob_srv_xlator_partition.cpp +++ b/src/observer/ob_srv_xlator_partition.cpp @@ -305,4 +305,8 @@ void oceanbase::observer::init_srv_xlator_for_others(ObSrvRpcXlator *xlator) { RPC_PROCESSOR(ObWrSyncUserSubmitSnapshotTaskP, gctx_); RPC_PROCESSOR(ObWrSyncUserModifySettingsTaskP, gctx_); + // kill client session + // RPC_PROCESSOR(ObKillClientSessionP, gctx_); + // client session create time + // RPC_PROCESSOR(ObClientSessionConnectTimeP, gctx_); } diff --git a/src/observer/virtual_table/ob_all_virtual_session_info.cpp b/src/observer/virtual_table/ob_all_virtual_session_info.cpp index 2e4218634..4c30f6371 100644 --- a/src/observer/virtual_table/ob_all_virtual_session_info.cpp +++ b/src/observer/virtual_table/ob_all_virtual_session_info.cpp @@ -296,6 +296,10 @@ int ObAllVirtualSessionInfo::FillScanner::operator()( } break; } + case USER_CLIENT_PORT: { + cur_row_->cells_[cell_idx].set_int(0); + break; + } default: { ret = OB_ERR_UNEXPECTED; SERVER_LOG(WARN, "invalid column id", K(ret), K(cell_idx), diff --git a/src/observer/virtual_table/ob_all_virtual_session_info.h b/src/observer/virtual_table/ob_all_virtual_session_info.h index 38b747e6f..46c0b039f 100644 --- a/src/observer/virtual_table/ob_all_virtual_session_info.h +++ b/src/observer/virtual_table/ob_all_virtual_session_info.h @@ -61,7 +61,8 @@ private: TRACE_ID, REF_COUNT, BACKTRACE, - TRANS_STATE + TRANS_STATE, + USER_CLIENT_PORT }; class FillScanner { diff --git a/src/observer/virtual_table/ob_show_processlist.cpp b/src/observer/virtual_table/ob_show_processlist.cpp index c65d5cfd4..7a41813b3 100644 --- a/src/observer/virtual_table/ob_show_processlist.cpp +++ b/src/observer/virtual_table/ob_show_processlist.cpp @@ -441,6 +441,10 @@ bool ObShowProcesslist::FillScanner::operator()(sql::ObSQLSessionMgr::Key key, O cur_row_->cells_[cell_idx].set_int(sess_info->get_out_bytes()); break; } + case USER_CLIENT_PORT: { + cur_row_->cells_[cell_idx].set_int(0); + break; + } default: { ret = OB_ERR_UNEXPECTED; SERVER_LOG(WARN, "invalid column id", K(ret), K(cell_idx), diff --git a/src/observer/virtual_table/ob_show_processlist.h b/src/observer/virtual_table/ob_show_processlist.h index 151e2c87a..349aeab5a 100644 --- a/src/observer/virtual_table/ob_show_processlist.h +++ b/src/observer/virtual_table/ob_show_processlist.h @@ -77,7 +77,8 @@ private: VIP, VPORT, IN_BYTES, - OUT_BYTES + OUT_BYTES, + USER_CLIENT_PORT }; class FillScanner { diff --git a/src/rootserver/ob_rs_async_rpc_proxy.h b/src/rootserver/ob_rs_async_rpc_proxy.h index 19cffa609..01592d10d 100644 --- a/src/rootserver/ob_rs_async_rpc_proxy.h +++ b/src/rootserver/ob_rs_async_rpc_proxy.h @@ -78,6 +78,7 @@ RPC_F(obrpc::OB_NOTIFY_SWITCH_LEADER, obrpc::ObNotifySwitchLeaderArg, obrpc::ObSrvRpcProxy::ObRpc::Response, ObNotifySwitchLeaderProxy); RPC_F(obrpc::OB_UPDATE_TENANT_INFO_CACHE, obrpc::ObUpdateTenantInfoCacheArg, obrpc::ObUpdateTenantInfoCacheRes, ObUpdateTenantInfoCacheProxy); RPC_F(obrpc::OB_BROADCAST_CONSENSUS_VERSION, obrpc::ObBroadcastConsensusVersionArg, obrpc::ObBroadcastConsensusVersionRes, ObBroadcstConsensusVersionProxy); +// RPC_F(obrpc::OB_KILL_CLIENT_SESSION, obrpc::ObKillClientSessionArg, obrpc::ObKillClientSessionRes, ObKillClientSessionProxy); #ifdef OB_BUILD_TDE_SECURITY RPC_F(obrpc::OB_RESTORE_KEY, obrpc::ObRestoreKeyArg, obrpc::ObRestoreKeyResult, ObRestoreKeyProxy); RPC_F(obrpc::OB_SET_ROOT_KEY, obrpc::ObRootKeyArg, obrpc::ObRootKeyResult, ObSetRootKeyProxy); diff --git a/src/share/inner_table/ob_inner_table_schema.10001_10050.cpp b/src/share/inner_table/ob_inner_table_schema.10001_10050.cpp index 528768f54..d31f8e061 100644 --- a/src/share/inner_table/ob_inner_table_schema.10001_10050.cpp +++ b/src/share/inner_table/ob_inner_table_schema.10001_10050.cpp @@ -2022,6 +2022,25 @@ int ObInnerTableSchema::all_virtual_processlist_schema(ObTableSchema &table_sche false, //is_nullable false); //is_autoincrement } + + if (OB_SUCC(ret)) { + ObObj user_client_port_default; + user_client_port_default.set_int(0); + ADD_COLUMN_SCHEMA_T("user_client_port", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false, //is_autoincrement + user_client_port_default, + user_client_port_default); //default_value + } if (OB_SUCC(ret)) { table_schema.get_part_option().set_part_num(1); table_schema.set_part_level(PARTITION_LEVEL_ONE); diff --git a/src/share/inner_table/ob_inner_table_schema.11101_11150.cpp b/src/share/inner_table/ob_inner_table_schema.11101_11150.cpp index 4b2c88192..59a854939 100644 --- a/src/share/inner_table/ob_inner_table_schema.11101_11150.cpp +++ b/src/share/inner_table/ob_inner_table_schema.11101_11150.cpp @@ -2211,6 +2211,25 @@ int ObInnerTableSchema::all_virtual_session_info_schema(ObTableSchema &table_sch true, //is_nullable false); //is_autoincrement } + + if (OB_SUCC(ret)) { + ObObj user_client_port_default; + user_client_port_default.set_int(0); + ADD_COLUMN_SCHEMA_T("user_client_port", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false, //is_autoincrement + user_client_port_default, + user_client_port_default); //default_value + } if (OB_SUCC(ret)) { table_schema.get_part_option().set_part_num(1); table_schema.set_part_level(PARTITION_LEVEL_ONE); diff --git a/src/share/inner_table/ob_inner_table_schema.15001_15050.cpp b/src/share/inner_table/ob_inner_table_schema.15001_15050.cpp index 6f62960a7..5c3815af6 100644 --- a/src/share/inner_table/ob_inner_table_schema.15001_15050.cpp +++ b/src/share/inner_table/ob_inner_table_schema.15001_15050.cpp @@ -8764,6 +8764,21 @@ int ObInnerTableSchema::all_virtual_processlist_ora_schema(ObTableSchema &table_ false, //is_nullable false); //is_autoincrement } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("USER_CLIENT_PORT", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObNumberType, //column_type + CS_TYPE_INVALID, //column_collation_type + 38, //column_length + 38, //column_precision + 0, //column_scale + false, //is_nullable + false); //is_autoincrement + } if (OB_SUCC(ret)) { table_schema.get_part_option().set_part_num(1); table_schema.set_part_level(PARTITION_LEVEL_ONE); diff --git a/src/share/inner_table/ob_inner_table_schema.21201_21250.cpp b/src/share/inner_table/ob_inner_table_schema.21201_21250.cpp index 457b83457..bf03903b1 100644 --- a/src/share/inner_table/ob_inner_table_schema.21201_21250.cpp +++ b/src/share/inner_table/ob_inner_table_schema.21201_21250.cpp @@ -1060,7 +1060,7 @@ int ObInnerTableSchema::gv_ob_processlist_schema(ObTableSchema &table_schema) table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); if (OB_SUCC(ret)) { - if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT SVR_IP, SVR_PORT, SQL_PORT, ID, USER, HOST, DB, TENANT, COMMAND, TIME, TOTAL_TIME, STATE, INFO, PROXY_SESSID, MASTER_SESSID, USER_CLIENT_IP, USER_HOST, RETRY_CNT, RETRY_INFO, SQL_ID, TRANS_ID, THREAD_ID, SSL_CIPHER, TRACE_ID, TRANS_STATE, ACTION, MODULE, CLIENT_INFO, LEVEL, SAMPLE_PERCENTAGE, RECORD_POLICY, LB_VID, LB_VIP, LB_VPORT, IN_BYTES, OUT_BYTES FROM oceanbase.__all_virtual_processlist )__"))) { + if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT SVR_IP, SVR_PORT, SQL_PORT, ID, USER, HOST, DB, TENANT, COMMAND, TIME, TOTAL_TIME, STATE, INFO, PROXY_SESSID, MASTER_SESSID, USER_CLIENT_IP, USER_HOST, RETRY_CNT, RETRY_INFO, SQL_ID, TRANS_ID, THREAD_ID, SSL_CIPHER, TRACE_ID, TRANS_STATE, ACTION, MODULE, CLIENT_INFO, LEVEL, SAMPLE_PERCENTAGE, RECORD_POLICY, LB_VID, LB_VIP, LB_VPORT, IN_BYTES, OUT_BYTES, USER_CLIENT_PORT FROM oceanbase.__all_virtual_processlist )__"))) { LOG_ERROR("fail to set view_definition", K(ret)); } } diff --git a/src/share/inner_table/ob_inner_table_schema_def.py b/src/share/inner_table/ob_inner_table_schema_def.py index e38ba8647..4be373e6a 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -6590,7 +6590,8 @@ def_table_schema( ('lb_vip', 'varchar:MAX_IP_ADDR_LENGTH', 'true'), ('lb_vport', 'int', 'true'), ('in_bytes', 'bigint'), - ('out_bytes', 'bigint') + ('out_bytes', 'bigint'), + ('user_client_port', 'int', 'false', '0') ], partition_columns = ['svr_ip', 'svr_port'], vtable_route_policy = 'distributed', @@ -8885,6 +8886,7 @@ def_table_schema( ('ref_count', 'int'), ('backtrace', 'varchar:16384', 'true', ''), ('trans_state', 'varchar:OB_MAX_TRANS_STATE_LENGTH', 'true'), + ('user_client_port', 'int', 'false', '0') ], partition_columns = ['svr_ip', 'svr_port'], vtable_route_policy = 'distributed', @@ -21814,7 +21816,8 @@ SELECT LB_VIP, LB_VPORT, IN_BYTES, - OUT_BYTES + OUT_BYTES, + USER_CLIENT_PORT FROM oceanbase.__all_virtual_processlist """.replace("\n", " ") ) diff --git a/src/share/ob_errno.def b/src/share/ob_errno.def index 0b4174ca5..af6d65886 100755 --- a/src/share/ob_errno.def +++ b/src/share/ob_errno.def @@ -460,6 +460,8 @@ DEFINE_ERROR(OB_ENCODING_EST_SIZE_OVERFLOW, -4397, -1, "HY000", "Encoding estima DEFINE_ORACLE_ERROR(OB_INVALID_SUB_PARTITION_TYPE, -4398, 1500, "HY000", "It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning", 14020, "this physical attribute may not be specified for a table partition"); DEFINE_ERROR(OB_ERR_UNEXPECTED_UNIT_STATUS, -4399, -1, "HY000", "Unit status is not expected"); DEFINE_ERROR(OB_AUTOINC_CACHE_NOT_EQUAL, -4400, -1, "HY000", "Autoinc cache's autoinc version is not equal to request's autoinc version"); +// DEFINE_ERROR(OB_ERR_KILL_CLIENT_SESSION, -4401, -1, "HY000", "Client Session need be killed"); +// DEFINE_ERROR(OB_ERR_KILL_CLIENT_SESSION_FAILED, -4402, -1, "HY000", "Kill Client Session failed"); //////////////////////////////////////////////////////////////// //error code for root server & server management -4500 ---- -5000 diff --git a/src/share/ob_rpc_struct.h b/src/share/ob_rpc_struct.h index 564b17a4a..85616ea3f 100755 --- a/src/share/ob_rpc_struct.h +++ b/src/share/ob_rpc_struct.h @@ -10174,7 +10174,6 @@ public: int64_t lock_id_; }; - }//end namespace obrpc }//end namespace oceanbase #endif diff --git a/src/share/ob_srv_rpc_proxy.h b/src/share/ob_srv_rpc_proxy.h index 27c262b05..a3ebef794 100755 --- a/src/share/ob_srv_rpc_proxy.h +++ b/src/share/ob_srv_rpc_proxy.h @@ -238,6 +238,8 @@ public: RPC_S(PR5 dispatch_ttl, OB_TABLE_TTL, (obrpc::ObTTLRequestArg), obrpc::ObTTLResponseArg); RPC_S(PR5 admin_unlock_member_list_op, OB_HA_UNLOCK_MEMBER_LIST, (obrpc::ObAdminUnlockMemberListOpArg)); RPC_AP(PR5 tablet_major_freeze, OB_TABLET_MAJOR_FREEZE, (ObTabletMajorFreezeArg), obrpc::Int64); + // RPC_AP(PR5 kill_client_session, OB_KILL_CLIENT_SESSION, (ObKillClientSessionArg), ObKillClientSessionRes); + // RPC_S(PR5 client_session_create_time, OB_CLIENT_SESSION_CONNECT_TIME, (ObClientSessionCreateTimeArg), ObClientSessionCreateTimeRes); }; // end of class ObSrvRpcProxy } // end of namespace rpc