Skip to content

Commit eb7b1fb

Browse files
authored
Print invalid state, if hitting precondition (#545) (#547)
1 parent 70826d0 commit eb7b1fb

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

Sources/AsyncHTTPClient/ConnectionPool/HTTP1.1/HTTP1ConnectionStateMachine.swift

+8-8
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ struct HTTP1ConnectionStateMachine {
159159
metadata: RequestFramingMetadata
160160
) -> Action {
161161
guard case .idle = self.state else {
162-
preconditionFailure("Invalid state")
162+
preconditionFailure("Invalid state: \(self.state)")
163163
}
164164

165165
var requestStateMachine = HTTPRequestStateMachine(isChannelWritable: self.isChannelWritable)
@@ -173,7 +173,7 @@ struct HTTP1ConnectionStateMachine {
173173

174174
mutating func requestStreamPartReceived(_ part: IOData) -> Action {
175175
guard case .inRequest(var requestStateMachine, let close) = self.state else {
176-
preconditionFailure("Invalid state")
176+
preconditionFailure("Invalid state: \(self.state)")
177177
}
178178

179179
return self.avoidingStateMachineCoW { state -> Action in
@@ -185,7 +185,7 @@ struct HTTP1ConnectionStateMachine {
185185

186186
mutating func requestStreamFinished() -> Action {
187187
guard case .inRequest(var requestStateMachine, let close) = self.state else {
188-
preconditionFailure("Invalid state")
188+
preconditionFailure("Invalid state: \(self.state)")
189189
}
190190

191191
return self.avoidingStateMachineCoW { state -> Action in
@@ -198,7 +198,7 @@ struct HTTP1ConnectionStateMachine {
198198
mutating func requestCancelled(closeConnection: Bool) -> Action {
199199
switch self.state {
200200
case .initialized:
201-
preconditionFailure("This event must only happen, if the connection is leased. During startup this is impossible")
201+
preconditionFailure("This event must only happen, if the connection is leased. During startup this is impossible. Invalid state: \(self.state)")
202202

203203
case .idle:
204204
if closeConnection {
@@ -250,7 +250,7 @@ struct HTTP1ConnectionStateMachine {
250250
mutating func channelRead(_ part: HTTPClientResponsePart) -> Action {
251251
switch self.state {
252252
case .initialized, .idle:
253-
preconditionFailure("Invalid state")
253+
preconditionFailure("Invalid state: \(self.state)")
254254

255255
case .inRequest(var requestStateMachine, var close):
256256
return self.avoidingStateMachineCoW { state -> Action in
@@ -369,7 +369,7 @@ extension HTTP1ConnectionStateMachine.State {
369369
return .forwardResponseBodyParts(parts)
370370
case .succeedRequest(let finalAction, let finalParts):
371371
guard case .inRequest(_, close: let close) = self else {
372-
preconditionFailure("Invalid state")
372+
preconditionFailure("Invalid state: \(self)")
373373
}
374374

375375
let newFinalAction: HTTP1ConnectionStateMachine.Action.FinalStreamAction
@@ -388,7 +388,7 @@ extension HTTP1ConnectionStateMachine.State {
388388
case .failRequest(let error, let finalAction):
389389
switch self {
390390
case .initialized:
391-
preconditionFailure("Invalid state")
391+
preconditionFailure("Invalid state: \(self)")
392392
case .idle:
393393
preconditionFailure("How can we fail a task, if we are idle")
394394
case .inRequest(_, close: let close):
@@ -433,7 +433,7 @@ extension HTTP1ConnectionStateMachine: CustomStringConvertible {
433433
case .closed:
434434
return ".closed"
435435
case .modifying:
436-
preconditionFailure(".modifying")
436+
preconditionFailure("Invalid state: \(self.state)")
437437
}
438438
}
439439
}

Sources/AsyncHTTPClient/RequestBag+StateMachine.swift

+10-10
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,10 @@ extension RequestBag.StateMachine {
127127
return .none
128128

129129
case .finished:
130-
preconditionFailure("Invalid state")
130+
preconditionFailure("Invalid state: \(self.state)")
131131

132132
case .modifying:
133-
preconditionFailure("Invalid state")
133+
preconditionFailure("Invalid state: \(self.state)")
134134
}
135135
}
136136

@@ -158,7 +158,7 @@ extension RequestBag.StateMachine {
158158
// the request is already finished nothing further to do
159159
break
160160
case .modifying:
161-
preconditionFailure("Invalid state")
161+
preconditionFailure("Invalid state: \(self.state)")
162162
}
163163
}
164164

@@ -205,7 +205,7 @@ extension RequestBag.StateMachine {
205205
case .finished(error: .none):
206206
return .failFuture(HTTPClientError.requestStreamCancelled)
207207
case .modifying:
208-
preconditionFailure("Invalid state")
208+
preconditionFailure("Invalid state: \(self.state)")
209209
}
210210
}
211211

@@ -251,7 +251,7 @@ extension RequestBag.StateMachine {
251251
case .finished(error: _):
252252
return .none
253253
case .modifying:
254-
preconditionFailure("Invalid state")
254+
preconditionFailure("Invalid state: \(self.state)")
255255
}
256256
}
257257

@@ -282,7 +282,7 @@ extension RequestBag.StateMachine {
282282
case .finished(error: .none):
283283
preconditionFailure("How can the request be finished without error, before receiving response head?")
284284
case .modifying:
285-
preconditionFailure("Invalid state")
285+
preconditionFailure("Invalid state: \(self.state)")
286286
}
287287
}
288288

@@ -319,7 +319,7 @@ extension RequestBag.StateMachine {
319319
case .finished(error: .none):
320320
preconditionFailure("How can the request be finished without error, before receiving response head?")
321321
case .modifying:
322-
preconditionFailure("Invalid state")
322+
preconditionFailure("Invalid state: \(self.state)")
323323
}
324324
}
325325

@@ -371,7 +371,7 @@ extension RequestBag.StateMachine {
371371
case .finished(error: .none):
372372
preconditionFailure("How can the request be finished without error, before receiving response head?")
373373
case .modifying:
374-
preconditionFailure("Invalid state")
374+
preconditionFailure("Invalid state: \(self.state)")
375375
}
376376
}
377377

@@ -395,7 +395,7 @@ extension RequestBag.StateMachine {
395395
private mutating func failWithConsumptionError(_ error: Error) -> ConsumeAction {
396396
switch self.state {
397397
case .initialized, .queued:
398-
preconditionFailure("Invalid state")
398+
preconditionFailure("Invalid state: \(self.state)")
399399
case .executing(_, _, .initialized):
400400
preconditionFailure("Invalid state: Must have received response head, before this method is called for the first time")
401401

@@ -518,7 +518,7 @@ extension RequestBag.StateMachine {
518518
// this might happen, if the stream consumer has failed... let's just drop the data
519519
return .none
520520
case .modifying:
521-
preconditionFailure("Invalid state")
521+
preconditionFailure("Invalid state: \(self.state)")
522522
}
523523
}
524524
}

Tests/AsyncHTTPClientTests/HTTP2ConnectionTests.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ extension TestConnectionCreator: HTTPConnectionRequester {
352352
return .fail(promise, Error.wantedHTTP2ConnectionButGotHTTP1)
353353

354354
case .idle:
355-
preconditionFailure("Invalid state")
355+
preconditionFailure("Invalid state: \(self.state)")
356356
}
357357
}
358358
wrapper.complete()
@@ -369,7 +369,7 @@ extension TestConnectionCreator: HTTPConnectionRequester {
369369
return .succeed(promise, connection)
370370

371371
case .idle:
372-
preconditionFailure("Invalid state")
372+
preconditionFailure("Invalid state: \(self.state)")
373373
}
374374
}
375375
wrapper.complete()
@@ -400,7 +400,7 @@ extension TestConnectionCreator: HTTPConnectionRequester {
400400
return .type2(promise)
401401

402402
case .idle:
403-
preconditionFailure("Invalid state")
403+
preconditionFailure("Invalid state: \(self.state)")
404404
}
405405
}
406406
wrapper.fail(error)

0 commit comments

Comments
 (0)