@@ -94,6 +94,7 @@ def __init__(
94
94
self ._local_cached = _LocalCache ()
95
95
self ._working = Condition ()
96
96
self ._max_results = self ._supervisor .match .max_results
97
+ self ._cached_clients : AbstractSet [str ] = set ()
97
98
self ._ex .run (self ._poll ())
98
99
99
100
def interrupt (self ) -> None :
@@ -129,6 +130,18 @@ async def cont() -> None:
129
130
self ._cache .set_cache (
130
131
{client : chunked }, skip_db = False
131
132
)
133
+ if context := self ._supervisor .current_context :
134
+ cached_clients = self ._cached_clients
135
+ async for lsp_comps in self ._request (
136
+ context , cached_clients = cached_clients
137
+ ):
138
+ if not self ._work_lock .locked ():
139
+ for chunked in batched (
140
+ lsp_comps .items , n = CACHE_CHUNK
141
+ ):
142
+ self ._cache .set_cache (
143
+ {lsp_comps .client : chunked }, skip_db = False
144
+ )
132
145
133
146
await self ._with_interrupt (cont ())
134
147
@@ -144,6 +157,7 @@ async def _work(self, context: Context) -> AsyncIterator[Completion]:
144
157
use_cache , cached_clients , cached = self ._cache .apply_cache (
145
158
context , always = False
146
159
)
160
+ self ._cached_clients = cached_clients
147
161
if not use_cache :
148
162
self ._local_cached .pre .clear ()
149
163
self ._local_cached .post .clear ()
0 commit comments