Browse Source

Log when receiving GOAWAY frames (#1476)

George Barnett 3 years ago
parent
commit
428c5c3058
2 changed files with 7 additions and 1 deletions
  1. 5 1
      Sources/GRPC/GRPCIdleHandler.swift
  2. 2 0
      Sources/GRPC/Logger.swift

+ 5 - 1
Sources/GRPC/GRPCIdleHandler.swift

@@ -287,7 +287,11 @@ internal final class GRPCIdleHandler: ChannelInboundHandler {
     let frame = self.unwrapInboundIn(data)
 
     switch frame.payload {
-    case .goAway:
+    case let .goAway(lastStreamID, errorCode, _):
+      self.stateMachine.logger.debug("received GOAWAY frame", metadata: [
+        MetadataKey.h2GoAwayLastStreamID: "\(Int(lastStreamID))",
+        MetadataKey.h2GoAwayError: "\(errorCode.networkCode)",
+      ])
       self.perform(operations: self.stateMachine.receiveGoAway())
     case let .settings(.settings(settings)):
       self.perform(operations: self.stateMachine.receiveSettings(settings))

+ 2 - 0
Sources/GRPC/Logger.swift

@@ -29,6 +29,8 @@ enum MetadataKey {
   static let h2Payload = "h2_payload"
   static let h2Headers = "h2_headers"
   static let h2DataBytes = "h2_data_bytes"
+  static let h2GoAwayError = "h2_goaway_error"
+  static let h2GoAwayLastStreamID = "h2_goaway_last_stream_id"
 
   static let error = "error"
 }