mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-22 22:46:01 +00:00
import error reporting
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
const EnsureStreamHeaderStream = require('../utility/EnsureStreamHeaderStream');
|
||||
const ColumnMapTransformStream = require('../utility/ColumnMapTransformStream');
|
||||
const streamPipeline = require('../utility/streamPipeline');
|
||||
const { getLogger, extractErrorLogData, RowProgressReporter } = require('dbgate-tools');
|
||||
const { getLogger, extractErrorLogData, RowProgressReporter, extractErrorMessage } = require('dbgate-tools');
|
||||
const logger = getLogger('copyStream');
|
||||
const stream = require('stream');
|
||||
|
||||
@@ -66,7 +66,7 @@ async function copyStream(input, output, options) {
|
||||
process.send({
|
||||
msgtype: 'copyStreamError',
|
||||
copyStreamError: {
|
||||
message: err.message,
|
||||
message: extractErrorMessage(err),
|
||||
...err,
|
||||
},
|
||||
});
|
||||
@@ -76,7 +76,7 @@ async function copyStream(input, output, options) {
|
||||
msgtype: 'progress',
|
||||
progressName,
|
||||
status: 'error',
|
||||
errorMessage: err.message,
|
||||
errorMessage: extractErrorMessage(err),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ const logger = getLogger('tableWriter');
|
||||
* @param {boolean} options.truncate - truncate table before insert
|
||||
* @param {boolean} options.createIfNotExists - create table if not exists
|
||||
* @param {boolean} options.commitAfterInsert - commit transaction after insert
|
||||
* @param {string} options.progressName - name for reporting progress
|
||||
* @param {any} options.targetTableStructure - target table structure (don't analyse if given)
|
||||
* @returns {Promise<writerType>} - writer object
|
||||
*/
|
||||
@@ -26,7 +27,20 @@ async function tableWriter({ connection, schemaName, pureName, driver, systemCon
|
||||
}
|
||||
const dbhan = systemConnection || (await connectUtility(driver, connection, 'write'));
|
||||
|
||||
return await driver.writeTable(dbhan, { schemaName, pureName }, options);
|
||||
try {
|
||||
return await driver.writeTable(dbhan, { schemaName, pureName }, options);
|
||||
} catch (err) {
|
||||
if (options.progressName) {
|
||||
process.send({
|
||||
msgtype: 'progress',
|
||||
progressName: options.progressName,
|
||||
status: 'error',
|
||||
errorMessage: err.message,
|
||||
});
|
||||
}
|
||||
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = tableWriter;
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
// export let openedFile = undefined;
|
||||
export let previewReaderStore;
|
||||
export let isTabActive;
|
||||
export let isRunning = false;
|
||||
|
||||
const { values, setFieldValue } = getFormContext();
|
||||
|
||||
@@ -305,7 +306,7 @@
|
||||
</Link>
|
||||
</svelte:fragment>
|
||||
<svelte:fragment slot="3" let:row>
|
||||
{#if progressHolder[row]?.status == 'running'}
|
||||
{#if progressHolder[row]?.status == 'running' && isRunning}
|
||||
<FontIcon icon="icon loading" />
|
||||
{#if progressHolder[row]?.writtenRowCount}
|
||||
{progressHolder[row]?.writtenRowCount} rows writtem
|
||||
@@ -334,7 +335,14 @@
|
||||
Done
|
||||
{/if}
|
||||
{:else}
|
||||
<FontIcon icon="icon wait" /> Queued
|
||||
<FontIcon icon="icon wait" />
|
||||
{#if progressHolder[row]?.writtenRowCount}
|
||||
{progressHolder[row]?.writtenRowCount} rows writtem
|
||||
{:else if progressHolder[row]?.readRowCount}
|
||||
{progressHolder[row]?.readRowCount} rows read
|
||||
{:else}
|
||||
Queued
|
||||
{/if}
|
||||
{/if}
|
||||
</svelte:fragment>
|
||||
</TableControl>
|
||||
|
||||
@@ -264,6 +264,7 @@
|
||||
{previewReaderStore}
|
||||
{progressHolder}
|
||||
isTabActive={tabid == $activeTabId}
|
||||
isRunning={busy}
|
||||
/>
|
||||
|
||||
{#if busy}
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
const { createBulkInsertStreamBase } = global.DBGATE_PACKAGES['dbgate-tools'];
|
||||
const { createBulkInsertStreamBase, getLogger, extractErrorLogData } = global.DBGATE_PACKAGES['dbgate-tools'];
|
||||
const tedious = require('tedious');
|
||||
const getConcreteType = require('./getConcreteType');
|
||||
const _ = require('lodash');
|
||||
const logger = getLogger('tediousBulkInsertStream');
|
||||
|
||||
function runBulkInsertBatch(dbhan, tableName, writable, rows) {
|
||||
return new Promise((resolve, reject) => {
|
||||
var options = { keepNulls: true };
|
||||
const options = { keepNulls: true };
|
||||
|
||||
// instantiate - provide the table where you'll be inserting to, options and a callback
|
||||
var bulkLoad = dbhan.client.newBulkLoad(tableName, options, (error, rowCount) => {
|
||||
const bulkLoad = dbhan.client.newBulkLoad(tableName, options, (error, rowCount) => {
|
||||
if (error) reject(error);
|
||||
else resolve();
|
||||
});
|
||||
@@ -68,7 +69,13 @@ function createTediousBulkInsertStream(driver, stream, dbhan, name, options) {
|
||||
const rows = writable.buffer;
|
||||
writable.buffer = [];
|
||||
|
||||
await runBulkInsertBatch(dbhan, fullName, writable, rows);
|
||||
try {
|
||||
await runBulkInsertBatch(dbhan, fullName, writable, rows);
|
||||
} catch (err) {
|
||||
logger.error(extractErrorLogData(err), 'Error during bulk insert, insert stopped');
|
||||
// writable.emit('error', err);
|
||||
writable.destroy(err);
|
||||
}
|
||||
};
|
||||
|
||||
return writable;
|
||||
|
||||
Reference in New Issue
Block a user