Skip to content

Commit 5f5cc9a

Browse files
authored
Feature/redis connector refactor (#2992)
* refactor RedisConnectorDeletion into RedisConnector * refactor redis stop and deletion * port pruning * nest pruning * port deletion * port indexing * refactor into individual files * refactor redis connector index to take search settings at init * move back to debug level log * refactor doc set and user group (mostly) * mypy fixes
1 parent e4bb14d commit 5f5cc9a

File tree

23 files changed

+1205
-943
lines changed

23 files changed

+1205
-943
lines changed

backend/danswer/background/celery/apps/app_base.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,16 @@
1414

1515
from danswer.background.celery.apps.task_formatters import CeleryTaskColoredFormatter
1616
from danswer.background.celery.apps.task_formatters import CeleryTaskPlainFormatter
17-
from danswer.background.celery.celery_redis import RedisConnectorCredentialPair
18-
from danswer.background.celery.celery_redis import RedisConnectorDeletion
19-
from danswer.background.celery.celery_redis import RedisConnectorPruning
20-
from danswer.background.celery.celery_redis import RedisDocumentSet
21-
from danswer.background.celery.celery_redis import RedisUserGroup
2217
from danswer.background.celery.celery_utils import celery_is_worker_primary
2318
from danswer.configs.constants import DanswerRedisLocks
2419
from danswer.db.engine import get_all_tenant_ids
20+
from danswer.redis.redis_connector import RedisConnector
21+
from danswer.redis.redis_connector_credential_pair import RedisConnectorCredentialPair
22+
from danswer.redis.redis_connector_delete import RedisConnectorDelete
23+
from danswer.redis.redis_connector_prune import RedisConnectorPrune
24+
from danswer.redis.redis_document_set import RedisDocumentSet
2525
from danswer.redis.redis_pool import get_redis_client
26+
from danswer.redis.redis_usergroup import RedisUserGroup
2627
from danswer.utils.logger import ColoredFormatter
2728
from danswer.utils.logger import PlainFormatter
2829
from danswer.utils.logger import setup_logger
@@ -108,29 +109,27 @@ def on_task_postrun(
108109
if task_id.startswith(RedisDocumentSet.PREFIX):
109110
document_set_id = RedisDocumentSet.get_id_from_task_id(task_id)
110111
if document_set_id is not None:
111-
rds = RedisDocumentSet(int(document_set_id))
112+
rds = RedisDocumentSet(tenant_id, int(document_set_id))
112113
r.srem(rds.taskset_key, task_id)
113114
return
114115

115116
if task_id.startswith(RedisUserGroup.PREFIX):
116117
usergroup_id = RedisUserGroup.get_id_from_task_id(task_id)
117118
if usergroup_id is not None:
118-
rug = RedisUserGroup(int(usergroup_id))
119+
rug = RedisUserGroup(tenant_id, int(usergroup_id))
119120
r.srem(rug.taskset_key, task_id)
120121
return
121122

122-
if task_id.startswith(RedisConnectorDeletion.PREFIX):
123-
cc_pair_id = RedisConnectorDeletion.get_id_from_task_id(task_id)
123+
if task_id.startswith(RedisConnectorDelete.PREFIX):
124+
cc_pair_id = RedisConnector.get_id_from_task_id(task_id)
124125
if cc_pair_id is not None:
125-
rcd = RedisConnectorDeletion(int(cc_pair_id))
126-
r.srem(rcd.taskset_key, task_id)
126+
RedisConnectorDelete.remove_from_taskset(int(cc_pair_id), task_id, r)
127127
return
128128

129-
if task_id.startswith(RedisConnectorPruning.SUBTASK_PREFIX):
130-
cc_pair_id = RedisConnectorPruning.get_id_from_task_id(task_id)
129+
if task_id.startswith(RedisConnectorPrune.SUBTASK_PREFIX):
130+
cc_pair_id = RedisConnector.get_id_from_task_id(task_id)
131131
if cc_pair_id is not None:
132-
rcp = RedisConnectorPruning(int(cc_pair_id))
133-
r.srem(rcp.taskset_key, task_id)
132+
RedisConnectorPrune.remove_from_taskset(int(cc_pair_id), task_id, r)
134133
return
135134

136135

backend/danswer/background/celery/apps/primary.py

Lines changed: 13 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@
1313

1414
import danswer.background.celery.apps.app_base as app_base
1515
from danswer.background.celery.apps.app_base import task_logger
16-
from danswer.background.celery.celery_redis import RedisConnectorCredentialPair
17-
from danswer.background.celery.celery_redis import RedisConnectorDeletion
18-
from danswer.background.celery.celery_redis import RedisConnectorIndexing
19-
from danswer.background.celery.celery_redis import RedisConnectorPruning
20-
from danswer.background.celery.celery_redis import RedisConnectorStop
21-
from danswer.background.celery.celery_redis import RedisDocumentSet
22-
from danswer.background.celery.celery_redis import RedisUserGroup
2316
from danswer.background.celery.celery_utils import celery_is_worker_primary
2417
from danswer.configs.constants import CELERY_PRIMARY_WORKER_LOCK_TIMEOUT
2518
from danswer.configs.constants import DanswerRedisLocks
2619
from danswer.configs.constants import POSTGRES_CELERY_WORKER_PRIMARY_APP_NAME
2720
from danswer.db.engine import get_all_tenant_ids
2821
from danswer.db.engine import SqlEngine
22+
from danswer.redis.redis_connector_credential_pair import RedisConnectorCredentialPair
23+
from danswer.redis.redis_connector_delete import RedisConnectorDelete
24+
from danswer.redis.redis_connector_index import RedisConnectorIndex
25+
from danswer.redis.redis_connector_prune import RedisConnectorPrune
26+
from danswer.redis.redis_connector_stop import RedisConnectorStop
27+
from danswer.redis.redis_document_set import RedisDocumentSet
2928
from danswer.redis.redis_pool import get_redis_client
29+
from danswer.redis.redis_usergroup import RedisUserGroup
3030
from danswer.utils.logger import setup_logger
3131

3232

@@ -120,50 +120,17 @@ def on_worker_init(sender: Any, **kwargs: Any) -> None:
120120
r.delete(RedisConnectorCredentialPair.get_taskset_key())
121121
r.delete(RedisConnectorCredentialPair.get_fence_key())
122122

123-
for key in r.scan_iter(RedisDocumentSet.TASKSET_PREFIX + "*"):
124-
r.delete(key)
123+
RedisDocumentSet.reset_all(r)
125124

126-
for key in r.scan_iter(RedisDocumentSet.FENCE_PREFIX + "*"):
127-
r.delete(key)
125+
RedisUserGroup.reset_all(r)
128126

129-
for key in r.scan_iter(RedisUserGroup.TASKSET_PREFIX + "*"):
130-
r.delete(key)
127+
RedisConnectorDelete.reset_all(r)
131128

132-
for key in r.scan_iter(RedisUserGroup.FENCE_PREFIX + "*"):
133-
r.delete(key)
129+
RedisConnectorPrune.reset_all(r)
134130

135-
for key in r.scan_iter(RedisConnectorDeletion.TASKSET_PREFIX + "*"):
136-
r.delete(key)
131+
RedisConnectorIndex.reset_all(r)
137132

138-
for key in r.scan_iter(RedisConnectorDeletion.FENCE_PREFIX + "*"):
139-
r.delete(key)
140-
141-
for key in r.scan_iter(RedisConnectorPruning.TASKSET_PREFIX + "*"):
142-
r.delete(key)
143-
144-
for key in r.scan_iter(RedisConnectorPruning.GENERATOR_COMPLETE_PREFIX + "*"):
145-
r.delete(key)
146-
147-
for key in r.scan_iter(RedisConnectorPruning.GENERATOR_PROGRESS_PREFIX + "*"):
148-
r.delete(key)
149-
150-
for key in r.scan_iter(RedisConnectorPruning.FENCE_PREFIX + "*"):
151-
r.delete(key)
152-
153-
for key in r.scan_iter(RedisConnectorIndexing.TASKSET_PREFIX + "*"):
154-
r.delete(key)
155-
156-
for key in r.scan_iter(RedisConnectorIndexing.GENERATOR_COMPLETE_PREFIX + "*"):
157-
r.delete(key)
158-
159-
for key in r.scan_iter(RedisConnectorIndexing.GENERATOR_PROGRESS_PREFIX + "*"):
160-
r.delete(key)
161-
162-
for key in r.scan_iter(RedisConnectorIndexing.FENCE_PREFIX + "*"):
163-
r.delete(key)
164-
165-
for key in r.scan_iter(RedisConnectorStop.FENCE_PREFIX + "*"):
166-
r.delete(key)
133+
RedisConnectorStop.reset_all(r)
167134

168135

169136
@worker_ready.connect

0 commit comments

Comments
 (0)