I keep having this error in my deployment after I upgraded the frappe to v16 and helpdesk module to 1.29.
Traceback with variables (most recent call last):
File “apps/frappe/frappe/search/sqlite_search.py”, line 1197, in _get_connection
self.set_pragmas(cursor, read_only)
self = helpdesk.search_sqlite.HelpdeskSearch(db_name=‘helpdesk_search.db’, db_path=‘./ibratro.connect.cloudplay.cloud/helpdesk_search.db’, doc_configs={‘HD Ticket’: {‘fields’: [‘name’, ‘subject’, ‘description’, ‘modified’, ‘agent_group’, ‘status’, ‘priority’, ‘raised_by’, ‘owner’], ‘field_mappings’: {‘title’: ‘subject’, ‘content’: ‘description’}, ‘content_field’: ‘description’, ‘title_field’: ‘subject’, ‘modified_field’: ‘modified’, ‘filters’: {}}, ‘HD Ticket Comment’: {‘fields’: [‘name’, ‘content’, ‘modified’, ‘reference_ticket’, ‘commented_by’, ‘owner’], ‘field_mappings’: {}, ‘content_field’: ‘content’, ‘title_field’: None, ‘modified_field’: ‘modified’, ‘filters’: {}}, ‘Communication’: {‘field…icket’}}}, schema={‘metadata_fields’: [‘agent_group’, ‘customer’, ‘status’, ‘priority’, ‘owner’, ‘reference_doctype’, ‘reference_name’, ‘reference_ticket’, ‘doctype’, ‘name’, ‘modified’], ‘tokenizer’: 'unicode61 remove_diacritics 2 tokenchars '-‘’, ‘text_fields’: [‘title’, ‘content’]}, warnings=)
read_only = True
conn = sqlite3.Connection()
cursor = sqlite3.Cursor()
e = disk I/O error
File “apps/frappe/frappe/search/sqlite_search.py”, line 1208, in set_pragmas
cursor.execute(“PRAGMA journal_mode = WAL;”) # Write-Ahead Logging for concurrency
self = helpdesk.search_sqlite.HelpdeskSearch(db_name=‘helpdesk_search.db’, db_path=‘./ibratro.connect.cloudplay.cloud/helpdesk_search.db’, doc_configs={‘HD Ticket’: {‘fields’: [‘name’, ‘subject’, ‘description’, ‘modified’, ‘agent_group’, ‘status’, ‘priority’, ‘raised_by’, ‘owner’], ‘field_mappings’: {‘title’: ‘subject’, ‘content’: ‘description’}, ‘content_field’: ‘description’, ‘title_field’: ‘subject’, ‘modified_field’: ‘modified’, ‘filters’: {}}, ‘HD Ticket Comment’: {‘fields’: [‘name’, ‘content’, ‘modified’, ‘reference_ticket’, ‘commented_by’, ‘owner’], ‘field_mappings’: {}, ‘content_field’: ‘content’, ‘title_field’: None, ‘modified_field’: ‘modified’, ‘filters’: {}}, ‘Communication’: {‘field…icket’}}}, schema={‘metadata_fields’: [‘agent_group’, ‘customer’, ‘status’, ‘priority’, ‘owner’, ‘reference_doctype’, ‘reference_name’, ‘reference_ticket’, ‘doctype’, ‘name’, ‘modified’], ‘tokenizer’: 'unicode61 remove_diacritics 2 tokenchars '-‘’, ‘text_fields’: [‘title’, ‘content’]}, warnings=)
cursor = sqlite3.Cursor()
is_read = True
sqlite3.OperationalError: disk I/O error
And apparently this error is affecting users from logging into the ERPNext, submitting SO, DN, and many things else. Users have to keep retrying a few times before they can login or submit orders. They get Server Error.- RecursionError: maximum recursion depth exceeded.
The deployment is in a kubernetes cluster and since we need ReadWriteMany type of storage for sites directory, we use NFS storage. And I think this is the problem. Helpdesk (and Gameplan) module is building the search index to a sqlite database and fails. WAL needs a -shm file that SQLite memory-maps, and NFS can’t provide that.
What will be the best approach to get this solved?