Я использую сервер Flask и использую OrientDB в качестве графической базы данных.
Всякий раз, когда я сталкиваюсь с ошибкой, консоль OrientDB печатает ошибку, но не возвращает элемент управления обратно серверу-колбе.
Это приводит к тому, что сервер переходит в состояние ожидания, и, наконец, после истечения времени ожидания возникает ошибка времени ожидания.
Пожалуйста, найдите трассировку OrientDB ниже:
Exception `62D3A773` in storage `plocal:C:/orientdb-community-importers-
2.2.34/databases/en_table_X_TABLES`: 2.2.34 (build
f340442755a31eabc91b87cb3ef99eda5cee6ebd, branch 2.2.x)
com.orientechnologies.orient.core.exception.OStorageException: Cannot open
local storage 'C:/orientdb-community-importers-
2.2.34/databases/en_table_X_TABLES' with mode=rw
DB name="en_table_X_TABLES"
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:323)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:259)
at com.orientechnologies.orient.server.OServer.openDatabaseBypassingSecurity(OServer.java:1006)
at com.orientechnologies.orient.server.OServer.openDatabase(OServer.java:985)
at com.orientechnologies.orient.server.OServer.openDatabase(OServer.java:958)
at com.orientechnologies.orient.server.OServer.openDatabase(OServer.java:949)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.openDatabase(ONetworkProtocolBinary.java:915)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.handshakeRequest(ONetworkProtocolBinary.java:249)
at com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary.execute(ONetworkProtocolBinary.java:214)
at com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:82)
Caused by: com.orientechnologies.orient.core.exception.OStorageException:
File with name 'providers_not_going_to_provide.pcl' does not exist in storage 'en_table_X_TABLES'
DB name="en_table_X_TABLES"
at com.orientechnologies.orient.core.storage.cache.local.OWOWCache.loadFile(OWOWCache.java:475)
at com.orientechnologies.orient.core.storage.impl.local.paginated.base.ODurableComponent.openFile(ODurableComponent.java:180)
at com.orientechnologies.orient.core.storage.impl.local.paginated.OPaginatedCluster.open(OPaginatedCluster.java:217)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.openClusters(OAbstractPaginatedStorage.java:387)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:290)
... 9 more
А на сервере Flask - трассировка:
File "E:\xyz\src\predict.py",
line 317, in find_sections
rdbms_query_class_res = sql_qc_obj.classify_query(query)
File "../src\sql_query_classifier.py", line 110, in
classify_query
xt2g = Table2Graph(database=table_database, SQL=False)
File "../src\table_mgmt\table_src\table_kg.py", line 948, in __init__
OrientDB.__init__(self, database, fresh_ingest=False)
File "../src\table_mgmt\tools\orientdb_ops.py", line 61, in __init__
client.db_open(database, setting.ODB_NAME, setting.ODB_PWD)
File "C:\ProgramData\Anaconda2\lib\site-packages\pyorient\orient.py", line
412, in db_open
.prepare((db_name, user, password, db_type,
client_id)).send().fetch_response()
File "C:\ProgramData\Anaconda2\lib\site -
packages\pyorient\messages\database.py", line 101, in fetch_response
result = super(DbOpenMessage, self).fetch_response()
File "C:\ProgramData\Anaconda2\lib\site-packages\pyorient\messages\base.py",
line 265, in fetch_response
self._decode_all()
File "C:\ProgramData\Anaconda2\lib\site-packages\pyorient\messages\base.py",
line 249, in _decode_all
self._decode_header()
File "C:\ProgramData\Anaconda2\lib\site-packages\pyorient\messages\base.py",
line 176, in _decode_header
serialized_exception = self._decode_field( FIELD_STRING )
File "C:\ProgramData\Anaconda2\lib\site-packages\pyorient\messages\base.py",
line 366, in _decode_field
_decoded_string = self._orientSocket.read( _len )
File "C:\ProgramData\Anaconda2\lib\site-packages\pyorient\orient.py", line
167, in read
n_bytes = self._socket.recv_into(view, _len_to_read)
timeout: timed out
OrientDB проясняет, что это за ошибка, однако во время выполнения, если возникнет какая-либо ошибка, он остановит время выполнения сервера и выдаст вышеупомянутую ошибку TIMED OUT.
Есть ли способ регистрировать ошибки на клиентском сервере, а не только на сервере OrientDB.
Или есть способ вернуть элемент управления клиенту после возникновения ошибки в OrientDB?