Skip to content

Commit f1667d6

Browse files
committed
Extract simple error prefix into computed variable
Signed-off-by: Moritz Lang <[email protected]>
1 parent 4d0066e commit f1667d6

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

Sources/Valkey/Connection/ValkeyConnection.swift

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -199,15 +199,12 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
199199
}
200200
} catch let error as ValkeyClientError {
201201
#if DistributedTracingSupport
202-
span?.recordError(error)
203-
if let message = error.message {
204-
var prefixEndIndex = message.startIndex
205-
while prefixEndIndex < message.endIndex, message[prefixEndIndex] != " " {
206-
message.formIndex(after: &prefixEndIndex)
202+
if let span {
203+
span.recordError(error)
204+
span.setStatus(SpanStatus(code: .error))
205+
if let prefix = error.simpleErrorPrefix {
206+
span.attributes["db.response.status_code"] = "\(prefix)"
207207
}
208-
let prefix = message[message.startIndex..<prefixEndIndex]
209-
span?.attributes["db.response.status_code"] = "\(prefix)"
210-
span?.setStatus(SpanStatus(code: .error))
211208
}
212209
#endif
213210
throw error
@@ -455,3 +452,20 @@ struct AutoIncrementingInteger {
455452
return value - 1
456453
}
457454
}
455+
456+
#if DistributedTracingSupport
457+
extension ValkeyClientError {
458+
/// Extract the simple error prefix from this error.
459+
///
460+
/// - SeeAlso: [](https://valkey.io/topics/protocol/#simple-errors)
461+
@usableFromInline
462+
var simpleErrorPrefix: Substring? {
463+
guard let message else { return nil }
464+
var prefixEndIndex = message.startIndex
465+
while prefixEndIndex < message.endIndex, message[prefixEndIndex] != " " {
466+
message.formIndex(after: &prefixEndIndex)
467+
}
468+
return message[message.startIndex..<prefixEndIndex]
469+
}
470+
}
471+
#endif

0 commit comments

Comments
 (0)