mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-10-10 21:26:01 +02:00
fix dupe ids and session handling
This commit is contained in:
@@ -323,15 +323,27 @@ def update_document_set(
|
|||||||
_mark_document_set_cc_pairs_as_outdated__no_commit(
|
_mark_document_set_cc_pairs_as_outdated__no_commit(
|
||||||
db_session=db_session, document_set_id=document_set_row.id
|
db_session=db_session, document_set_id=document_set_row.id
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# commit this before performing more updates on the row id or else
|
||||||
|
# we'll have conflicting updates in the same commit
|
||||||
|
db_session.commit()
|
||||||
|
|
||||||
# add in rows for the new CC pairs
|
# add in rows for the new CC pairs
|
||||||
ds_cc_pairs = [
|
existing_cc_pair_ids: set[int] = set() # use to avoid duplicates
|
||||||
DocumentSet__ConnectorCredentialPair(
|
|
||||||
|
ds_cc_pairs: list[DocumentSet__ConnectorCredentialPair] = []
|
||||||
|
for cc_pair_id in document_set_update_request.cc_pair_ids:
|
||||||
|
if cc_pair_id in existing_cc_pair_ids:
|
||||||
|
continue
|
||||||
|
|
||||||
|
item = DocumentSet__ConnectorCredentialPair(
|
||||||
document_set_id=document_set_update_request.id,
|
document_set_id=document_set_update_request.id,
|
||||||
connector_credential_pair_id=cc_pair_id,
|
connector_credential_pair_id=cc_pair_id,
|
||||||
is_current=True,
|
is_current=True,
|
||||||
)
|
)
|
||||||
for cc_pair_id in document_set_update_request.cc_pair_ids
|
ds_cc_pairs.append(item)
|
||||||
]
|
existing_cc_pair_ids.add(cc_pair_id)
|
||||||
|
|
||||||
db_session.add_all(ds_cc_pairs)
|
db_session.add_all(ds_cc_pairs)
|
||||||
db_session.commit()
|
db_session.commit()
|
||||||
except:
|
except:
|
||||||
|
@@ -71,15 +71,15 @@ def get_session_with_tenant(*, tenant_id: str | None) -> Generator[Session, None
|
|||||||
|
|
||||||
|
|
||||||
def get_session() -> Generator[Session, None, None]:
|
def get_session() -> Generator[Session, None, None]:
|
||||||
return OnyxSession.get_session()
|
yield from OnyxSession.get_session()
|
||||||
|
|
||||||
|
|
||||||
def get_multi_tenant_session(tenant_id: str) -> Generator[Session, None, None]:
|
def get_multi_tenant_session(tenant_id: str) -> Generator[Session, None, None]:
|
||||||
return OnyxSession.get_multi_tenant_session(tenant_id)
|
yield from OnyxSession.get_multi_tenant_session(tenant_id)
|
||||||
|
|
||||||
|
|
||||||
def get_single_tenant_session() -> Generator[Session, None, None]:
|
def get_single_tenant_session() -> Generator[Session, None, None]:
|
||||||
return OnyxSession.get_single_tenant_session()
|
yield from OnyxSession.get_single_tenant_session()
|
||||||
|
|
||||||
|
|
||||||
async def get_async_session() -> AsyncGenerator[AsyncSession, None]:
|
async def get_async_session() -> AsyncGenerator[AsyncSession, None]:
|
||||||
@@ -88,13 +88,6 @@ async def get_async_session() -> AsyncGenerator[AsyncSession, None]:
|
|||||||
yield session
|
yield session
|
||||||
|
|
||||||
|
|
||||||
# AsyncSessionLocal = sessionmaker( # type: ignore
|
|
||||||
# bind=get_sqlalchemy_async_engine(),
|
|
||||||
# class_=AsyncSession,
|
|
||||||
# expire_on_commit=False,
|
|
||||||
# )
|
|
||||||
|
|
||||||
|
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
async def get_async_session_with_tenant(
|
async def get_async_session_with_tenant(
|
||||||
tenant_id: str | None = None,
|
tenant_id: str | None = None,
|
||||||
|
@@ -652,6 +652,8 @@ def associate_credential_to_connector(
|
|||||||
# Ensures we don't leave invalid connectors in the database
|
# Ensures we don't leave invalid connectors in the database
|
||||||
# NOTE: consensus is that it makes sense to unify connector and ccpair creation flows
|
# NOTE: consensus is that it makes sense to unify connector and ccpair creation flows
|
||||||
# which would rid us of needing to handle cases like these
|
# which would rid us of needing to handle cases like these
|
||||||
|
logger.exception("ValidationError")
|
||||||
|
|
||||||
delete_connector(db_session, connector_id)
|
delete_connector(db_session, connector_id)
|
||||||
db_session.commit()
|
db_session.commit()
|
||||||
|
|
||||||
|
@@ -21,9 +21,11 @@ from onyx.server.features.document_set.models import CheckDocSetPublicResponse
|
|||||||
from onyx.server.features.document_set.models import DocumentSet
|
from onyx.server.features.document_set.models import DocumentSet
|
||||||
from onyx.server.features.document_set.models import DocumentSetCreationRequest
|
from onyx.server.features.document_set.models import DocumentSetCreationRequest
|
||||||
from onyx.server.features.document_set.models import DocumentSetUpdateRequest
|
from onyx.server.features.document_set.models import DocumentSetUpdateRequest
|
||||||
|
from onyx.utils.logger import setup_logger
|
||||||
from onyx.utils.variable_functionality import fetch_ee_implementation_or_noop
|
from onyx.utils.variable_functionality import fetch_ee_implementation_or_noop
|
||||||
from shared_configs.contextvars import get_current_tenant_id
|
from shared_configs.contextvars import get_current_tenant_id
|
||||||
|
|
||||||
|
logger = setup_logger()
|
||||||
|
|
||||||
router = APIRouter(prefix="/manage")
|
router = APIRouter(prefix="/manage")
|
||||||
|
|
||||||
@@ -83,6 +85,7 @@ def patch_document_set(
|
|||||||
user=user,
|
user=user,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
logger.exception("patch_document_set exceptioned")
|
||||||
raise HTTPException(status_code=400, detail=str(e))
|
raise HTTPException(status_code=400, detail=str(e))
|
||||||
|
|
||||||
primary_app.send_task(
|
primary_app.send_task(
|
||||||
|
Reference in New Issue
Block a user