diff --git a/packages/api/src/controllers/runners.js b/packages/api/src/controllers/runners.js
index cdaaa36b1..778058f7a 100644
--- a/packages/api/src/controllers/runners.js
+++ b/packages/api/src/controllers/runners.js
@@ -100,15 +100,15 @@ module.exports = {
},
handle_copyStreamError(runid, { copyStreamError }) {
- const { reject, exitOnStreamError } = this.requests[runid];
+ const { reject, exitOnStreamError } = this.requests[runid] || {};
if (exitOnStreamError) {
reject(copyStreamError);
delete this.requests[runid];
}
},
- handle_progress(runid, { progressName, status }) {
- socket.emit(`runner-progress-${runid}`, { progressName, status });
+ handle_progress(runid, { progressName, status, errorMessage }) {
+ socket.emit(`runner-progress-${runid}`, { progressName, status, errorMessage });
},
rejectRequest(runid, error) {
diff --git a/packages/api/src/shell/copyStream.js b/packages/api/src/shell/copyStream.js
index c73476d62..c6471619f 100644
--- a/packages/api/src/shell/copyStream.js
+++ b/packages/api/src/shell/copyStream.js
@@ -1,6 +1,8 @@
const EnsureStreamHeaderStream = require('../utility/EnsureStreamHeaderStream');
const ColumnMapTransformStream = require('../utility/ColumnMapTransformStream');
const streamPipeline = require('../utility/streamPipeline');
+const { getLogger, extractErrorLogData } = require('dbgate-tools');
+const logger = getLogger('copyStream');
/**
* Copies reader to writer. Used for import, export tables and transfer data between tables
@@ -52,10 +54,12 @@ async function copyStream(input, output, options) {
msgtype: 'progress',
progressName,
status: 'error',
+ errorMessage: err.message,
});
}
- throw err;
+ logger.error(extractErrorLogData(err, { progressName }), 'Import/export job failed');
+ // throw err;
}
}
diff --git a/packages/web/src/impexp/ImportExportConfigurator.svelte b/packages/web/src/impexp/ImportExportConfigurator.svelte
index 8889f763d..9309e98a8 100644
--- a/packages/web/src/impexp/ImportExportConfigurator.svelte
+++ b/packages/web/src/impexp/ImportExportConfigurator.svelte
@@ -76,6 +76,7 @@
import { compositeDbNameIfNeeded } from 'dbgate-tools';
import createRef from '../utility/createRef';
import DropDownButton from '../buttons/DropDownButton.svelte';
+ import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
// export let uploadedFile = undefined;
// export let openedFile = undefined;
@@ -307,6 +308,14 @@
Running
{:else if progressHolder[row]?.status == 'error'}
Error
+ {#if progressHolder[row]?.errorMessage}
+ showModal(ErrorMessageModal, { message: progressHolder[row]?.errorMessage })}
+ style="cursor: pointer"
+ />
+ {/if}
{:else if progressHolder[row]?.status == 'done'}
Done
{:else}
diff --git a/packages/web/src/query/MessageView.svelte b/packages/web/src/query/MessageView.svelte
index ce6d9dae5..4d67e3c77 100644
--- a/packages/web/src/query/MessageView.svelte
+++ b/packages/web/src/query/MessageView.svelte
@@ -18,7 +18,7 @@
// $: console.log('MESSAGE ROWS', items);
const values = writable({
- hideDebug: false,
+ hideDebug: true,
hideInfo: false,
hideError: false,
});