Merge pull request 'Эпик 4 re-ревью: fail-fast tx_hash' (#13) from chore/re-review-E4-fail-fast-tx-hash into marketplace2
Reviewed-on: #13
This commit was merged in pull request #13.
This commit is contained in:
+10
-1
@@ -142,7 +142,16 @@ export class MarketplaceOrderCancelService {
|
||||
|
||||
private normalizeTxHash(tx: unknown): string {
|
||||
const t = tx as { transaction?: { id?: string }; processed?: { id?: string } };
|
||||
return t?.transaction?.id ?? t?.processed?.id ?? 'unknown';
|
||||
const hash = t?.transaction?.id ?? t?.processed?.id;
|
||||
if (!hash) {
|
||||
// fail-fast: цепь приняла action, но не вернула tx_hash — audit-trail
|
||||
// станет фантомным ('unknown') без возможности cross-reference. Лучше
|
||||
// отбить отмену пайщику и попросить retry, чем записать «unknown».
|
||||
throw new BadRequestException(
|
||||
'Отмена заказа: цепь не вернула tx_hash. Повторите попытку.'
|
||||
);
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
private rethrowChainError(error: any): never {
|
||||
|
||||
+8
-1
@@ -322,7 +322,14 @@ export class MarketplaceOrderCreateService {
|
||||
|
||||
private normalizeTxResult(tx: unknown): { tx_hash: string; block_num: number } {
|
||||
const t = tx as { transaction?: { id?: string }; processed?: { id?: string; block_num?: number } };
|
||||
const tx_hash = t?.transaction?.id ?? t?.processed?.id ?? 'unknown';
|
||||
const tx_hash = t?.transaction?.id ?? t?.processed?.id;
|
||||
if (!tx_hash) {
|
||||
// fail-fast: цепь приняла createorder, но не вернула tx_hash —
|
||||
// запись Order в БД без tx_hash сделает audit-trail фантомным.
|
||||
throw new BadRequestException(
|
||||
'Создание заказа: цепь не вернула tx_hash. Повторите попытку.'
|
||||
);
|
||||
}
|
||||
const block_num = t?.processed?.block_num ?? 0;
|
||||
return { tx_hash, block_num };
|
||||
}
|
||||
|
||||
+10
-1
@@ -188,7 +188,16 @@ export class MarketplaceOrderSupplierActionService {
|
||||
|
||||
private normalizeTxHash(tx: unknown): string {
|
||||
const t = tx as { transaction?: { id?: string }; processed?: { id?: string } };
|
||||
return t?.transaction?.id ?? t?.processed?.id ?? 'unknown';
|
||||
const hash = t?.transaction?.id ?? t?.processed?.id;
|
||||
if (!hash) {
|
||||
// fail-fast: цепь приняла action, но не вернула tx_hash —
|
||||
// лучше отбить поставщику и попросить retry, чем записать
|
||||
// 'unknown' в audit-trail.
|
||||
throw new BadRequestException(
|
||||
'Действие поставщика: цепь не вернула tx_hash. Повторите попытку.'
|
||||
);
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
private rethrowChainError(error: any): never {
|
||||
|
||||
Reference in New Issue
Block a user