Skip to content

Commit 6870770

Browse files
committed
refactor: remove unused Error state, defer to Phase 2 of #1691
Github-Issue: #1691
1 parent 8872f9b commit 6870770

File tree

2 files changed

+6
-32
lines changed

2 files changed

+6
-32
lines changed

src/mcp/server/session.py

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

6770
NotInitialized = 1
@@ -70,40 +73,31 @@ class InitializationState(Enum):
7073
Stateless = 4
7174
Closing = 5
7275
Closed = 6
73-
Error = 7
7476

7577

7678
# Valid state transitions: maps each state to the set of states it can transition to.
79+
# TODO(#1691 Phase 2): add Error state with transitions for unrecoverable failures.
7780
_VALID_TRANSITIONS: dict[InitializationState, set[InitializationState]] = {
7881
InitializationState.NotInitialized: {
7982
InitializationState.Initializing,
8083
InitializationState.Initialized, # client may send notification without prior request
8184
InitializationState.Closing,
82-
InitializationState.Error,
8385
},
8486
InitializationState.Initializing: {
8587
InitializationState.Initialized,
8688
InitializationState.Closing,
87-
InitializationState.Error,
8889
},
8990
InitializationState.Initialized: {
9091
InitializationState.Initializing, # re-initialization
9192
InitializationState.Closing,
92-
InitializationState.Error,
9393
},
9494
InitializationState.Stateless: {
9595
InitializationState.Closing,
96-
InitializationState.Error,
9796
},
9897
InitializationState.Closing: {
9998
InitializationState.Closed,
100-
InitializationState.Error,
10199
},
102100
InitializationState.Closed: set(),
103-
InitializationState.Error: {
104-
InitializationState.Closing,
105-
InitializationState.Closed,
106-
},
107101
}
108102

109103

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)