Fixed an issue where Transaction IDs were not found in session in the Query Tool. #5453

This commit is contained in:
Aditya Toshniwal 2022-12-05 10:48:42 +05:30 committed by GitHub
parent 4ab06b4a2a
commit be011a4f3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 11 deletions

View File

@ -803,7 +803,9 @@ class ServerNode(PGChildNodeView):
shared=server.shared,
user_id=server.user_id,
user=manager.user_info if connected else None,
server_type='pg' # default server type
server_type='pg', # default server type
user_name=server.username,
role=server.role,
)
)

View File

@ -321,6 +321,8 @@ def panel(trans_id):
params['server_name'] = underscore_escape(s.name)
if 'user' not in params:
params['user'] = underscore_escape(s.username)
if 'role' not in params and s.role:
params['role'] = underscore_escape(s.role)
params['layout'] = get_setting('SQLEditor/Layout')
params['macros'] = get_user_macros()
params['is_desktop_mode'] = current_app.PGADMIN_RUNTIME
@ -371,7 +373,7 @@ def initialize_sqleditor(trans_id, sgid, sid, did=None):
kwargs = {
'user': data['user'] if 'user' in data else None,
'role': data['role'] if 'role' in data else None,
'password': None
'password': data['password'] if 'password' in data else None
}
is_error, errmsg, conn_id, version = _init_sqleditor(

View File

@ -89,6 +89,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
current_file: null,
obtaining_conn: true,
connected: false,
connected_once: false,
connection_status: null,
connection_status_msg: '',
params: {
@ -125,7 +126,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
/* Connection status poller */
let pollTime = qtState.preferences.sqleditor.connection_status_fetch_time > 0
&& !qtState.obtaining_conn && qtState.preferences?.sqleditor?.connection_status ?
&& !qtState.obtaining_conn && qtState.connected_once && qtState.preferences?.sqleditor?.connection_status ?
qtState.preferences.sqleditor.connection_status_fetch_time*1000 : -1;
/* No need to poll when the query is executing. Query poller will the txn status */
if(qtState.connection_status === CONNECTION_STATUS.TRANSACTION_STATUS_ACTIVE && qtState.connected) {
@ -241,7 +242,7 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
}
};
const initializeQueryTool = ()=>{
const initializeQueryTool = (password)=>{
let selectedConn = _.find(qtState.connection_list, (c)=>c.is_selected);
let baseUrl = '';
if(qtState.params.is_query_tool) {
@ -262,18 +263,20 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
api.post(baseUrl, qtState.params.is_query_tool ? {
user: qtState.params.user,
role: qtState.params.role,
password: password
} : JSON.stringify(qtState.params.sql_filter))
.then(()=>{
setQtState({
connected: true,
connected_once: true,
obtaining_conn: false,
});
if(!qtState.params.is_query_tool) {
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.TRIGGER_EXECUTION);
}
}).catch((err)=>{
if(err.response?.request?.responseText?.search('Ticket expired') !== -1) {
}).catch((error)=>{
if(error.response?.request?.responseText?.search('Ticket expired') !== -1) {
Kerberos.fetch_ticket()
.then(()=>{
initializeQueryTool();
@ -285,12 +288,23 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
});
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.HANDLE_API_ERROR, kberr);
});
} else if(error?.response?.status == 428) {
connectServerModal(error.response?.data?.result, (passwordData)=>{
initializeQueryTool(passwordData.password);
}, ()=>{
setQtState({
connected: false,
obtaining_conn: false,
connection_status_msg: gettext('Not Connected'),
});
});
} else {
setQtState({
connected: false,
obtaining_conn: false,
});
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.HANDLE_API_ERROR, error);
}
setQtState({
connected: false,
obtaining_conn: false,
});
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.HANDLE_API_ERROR, err);
});
};