Skip to content

Commit 31b1164

Browse files
committed
refactor: remove unused Error state, defer to Phase 2 of #1691
Github-Issue: #1691
1 parent 73b74a1 commit 31b1164

2 files changed

Lines changed: 6 additions & 32 deletions

File tree

src/mcp/server/session.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ class InitializationState(Enum):
6262
State transitions:
6363
NotInitialized -> Initializing -> Initialized -> Closing -> Closed
6464
Stateless -> Closing -> Closed
65-
Any state -> Error (on unrecoverable failure)
65+
66+
.. note::
67+
An ``Error`` state for unrecoverable failures is planned for Phase 2
68+
of issue #1691.
6669
"""
6770

6871
NotInitialized = 1
@@ -71,40 +74,31 @@ class InitializationState(Enum):
7174
Stateless = 4
7275
Closing = 5
7376
Closed = 6
74-
Error = 7
7577

7678

7779
# Valid state transitions: maps each state to the set of states it can transition to.
80+
# TODO(#1691 Phase 2): add Error state with transitions for unrecoverable failures.
7881
_VALID_TRANSITIONS: dict[InitializationState, set[InitializationState]] = {
7982
InitializationState.NotInitialized: {
8083
InitializationState.Initializing,
8184
InitializationState.Initialized, # client may send notification without prior request
8285
InitializationState.Closing,
83-
InitializationState.Error,
8486
},
8587
InitializationState.Initializing: {
8688
InitializationState.Initialized,
8789
InitializationState.Closing,
88-
InitializationState.Error,
8990
},
9091
InitializationState.Initialized: {
9192
InitializationState.Initializing, # re-initialization
9293
InitializationState.Closing,
93-
InitializationState.Error,
9494
},
9595
InitializationState.Stateless: {
9696
InitializationState.Closing,
97-
InitializationState.Error,
9897
},
9998
InitializationState.Closing: {
10099
InitializationState.Closed,
101-
InitializationState.Error,
102100
},
103101
InitializationState.Closed: set(),
104-
InitializationState.Error: {
105-
InitializationState.Closing,
106-
InitializationState.Closed,
107-
},
108102
}
109103

110104

tests/server/test_session_lifecycle.py

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class TestInitializationStateEnum:
7171
"""Verify the expanded InitializationState enum values."""
7272

7373
def test_all_states_present(self) -> None:
74-
expected = {"NotInitialized", "Initializing", "Initialized", "Stateless", "Closing", "Closed", "Error"}
74+
expected = {"NotInitialized", "Initializing", "Initialized", "Stateless", "Closing", "Closed"}
7575
actual = {s.name for s in InitializationState}
7676
assert actual == expected
7777

@@ -95,11 +95,6 @@ def test_all_states_have_entry(self) -> None:
9595
def test_closed_is_terminal(self) -> None:
9696
assert _VALID_TRANSITIONS[InitializationState.Closed] == set()
9797

98-
def test_error_allows_recovery(self) -> None:
99-
targets = _VALID_TRANSITIONS[InitializationState.Error]
100-
assert InitializationState.Closing in targets
101-
assert InitializationState.Closed in targets
102-
10398

10499
# ---------------------------------------------------------------------------
105100
# _transition_state tests
@@ -153,21 +148,6 @@ async def test_closed_to_anything_raises(self) -> None:
153148
with pytest.raises(RuntimeError, match="Invalid session state transition"):
154149
session._transition_state(state)
155150

156-
async def test_error_transition_from_any_active_state(self) -> None:
157-
"""Error can be reached from active states."""
158-
for start_state in (
159-
InitializationState.NotInitialized,
160-
InitializationState.Initializing,
161-
InitializationState.Initialized,
162-
InitializationState.Stateless,
163-
InitializationState.Closing,
164-
):
165-
async with _session_context() as session:
166-
# Force the session into the desired start state
167-
session._initialization_state = start_state
168-
session._transition_state(InitializationState.Error)
169-
assert session.initialization_state == InitializationState.Error
170-
171151

172152
# ---------------------------------------------------------------------------
173153
# is_initialized property tests

0 commit comments

Comments
 (0)