Unverified Commit 8818cb65 authored by chicm-ms's avatar chicm-ms Committed by GitHub
Browse files

Handle string type error (#1064)

parent 34988d9b
...@@ -35,6 +35,23 @@ export class NNIError extends Error { ...@@ -35,6 +35,23 @@ export class NNIError extends Error {
} }
this.cause = err; this.cause = err;
} }
public static FromError(err: NNIError | Error | string, messagePrefix?: string): NNIError {
const msgPrefix: string = messagePrefix === undefined ? '' : messagePrefix;
if (err instanceof NNIError) {
if (err.message !== undefined) {
err.message = msgPrefix + err.message;
}
return err;
} else if (typeof(err) === 'string') {
return new NNIError('', msgPrefix + err);
} else if (err instanceof Error) {
return new NNIError('', msgPrefix + err.message, err);
} else {
throw new Error(`Wrong instance type: ${typeof(err)}`);
}
}
} }
export class MethodNotImplementedError extends Error { export class MethodNotImplementedError extends Error {
......
...@@ -106,7 +106,7 @@ class IpcInterface { ...@@ -106,7 +106,7 @@ class IpcInterface {
this.logger.warning('Commands jammed in buffer!'); this.logger.warning('Commands jammed in buffer!');
} }
} catch (err) { } catch (err) {
throw new NNIError('Dispatcher Error', `Dispatcher Error: ${err.message}`, err); throw NNIError.FromError(err, 'Dispatcher Error: ');
} }
} }
......
...@@ -77,7 +77,7 @@ class NNIDataStore implements DataStore { ...@@ -77,7 +77,7 @@ class NNIDataStore implements DataStore {
try { try {
await this.db.storeExperimentProfile(experimentProfile); await this.db.storeExperimentProfile(experimentProfile);
} catch (err) { } catch (err) {
throw new NNIError('Datastore error', `Datastore error: ${err.message}`, err); throw NNIError.FromError(err, 'Datastore error: ');
} }
} }
...@@ -105,7 +105,7 @@ class NNIDataStore implements DataStore { ...@@ -105,7 +105,7 @@ class NNIDataStore implements DataStore {
return this.db.storeTrialJobEvent(event, trialJobId, timestamp, hyperParameter, jobDetail).catch( return this.db.storeTrialJobEvent(event, trialJobId, timestamp, hyperParameter, jobDetail).catch(
(err: Error) => { (err: Error) => {
throw new NNIError('Datastore error', `Datastore error: ${err.message}`, err); throw NNIError.FromError(err, 'Datastore error: ');
} }
); );
} }
...@@ -163,7 +163,7 @@ class NNIDataStore implements DataStore { ...@@ -163,7 +163,7 @@ class NNIDataStore implements DataStore {
timestamp: Date.now() timestamp: Date.now()
})); }));
} catch (err) { } catch (err) {
throw new NNIError('Datastore error', `Datastore error: ${err.message}`, err); throw NNIError.FromError(err, 'Datastore error');
} }
} }
......
...@@ -573,13 +573,13 @@ class NNIManager implements Manager { ...@@ -573,13 +573,13 @@ class NNIManager implements Manager {
await Promise.all([ await Promise.all([
this.periodicallyUpdateExecDuration(), this.periodicallyUpdateExecDuration(),
this.pingDispatcher().catch((err: Error) => { this.pingDispatcher().catch((err: Error) => {
throw new NNIError('Dispatcher error', `Dispatcher error: ${err.message}`, err); throw NNIError.FromError(err, 'Dispatcher error: ');
}), }),
this.trainingService.run().catch((err: Error) => { this.trainingService.run().catch((err: Error) => {
throw new NNIError('Training service error', `Training service error: ${err.message}`, err); throw NNIError.FromError(err, 'Training service error: ');
}), }),
this.manageTrials().catch((err: Error) => { this.manageTrials().catch((err: Error) => {
throw new NNIError('Job management error', `Job management error: ${err.message}`, err); throw NNIError.FromError(err, 'Job management error: ');
})]); })]);
} }
...@@ -591,13 +591,13 @@ class NNIManager implements Manager { ...@@ -591,13 +591,13 @@ class NNIManager implements Manager {
} }
this.trainingService.addTrialJobMetricListener((metric: TrialJobMetric) => { this.trainingService.addTrialJobMetricListener((metric: TrialJobMetric) => {
this.onTrialJobMetrics(metric).catch((err: Error) => { this.onTrialJobMetrics(metric).catch((err: Error) => {
this.criticalError(new NNIError('Job metrics error', `Job metrics error: ${err.message}`, err)); this.criticalError(NNIError.FromError(err, 'Job metrics error: '));
}); });
}); });
this.dispatcher.onCommand((commandType: string, content: string) => { this.dispatcher.onCommand((commandType: string, content: string) => {
this.onTunerCommand(commandType, content).catch((err: Error) => { this.onTunerCommand(commandType, content).catch((err: Error) => {
this.criticalError(new NNIError('Tuner command event error', `Tuner command event error: ${err.message}`, err)); this.criticalError(NNIError.FromError(err, 'Tuner command event error: '));
}); });
}); });
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment