Commit 844f4e0
fix(mcp): dispose previous in-flight runtime and treat ttl=0 as unbounded
Two narrow fixes to the bundled MCP runtime cache:
1. When a sessionId moves to a different runtimeKey (workspace, fingerprint,
or scope changed) while the previous key still has an in-flight create
promise, wait for that promise to settle, drop the orphan entry written
by its .then, and dispose the runtime. Previously the createInFlight
tracker was deleted but the pending promise still resolved and stored
the runtime under previousRuntimeKey with no attached sessions, leaking
an MCP child until a later sweep (or indefinitely if no sweep timer).
2. Treat sessionIdleTtlMs=0 as unbounded when merging shared-runtime TTLs.
The sweep already skips runtimes with ttl<=0; the TTL-merge function
was comparing as plain numbers, so an attaching session with a finite
TTL would override a prior session that had disabled eviction. Now 0
wins over any nonzero TTL and can't be displaced.
Adds two regression tests, both verified to fail without the matching fix.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>1 parent ad89d0b commit 844f4e0
2 files changed
Lines changed: 115 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1647 | 1647 | | |
1648 | 1648 | | |
1649 | 1649 | | |
1650 | | - | |
| 1650 | + | |
1651 | 1651 | | |
1652 | 1652 | | |
1653 | 1653 | | |
| |||
1902 | 1902 | | |
1903 | 1903 | | |
1904 | 1904 | | |
| 1905 | + | |
| 1906 | + | |
| 1907 | + | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
| 1916 | + | |
| 1917 | + | |
| 1918 | + | |
| 1919 | + | |
| 1920 | + | |
| 1921 | + | |
| 1922 | + | |
| 1923 | + | |
| 1924 | + | |
| 1925 | + | |
| 1926 | + | |
| 1927 | + | |
| 1928 | + | |
| 1929 | + | |
| 1930 | + | |
| 1931 | + | |
| 1932 | + | |
| 1933 | + | |
| 1934 | + | |
| 1935 | + | |
| 1936 | + | |
| 1937 | + | |
| 1938 | + | |
| 1939 | + | |
| 1940 | + | |
| 1941 | + | |
| 1942 | + | |
| 1943 | + | |
| 1944 | + | |
| 1945 | + | |
| 1946 | + | |
| 1947 | + | |
| 1948 | + | |
| 1949 | + | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + | |
| 1955 | + | |
| 1956 | + | |
| 1957 | + | |
| 1958 | + | |
| 1959 | + | |
| 1960 | + | |
| 1961 | + | |
| 1962 | + | |
| 1963 | + | |
| 1964 | + | |
| 1965 | + | |
| 1966 | + | |
| 1967 | + | |
| 1968 | + | |
| 1969 | + | |
| 1970 | + | |
| 1971 | + | |
| 1972 | + | |
| 1973 | + | |
| 1974 | + | |
| 1975 | + | |
| 1976 | + | |
| 1977 | + | |
| 1978 | + | |
| 1979 | + | |
| 1980 | + | |
| 1981 | + | |
| 1982 | + | |
| 1983 | + | |
| 1984 | + | |
| 1985 | + | |
| 1986 | + | |
| 1987 | + | |
| 1988 | + | |
| 1989 | + | |
| 1990 | + | |
| 1991 | + | |
| 1992 | + | |
| 1993 | + | |
| 1994 | + | |
| 1995 | + | |
| 1996 | + | |
| 1997 | + | |
| 1998 | + | |
| 1999 | + | |
| 2000 | + | |
1905 | 2001 | | |
1906 | 2002 | | |
1907 | 2003 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
938 | 938 | | |
939 | 939 | | |
940 | 940 | | |
941 | | - | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
942 | 944 | | |
943 | | - | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
944 | 949 | | |
945 | 950 | | |
946 | 951 | | |
| |||
1055 | 1060 | | |
1056 | 1061 | | |
1057 | 1062 | | |
| 1063 | + | |
1058 | 1064 | | |
1059 | 1065 | | |
1060 | 1066 | | |
| |||
1063 | 1069 | | |
1064 | 1070 | | |
1065 | 1071 | | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
1066 | 1082 | | |
1067 | 1083 | | |
1068 | 1084 | | |
| |||
0 commit comments