mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 20:35:19 +00:00
use .rollback() after read-only transaction on pgvector to avoid infinitely idle transactions (and errors in certain scenarios)
This commit is contained in:
parent
4485c7a5d2
commit
3a9601c053
1 changed files with 8 additions and 0 deletions
|
|
@ -421,10 +421,12 @@ class PgvectorClient(VectorDBBase):
|
||||||
documents[qid].append(row.text)
|
documents[qid].append(row.text)
|
||||||
metadatas[qid].append(row.vmetadata)
|
metadatas[qid].append(row.vmetadata)
|
||||||
|
|
||||||
|
self.session.rollback() # read-only transaction
|
||||||
return SearchResult(
|
return SearchResult(
|
||||||
ids=ids, distances=distances, documents=documents, metadatas=metadatas
|
ids=ids, distances=distances, documents=documents, metadatas=metadatas
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
self.session.rollback()
|
||||||
log.exception(f"Error during search: {e}")
|
log.exception(f"Error during search: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
@ -477,12 +479,14 @@ class PgvectorClient(VectorDBBase):
|
||||||
documents = [[result.text for result in results]]
|
documents = [[result.text for result in results]]
|
||||||
metadatas = [[result.vmetadata for result in results]]
|
metadatas = [[result.vmetadata for result in results]]
|
||||||
|
|
||||||
|
self.session.rollback() # read-only transaction
|
||||||
return GetResult(
|
return GetResult(
|
||||||
ids=ids,
|
ids=ids,
|
||||||
documents=documents,
|
documents=documents,
|
||||||
metadatas=metadatas,
|
metadatas=metadatas,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
self.session.rollback()
|
||||||
log.exception(f"Error during query: {e}")
|
log.exception(f"Error during query: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
@ -523,8 +527,10 @@ class PgvectorClient(VectorDBBase):
|
||||||
documents = [[result.text for result in results]]
|
documents = [[result.text for result in results]]
|
||||||
metadatas = [[result.vmetadata for result in results]]
|
metadatas = [[result.vmetadata for result in results]]
|
||||||
|
|
||||||
|
self.session.rollback() # read-only transaction
|
||||||
return GetResult(ids=ids, documents=documents, metadatas=metadatas)
|
return GetResult(ids=ids, documents=documents, metadatas=metadatas)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
self.session.rollback()
|
||||||
log.exception(f"Error during get: {e}")
|
log.exception(f"Error during get: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
@ -592,8 +598,10 @@ class PgvectorClient(VectorDBBase):
|
||||||
.first()
|
.first()
|
||||||
is not None
|
is not None
|
||||||
)
|
)
|
||||||
|
self.session.rollback() # read-only transaction
|
||||||
return exists
|
return exists
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
self.session.rollback()
|
||||||
log.exception(f"Error checking collection existence: {e}")
|
log.exception(f"Error checking collection existence: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue