fix: dispose races, tunnel guards, retry on stale

This commit is contained in:
smartass
2026-06-12 01:48:25 +05:00
parent 1fecb1cce4
commit 32143566d4
15 changed files with 412 additions and 61 deletions
+19
View File
@@ -6,6 +6,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { createRegistry } from '../../../src/config/registry.js'
import { writeStore } from '../../../src/config/store.js'
import type { ConnectionConfig } from '../../../src/config/types.js'
import { DriverDisposedError } from '../../../src/db/driver.js'
import { registerConnectionTools } from '../../../src/tools/connections.js'
import { callTool, connectClient, type FakeManager, fakeManager } from '../helpers.js'
@@ -147,6 +148,24 @@ describe('connection tools', () => {
expect(typeof payload.latencyMs).toBe('number')
})
it('test_connection retries once when the driver was disposed under it', async () => {
const serverVersion = vi
.fn()
.mockRejectedValueOnce(new DriverDisposedError())
.mockResolvedValueOnce('17.2')
manager.get.mockResolvedValue({
driver: { serverVersion },
config: conn('existing'),
source: 'store'
})
const response = await callTool(client, 'test_connection', { name: 'existing' })
expect(response.isError).toBe(false)
const payload = response.json() as Record<string, unknown>
expect(payload.ok).toBe(true)
expect(payload.version).toBe('17.2')
expect(manager.get).toHaveBeenCalledTimes(2)
})
it('test_connection formats driver failures', async () => {
manager.get.mockResolvedValue({
driver: {