fix: fail faster on transaction errors

This commit is contained in:
Michael Vines
2018-10-23 08:35:20 -07:00
parent 0510dbae6c
commit 5a42cadefe

View File

@ -22,8 +22,19 @@ export async function sendAndConfirmTransaction(
let i = 4; let i = 4;
for (;;) { for (;;) {
const status = await connection.getSignatureStatus(signature); const status = await connection.getSignatureStatus(signature);
if (status == 'Confirmed') return; switch (status) {
if (runtimeErrorOk && status == 'ProgramRuntimeError') return; case 'Confirmed':
return;
case 'ProgramRuntimeError':
if (runtimeErrorOk) return;
//fall through
case 'GenericError':
default:
throw new Error(`Transaction ${signature} failed (${status})`);
case 'SignatureNotFound':
break;
}
await sleep(500); await sleep(500);
if (--i < 0) { if (--i < 0) {
const duration = (Date.now() - start) / 1000; const duration = (Date.now() - start) / 1000;