error detail for connection errors

This commit is contained in:
Jan Prochazka
2021-04-25 09:00:11 +02:00
parent 41d85d4117
commit 08692dc63f
3 changed files with 54 additions and 7 deletions

View File

@@ -2,6 +2,25 @@ const childProcessChecker = require('../utility/childProcessChecker');
const requireEngineDriver = require('../utility/requireEngineDriver');
const connectUtility = require('../utility/connectUtility');
const { handleProcessCommunication } = require('../utility/processComm');
const _ = require('lodash');
function pickSafeConnectionInfo(connection) {
return _.mapValues(connection, (v, k) => {
if (k == 'engine' || k == 'port' || k == 'authType' || k == 'sshMode' || k == 'passwordMode') return v;
if (v === null || v === true || v === false) return v;
if (v) return '***';
return undefined;
});
}
const formatErrorDetail = (e, connection) => `${e.stack}
Error JSON: ${JSON.stringify(e, undefined, 2)}
Connection: ${JSON.stringify(pickSafeConnectionInfo(connection), undefined, 2)}
Platform: ${process.platform}
`;
function start() {
childProcessChecker();
@@ -14,7 +33,11 @@ function start() {
process.send({ msgtype: 'connected', ...res });
} catch (e) {
console.error(e);
process.send({ msgtype: 'error', error: e.message });
process.send({
msgtype: 'error',
error: e.message,
detail: formatErrorDetail(e, connection),
});
}
});
}

View File

@@ -12,8 +12,10 @@
import FormFieldTemplateLarge from '../forms/FormFieldTemplateLarge.svelte';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal, closeModal } from './modalTools';
import { closeCurrentModal, closeModal, showModal } from './modalTools';
import createRef from '../utility/createRef';
import Link from '../elements/Link.svelte';
import ErrorMessageModal from './ErrorMessageModal.svelte';
export let connection;
@@ -92,6 +94,16 @@
<div class="error-result">
Connect failed: <FontIcon icon="img error" />
{sqlConnectResult.error}
<Link
onClick={() =>
showModal(ErrorMessageModal, {
message: sqlConnectResult.detail,
showAsCode: true,
title: 'Database connection error',
})}
>
Show detail
</Link>
</div>
{/if}
{#if isTesting}

View File

@@ -9,18 +9,25 @@
export let title = 'Error';
export let message;
export let showAsCode = false;
</script>
<FormProvider>
<ModalBase {...$$restProps}>
<div slot="header">{title}</div>
<div class="wrapper">
<div class="icon">
<FontIcon icon="img error" />
{#if showAsCode}
<pre>{message}</pre>
{:else}
<div class="wrapper">
<div class="icon">
<FontIcon icon="img error" />
</div>
<div>
{message}
</div>
</div>
{message}
</div>
{/if}
<div slot="footer">
<FormSubmit value="Close" on:click={closeCurrentModal} />
@@ -38,4 +45,9 @@
margin-right: 10px;
font-size: 20pt;
}
pre {
max-height: calc(100vh - 300px);
overflow-y: auto;
}
</style>