Skip to content

Commit 356d1cd

Browse files
authored
handle empty payload (#1145)
1 parent d8d4136 commit 356d1cd

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

schemaregistry/serde/protobuf/protobuf.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ func NewDeserializer(client schemaregistry.Client, serdeType serde.Type, conf *D
357357

358358
// Deserialize implements deserialization of Protobuf data
359359
func (s *Deserializer) Deserialize(topic string, payload []byte) (interface{}, error) {
360-
if payload == nil {
360+
if len(payload) == 0 {
361361
return nil, nil
362362
}
363363
info, err := s.GetSchema(topic, payload)

schemaregistry/serde/protobuf/protobuf_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,3 +184,18 @@ func TestProtobufSerdeWithCycle(t *testing.T) {
184184
newobj, err := deser.Deserialize("topic1", bytes)
185185
serde.MaybeFail("deserialization", err, serde.Expect(newobj.(proto.Message).ProtoReflect(), obj.ProtoReflect()))
186186
}
187+
188+
func TestProtobufSerdeEmptyMessage(t *testing.T) {
189+
serde.MaybeFail = serde.InitFailFunc(t)
190+
var err error
191+
conf := schemaregistry.NewConfig("mock://")
192+
client, err := schemaregistry.NewClient(conf)
193+
serde.MaybeFail("Schema Registry configuration", err)
194+
deser, err := NewDeserializer(client, serde.ValueSerde, NewDeserializerConfig())
195+
serde.MaybeFail("Deserializer configuration", err)
196+
197+
_, err = deser.Deserialize("topic1", nil)
198+
serde.MaybeFail("deserialization", err)
199+
_, err = deser.Deserialize("topic1", []byte{})
200+
serde.MaybeFail("deserialization", err)
201+
}

0 commit comments

Comments
 (0)