Skip to content

Commit d9541c7

Browse files
committed
better caching
1 parent 389333b commit d9541c7

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

coq/clients/lsp/worker.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ def __init__(
9494
self._local_cached = _LocalCache()
9595
self._working = Condition()
9696
self._max_results = self._supervisor.match.max_results
97+
self._cached_clients: AbstractSet[str] = set()
9798
self._ex.run(self._poll())
9899

99100
def interrupt(self) -> None:
@@ -129,6 +130,18 @@ async def cont() -> None:
129130
self._cache.set_cache(
130131
{client: chunked}, skip_db=False
131132
)
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+
)
132145

133146
await self._with_interrupt(cont())
134147

@@ -144,6 +157,7 @@ async def _work(self, context: Context) -> AsyncIterator[Completion]:
144157
use_cache, cached_clients, cached = self._cache.apply_cache(
145158
context, always=False
146159
)
160+
self._cached_clients = cached_clients
147161
if not use_cache:
148162
self._local_cached.pre.clear()
149163
self._local_cached.post.clear()

0 commit comments

Comments
 (0)