Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Timeout Error while submiting delivery note which includes serialized items. #41452

Closed
sowndharya998 opened this issue May 14, 2024 · 1 comment
Labels

Comments

@sowndharya998
Copy link

Information about bug

Issue Description:

Function: get_incoming_value_for_serial_nos
File Path: /frappe-bench/apps/erpnext/erpnext/stock/deprecated_serial_batch.py, line 49

Error Message:
While executing the get_incoming_value_for_serial_nos function, a timeout error occurs. The traceback indicates that the task exceeded the maximum timeout value (600 seconds). However, this function is marked as @deprecated.

Context:
The get_incoming_value_for_serial_nos function is marked as deprecated, implying that it is no longer recommended for use. Despite being deprecated, it is still being executed in the codebase, resulting in timeout errors.

Action Required:

  1. Investigate why the deprecated function get_incoming_value_for_serial_nos is still being called and run in the codebase.
  2. Determine whether this function is critical for current functionality or if it can be replaced with a recommended alternative.
  3. Address the timeout issue by either optimizing the function's performance or replacing it with a more efficient solution.

Module

stock

Version

frappe version - v15.17.1
erpnext version - v15.16.2

Installation method

None

Relevant log output / Stack trace / Full Error Message.

Traceback (most recent call last):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/submission_queue/submission_queue.py", line 95, in background_submission
    getattr(to_be_queued_doc, _action)()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
    return func(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1045, in submit
    return self._submit()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1028, in _submit
    return self.save()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 335, in save
    return self._save(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 388, in _save
    self.run_post_save_methods()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1128, in run_post_save_methods
    self.run_method("on_submit")
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 959, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1319, in composer
    return composed(self, method, *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1301, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 956, in fn
    return method_object(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py", line 410, in on_submit
    self.update_stock_ledger()
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/controllers/selling_controller.py", line 530, in update_stock_ledger
    self.make_sl_entries(sl_entries)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/controllers/stock_controller.py", line 708, in make_sl_entries
    make_sl_entries(sl_entries, allow_negative_stock, via_landed_cost_voucher)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/stock_ledger.py", line 96, in make_sl_entries
    sle_doc = make_entry(sle, allow_negative_stock, via_landed_cost_voucher)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/stock_ledger.py", line 224, in make_entry
    sle.submit()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
    return func(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1045, in submit
    return self._submit()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1028, in _submit
    return self.save()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 335, in save
    return self._save(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 357, in _save
    return self.insert()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 313, in insert
    self.run_post_save_methods()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1128, in run_post_save_methods
    self.run_method("on_submit")
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 959, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1319, in composer
    return composed(self, method, *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1301, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 956, in fn
    return method_object(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py", line 180, in on_submit
    SerialBatchBundle(
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/serial_batch_bundle.py", line 28, in _init_
    self.post_process()
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/serial_batch_bundle.py", line 241, in post_process
    self.submit_serial_and_batch_bundle()
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/serial_batch_bundle.py", line 267, in submit_serial_and_batch_bundle
    doc.submit()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
    return func(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1045, in submit
    return self._submit()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1028, in _submit
    return self.save()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 335, in save
    return self._save(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 371, in _save
    self.run_before_save_methods()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1091, in run_before_save_methods
    self.run_method("validate")
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 959, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1319, in composer
    return composed(self, method, *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1301, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 956, in fn
    return method_object(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py", line 101, in validate
    self.set_incoming_rate()
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py", line 209, in set_incoming_rate
    self.set_incoming_rate_for_outward_transaction(
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py", line 238, in set_incoming_rate_for_outward_transaction
    sn_obj = SerialNoValuation(
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/serial_batch_bundle.py", line 416, in _init_
    self.calculate_stock_value_change()
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/serial_batch_bundle.py", line 438, in calculate_stock_value_change
    self.calculate_stock_value_from_deprecarated_ledgers()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/deprecations.py", line 19, in wrapper
    return func(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/deprecated_serial_batch.py", line 25, in calculate_stock_value_from_deprecarated_ledgers
    outgoing_value = self.get_incoming_value_for_serial_nos(serial_nos)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/deprecations.py", line 19, in wrapper
    return func(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/stock/deprecated_serial_batch.py", line 49, in get_incoming_value_for_serial_nos
    stock_ledgers = (
  File "/home/frappe/frappe-bench/apps/frappe/frappe/query_builder/utils.py", line 87, in execute_query
    result = frappe.db.sql(query, params, *args, **kwargs)  # nosemgrep
  File "/home/frappe/frappe-bench/apps/frappe/frappe/database/database.py", line 234, in sql
    self._cursor.execute(query, values)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/cursors.py", line 153, in execute
    result = self._query(query)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/cursors.py", line 322, in _query
    conn.query(q)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 558, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 822, in _read_query_result
    result.read()
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 1200, in read
    first_packet = self.connection._read_packet()
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 739, in _read_packet
    packet_header = self._read_bytes(4)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_bytes
    data = self._rfile.read(num_bytes)
  File "/usr/lib/python3.10/socket.py", line 705, in readinto
    return self._sock.recv_into(b)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/rq/timeouts.py", line 63, in handle_death_penalty
    raise self._exception('Task exceeded maximum timeout value ({0} seconds)'.format(self._timeout))
rq.timeouts.JobTimeoutException: Task exceeded maximum timeout value (600 seconds)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1652, in execute_action
    getattr(doc, __action)(**kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/submission_queue/submission_queue.py", line 106, in background_submission
    frappe.db.rollback()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/database/database.py", line 1061, in rollback
    self.sql("rollback")
  File "/home/frappe/frappe-bench/apps/frappe/frappe/database/database.py", line 234, in sql
    self._cursor.execute(query, values)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/cursors.py", line 153, in execute
    result = self._query(query)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/cursors.py", line 322, in _query
    conn.query(q)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 557, in query
    self._execute_command(COMMAND.COM_QUERY, sql)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 840, in _execute_command
    raise err.InterfaceError(0, "")
pymysql.err.InterfaceError: (0, '')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/background_jobs.py", line 213, in execute_job
    retval = method(**kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1654, in execute_action
    frappe.db.rollback()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/database/database.py", line 1061, in rollback
    self.sql("rollback")
  File "/home/frappe/frappe-bench/apps/frappe/frappe/database/database.py", line 234, in sql
    self._cursor.execute(query, values)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/cursors.py", line 153, in execute
    result = self._query(query)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/cursors.py", line 322, in _query
    conn.query(q)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 557, in query
    self._execute_command(COMMAND.COM_QUERY, sql)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 840, in _execute_command
    raise err.InterfaceError(0, "")
pymysql.err.InterfaceError: (0, '')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/rq/worker.py", line 1428, in perform_job
    rv = job.perform()
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/rq/job.py", line 1278, in perform
    self._result = self._execute()
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/rq/job.py", line 1315, in _execute
    result = self.func(*self.args, **self.kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/background_jobs.py", line 236, in execute_job
    frappe.db.rollback()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/database/database.py", line 1061, in rollback
    self.sql("rollback")
  File "/home/frappe/frappe-bench/apps/frappe/frappe/database/database.py", line 234, in sql
    self._cursor.execute(query, values)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/cursors.py", line 153, in execute
    result = self._query(query)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/cursors.py", line 322, in _query
    conn.query(q)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 557, in query
    self._execute_command(COMMAND.COM_QUERY, sql)
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/pymysql/connections.py", line 840, in _execute_command
    raise err.InterfaceError(0, "")
pymysql.err.InterfaceError: (0, '')
@rohitwaghchaure
Copy link
Collaborator

get_incoming_value_for_serial_nos method will be deprecate in version 16 and not now. This method is needed to calculate the valuation rate for legacy serial numbers.

Since this is related to data, we need to access your site to check the issue. If your site is hosted on frappe cloud and you have active support plan. Then request you to create a support ticket.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 31, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants