@@ -434,7 +434,9 @@ module Protocol =
434434 buf.WriteInt32 x.messageSize
435435 Message.Write ( messageVer, x.message, buf)
436436
437- static member internal Read ( messageVer : ApiVersion , partition : Partition , ec : ErrorCode , messageSetSize : int , buf : BinaryZipper ) =
437+ // NB: skipTooLarge=true is for scenarios where decompression is involved and a message set is being decoded from an individual message
438+ // which was itself too small.
439+ static member internal Read ( messageVer : ApiVersion , partition : Partition , ec : ErrorCode , messageSetSize : int , skipTooLarge : bool , buf : BinaryZipper ) =
438440 let mutable consumed = 0
439441 let arr = ResizeArray<_>()
440442 while consumed < messageSetSize && buf.Buffer.Count > 0 do
@@ -445,7 +447,20 @@ module Protocol =
445447 let ( messageSize : MessageSize ) = buf.ReadInt32 ()
446448 let messageSetRemainder = messageSetRemainder - 12 // (Offset + MessageSize)
447449 if messageSize > messageSetSize then
448- raise ( MessageTooBigException( sprintf " partition=%i offset=%i message_set_size=%i message_size=%i " partition offset messageSetSize messageSize))
450+ let errMsg = sprintf " partition=%i offset=%i message_set_size=%i message_size=%i consumed_bytes=%i consumed_count=%i "
451+ partition offset messageSetSize messageSize consumed arr.Count
452+ if not skipTooLarge then
453+ raise ( MessageTooBigException( errMsg))
454+ else
455+ // let payload = Binary.toString buf.Buffer
456+ // printfn "|WARN|MessageTooBig|%s" errMsg
457+ // printfn "|WARN|MessageTooBig|payload=%s" payload
458+ // try
459+ // let message = Message.Read (messageVer,buf)
460+ // printfn "|WARN|MessageTooBig|payload=%s" (Binary.toString message.value)
461+ // with ex ->
462+ // printfn "ERROR DECODING MESSAGE|%O" ex
463+ ()
449464 try
450465 if messageSetRemainder >= messageSize && buf.Buffer.Count >= messageSize then
451466 let message = Message.Read ( messageVer, buf)
@@ -740,7 +755,7 @@ module Protocol =
740755 let errorCode = buf.ReadInt16 ()
741756 let hwo = buf.ReadInt64 ()
742757 let mss = buf.ReadInt32 ()
743- let ms = MessageSet.Read ( MessageVersions.fetchResMessage ver, partition, errorCode, mss, buf)
758+ let ms = MessageSet.Read ( MessageVersions.fetchResMessage ver, partition, errorCode, mss, false , buf)
744759 ps.[ j] <- partition, errorCode, hwo, mss, ms
745760 topics.[ i] <- ( t, ps)
746761 let res = FetchResponse( throttleTime, topics)
0 commit comments