Skip to content

Commit 41a9789

Browse files
committed
Fix mutex double release bug
1 parent c2c1b08 commit 41a9789

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/services/code-index/embedders/openrouter.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -315,13 +315,16 @@ export class OpenRouterEmbedder implements IEmbedder {
315315
*/
316316
private async waitForGlobalRateLimit(): Promise<void> {
317317
const release = await OpenRouterEmbedder.globalRateLimitState.mutex.acquire()
318+
let mutexReleased = false
319+
318320
try {
319321
const state = OpenRouterEmbedder.globalRateLimitState
320322

321323
if (state.isRateLimited && state.rateLimitResetTime > Date.now()) {
322324
const waitTime = state.rateLimitResetTime - Date.now()
323325
// Silent wait - no logging to prevent flooding
324-
release() // Release mutex before waiting
326+
release()
327+
mutexReleased = true
325328
await new Promise((resolve) => setTimeout(resolve, waitTime))
326329
return
327330
}
@@ -333,10 +336,8 @@ export class OpenRouterEmbedder implements IEmbedder {
333336
}
334337
} finally {
335338
// Only release if we haven't already
336-
try {
339+
if (!mutexReleased) {
337340
release()
338-
} catch {
339-
// Already released
340341
}
341342
}
342343
}

0 commit comments

Comments
 (0)