Skip to content

Commit

Permalink
fix: plugin ledger connector quorum exception handling and upgrade TS
Browse files Browse the repository at this point in the history
Fixes #1738
  • Loading branch information
Leeyoungone committed Jan 13, 2022
1 parent 0707950 commit a976414
Show file tree
Hide file tree
Showing 13 changed files with 372 additions and 223 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
Checks,
Logger,
LoggerProvider,
LogHelper,
LogLevelDesc,
} from "@hyperledger/cactus-common";

Expand Down Expand Up @@ -62,6 +63,8 @@ import {
GetPrometheusExporterMetricsEndpointV1,
IGetPrometheusExporterMetricsEndpointV1Options,
} from "./web-services/get-prometheus-exporter-metrics-endpoint-v1";
import axios from "axios";
import { RuntimeError } from "run-time-error";

export interface IPluginLedgerConnectorQuorumOptions
extends ICactusPluginOptions {
Expand Down Expand Up @@ -415,11 +418,16 @@ export class PluginLedgerConnectorQuorum
const txHash = await sendTransaction(transactionConfig, secret);
const transactionReceipt = await this.pollForTxReceipt(txHash);
return { transactionReceipt };
} catch (ex) {
throw new Error(
`${fnTag} Failed to invoke web3.eth.personal.sendTransaction(). ` +
`InnerException: ${ex.stack}`,
);
} catch (ex: unknown) {
const stack = LogHelper.getExceptionStack(ex);
if (axios.isAxiosError(ex)) {
throw new Error(
`${fnTag} Failed to invoke web3.eth.personal.sendTransaction(). ` +
`InnerException: ${stack}`,
);
} else {
throw new RuntimeError("expected an axios error, got something else");
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
LogLevelDesc,
LoggerProvider,
IAsyncProvider,
LogHelper,
} from "@hyperledger/cactus-common";

import { registerWebServiceEndpoint } from "@hyperledger/cactus-core";
Expand Down Expand Up @@ -98,12 +99,21 @@ export class DeployContractSolidityBytecodeJsonObjectEndpoint
reqBody,
);
res.json(resBody);
} catch (ex) {
} catch (ex: unknown) {
const stack = LogHelper.getExceptionStack(ex);
const messages = LogHelper.getExceptionMessage(ex);
this.log.error(`Crash while serving ${reqTag}`, ex);
res.status(500).json({
message: "Internal Server Error",
error: ex?.stack || ex?.message,
});
if (ex instanceof Error) {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
} else {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
LogLevelDesc,
LoggerProvider,
IAsyncProvider,
LogHelper,
} from "@hyperledger/cactus-common";

import { registerWebServiceEndpoint } from "@hyperledger/cactus-core";
Expand Down Expand Up @@ -91,12 +92,21 @@ export class DeployContractSolidityBytecodeEndpoint
try {
const resBody = await this.options.connector.deployContract(reqBody);
res.json(resBody);
} catch (ex) {
} catch (ex: unknown) {
const stack = LogHelper.getExceptionStack(ex);
const messages = LogHelper.getExceptionMessage(ex);
this.log.error(`Crash while serving ${reqTag}`, ex);
res.status(500).json({
message: "Internal Server Error",
error: ex?.stack || ex?.message,
});
if (ex instanceof Error) {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
} else {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
LoggerProvider,
Checks,
IAsyncProvider,
LogHelper,
} from "@hyperledger/cactus-common";

import { PluginLedgerConnectorQuorum } from "../plugin-ledger-connector-quorum";
Expand Down Expand Up @@ -90,11 +91,19 @@ export class GetPrometheusExporterMetricsEndpointV1
const resBody = await this.options.connector.getPrometheusExporterMetrics();
res.status(200);
res.send(resBody);
} catch (ex) {
} catch (ex: unknown) {
const stack = LogHelper.getExceptionStack(ex);
const messages = LogHelper.getExceptionMessage(ex);
this.log.error(`${fnTag} failed to serve request`, ex);
res.status(500);
res.statusMessage = ex.message;
res.json({ error: ex.stack });
if (ex instanceof Error) {
res.status(500);
res.statusMessage = messages;
res.json({ error: stack });
} else {
res.status(500);
res.statusMessage = messages;
res.json({ error: stack });
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
LogLevelDesc,
LoggerProvider,
IAsyncProvider,
LogHelper,
} from "@hyperledger/cactus-common";
import {
IEndpointAuthzOptions,
Expand Down Expand Up @@ -92,12 +93,21 @@ export class InvokeContractJsonObjectEndpoint implements IWebServiceEndpoint {
try {
const resBody = await this.options.connector.getContractInfo(reqBody);
res.json(resBody);
} catch (ex) {
} catch (ex: unknown) {
const stack = LogHelper.getExceptionStack(ex);
const messages = LogHelper.getExceptionMessage(ex);
this.log.error(`Crash while serving ${reqTag}`, ex);
res.status(500).json({
message: "Internal Server Error",
error: ex?.stack || ex?.message,
});
if (ex instanceof Error) {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
} else {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
LogLevelDesc,
LoggerProvider,
IAsyncProvider,
LogHelper,
} from "@hyperledger/cactus-common";
import {
IEndpointAuthzOptions,
Expand Down Expand Up @@ -90,12 +91,21 @@ export class InvokeContractEndpoint implements IWebServiceEndpoint {
reqBody,
);
res.json(resBody);
} catch (ex) {
} catch (ex: unknown) {
const stack = LogHelper.getExceptionStack(ex);
const messages = LogHelper.getExceptionMessage(ex);
this.log.error(`Crash while serving ${reqTag}`, ex);
res.status(500).json({
message: "Internal Server Error",
error: ex?.stack || ex?.message,
});
if (ex instanceof Error) {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
} else {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
LogLevelDesc,
LoggerProvider,
IAsyncProvider,
LogHelper,
} from "@hyperledger/cactus-common";
import {
IEndpointAuthzOptions,
Expand Down Expand Up @@ -88,12 +89,21 @@ export class RunTransactionEndpoint implements IWebServiceEndpoint {
try {
const resBody = await this.options.connector.transact(reqBody);
res.json({ success: true, data: resBody });
} catch (ex) {
} catch (ex: unknown) {
const stack = LogHelper.getExceptionStack(ex);
const messages = LogHelper.getExceptionMessage(ex);
this.log.error(`Crash while serving ${reqTag}`, ex);
res.status(500).json({
message: "Internal Server Error",
error: ex?.stack || ex?.message,
});
if (ex instanceof Error) {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
} else {
res.status(500).json({
message: "Internal Server Error",
error: stack || messages,
});
}
}
}
}
Loading

0 comments on commit a976414

Please sign in to comment.