Merge pull request #56252 from mihir-kandoi/pg-savepoint-guards

fix(postgres): savepoint-guard swallow-and-continue insert paths
This commit is contained in:
Mihir Kandoi
2026-06-21 16:16:08 +05:30
committed by GitHub
2 changed files with 6 additions and 0 deletions

View File

@@ -113,6 +113,8 @@ def add_bank_accounts(response: str | dict, bank: str | dict, company: str):
if not existing_bank_account:
try:
# savepoint so a failed insert doesn't poison the transaction on postgres
frappe.db.savepoint("plaid_bank_account")
gl_account = frappe.get_doc(
{
"doctype": "Account",
@@ -142,12 +144,14 @@ def add_bank_accounts(response: str | dict, bank: str | dict, company: str):
result.append(new_account.name)
except frappe.UniqueValidationError:
frappe.db.rollback(save_point="plaid_bank_account") # preserve transaction in postgres
frappe.msgprint(
_("Bank account {0} already exists and could not be created again").format(
account["name"]
)
)
except Exception:
frappe.db.rollback(save_point="plaid_bank_account") # preserve transaction in postgres
frappe.log_error("Plaid Link Error")
frappe.throw(
_("There was an error creating Bank Account while linking with Plaid."),

View File

@@ -567,6 +567,7 @@ def create_bank_account(args, demo=False):
}
)
try:
frappe.db.savepoint("create_bank_account")
doc = bank_account.insert()
if args.get("set_default"):
@@ -583,6 +584,7 @@ def create_bank_account(args, demo=False):
except RootNotEditable:
frappe.throw(frappe._("Bank account cannot be named as {0}").format(args.get("bank_account")))
except frappe.DuplicateEntryError:
frappe.db.rollback(save_point="create_bank_account") # preserve transaction in postgres
# bank account same as a CoA entry
pass