Merge pull request #56427 from frappe/mergify/bp/version-16/pr-56418

refactor: configurable timeout on process pcv (backport #56417) (backport #56418)
This commit is contained in:
ruthra kumar
2026-06-24 16:12:00 +05:30
committed by GitHub
4 changed files with 19 additions and 4 deletions

View File

@@ -86,6 +86,7 @@
"period_closing_settings_section", "period_closing_settings_section",
"ignore_account_closing_balance", "ignore_account_closing_balance",
"use_legacy_controller_for_pcv", "use_legacy_controller_for_pcv",
"pcv_job_timeout",
"column_break_25", "column_break_25",
"reports_tab", "reports_tab",
"remarks_section", "remarks_section",
@@ -611,6 +612,14 @@
"fieldtype": "Check", "fieldtype": "Check",
"label": "Use legacy controller for Period Closing Voucher" "label": "Use legacy controller for Period Closing Voucher"
}, },
{
"default": "3600",
"depends_on": "eval: !doc.use_legacy_controller_for_pcv",
"description": "Timeout (in seconds) for each background job enqueued by Process Period Closing Voucher",
"fieldname": "pcv_job_timeout",
"fieldtype": "Int",
"label": "PCV Job Timeout (seconds)"
},
{ {
"description": "Users with this role will be notified if the asset depreciation gets failed", "description": "Users with this role will be notified if the asset depreciation gets failed",
"fieldname": "role_to_notify_on_depreciation_failure", "fieldname": "role_to_notify_on_depreciation_failure",
@@ -748,7 +757,7 @@
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"issingle": 1, "issingle": 1,
"links": [], "links": [],
"modified": "2026-06-15 18:26:50.778723", "modified": "2026-06-24 12:59:41.868865",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Accounts Settings", "name": "Accounts Settings",

View File

@@ -90,6 +90,7 @@ class AccountsSettings(Document):
make_payment_via_journal_entry: DF.Check make_payment_via_journal_entry: DF.Check
merge_similar_account_heads: DF.Check merge_similar_account_heads: DF.Check
over_billing_allowance: DF.Currency over_billing_allowance: DF.Currency
pcv_job_timeout: DF.Int
receivable_payable_fetch_method: DF.Literal["Buffered Cursor", "UnBuffered Cursor"] receivable_payable_fetch_method: DF.Literal["Buffered Cursor", "UnBuffered Cursor"]
receivable_payable_remarks_length: DF.Int receivable_payable_remarks_length: DF.Int
reconciliation_queue_size: DF.Int reconciliation_queue_size: DF.Int

View File

@@ -95,6 +95,8 @@ def start_pcv_processing(docname: str):
frappe.has_permission("Process Payment Reconciliation", "write", doc=docname, throw=True) frappe.has_permission("Process Payment Reconciliation", "write", doc=docname, throw=True)
frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Running") frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Running")
timeout = frappe.db.get_single_value("Accounts Settings", "pcv_job_timeout") or 3600
ppcvd = qb.DocType("Process Period Closing Voucher Detail") ppcvd = qb.DocType("Process Period Closing Voucher Detail")
if normal_balances := ( if normal_balances := (
qb.from_(ppcvd) qb.from_(ppcvd)
@@ -121,7 +123,7 @@ def start_pcv_processing(docname: str):
frappe.enqueue( frappe.enqueue(
method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.process_individual_date", method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.process_individual_date",
queue="long", queue="long",
timeout="3600", timeout=timeout,
is_async=True, is_async=True,
enqueue_after_commit=True, enqueue_after_commit=True,
docname=docname, docname=docname,
@@ -247,6 +249,8 @@ def get_gle_for_closing_account(pcv, dimension_balance, dimensions):
@frappe.whitelist() @frappe.whitelist()
def schedule_next_date(docname: str): def schedule_next_date(docname: str):
timeout = frappe.db.get_single_value("Accounts Settings", "pcv_job_timeout") or 3600
ppcvd = qb.DocType("Process Period Closing Voucher Detail") ppcvd = qb.DocType("Process Period Closing Voucher Detail")
if to_process := ( if to_process := (
qb.from_(ppcvd) qb.from_(ppcvd)
@@ -272,7 +276,7 @@ def schedule_next_date(docname: str):
frappe.enqueue( frappe.enqueue(
method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.process_individual_date", method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.process_individual_date",
queue="long", queue="long",
timeout="3600", timeout=timeout,
is_async=True, is_async=True,
enqueue_after_commit=True, enqueue_after_commit=True,
docname=docname, docname=docname,
@@ -302,7 +306,7 @@ def schedule_next_date(docname: str):
frappe.enqueue( frappe.enqueue(
method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.summarize_and_post_ledger_entries", method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.summarize_and_post_ledger_entries",
queue="long", queue="long",
timeout="3600", timeout=timeout,
is_async=True, is_async=True,
job_name=job_name, job_name=job_name,
enqueue_after_commit=True, enqueue_after_commit=True,

View File

@@ -484,3 +484,4 @@ erpnext.patches.v16_0.set_not_applicable_on_german_item_tax_templates
erpnext.patches.v16_0.clear_procedures_from_receivable_report erpnext.patches.v16_0.clear_procedures_from_receivable_report
erpnext.patches.v16_0.migrate_address_contact_custom_fields erpnext.patches.v16_0.migrate_address_contact_custom_fields
erpnext.patches.v16_0.drop_redundant_serial_no_index_from_sabb erpnext.patches.v16_0.drop_redundant_serial_no_index_from_sabb
execute:frappe.db.set_single_value("Accounts Settings", "pcv_job_timeout", 3600)