apache / apache/pulsar-client-go
[BUG] upgrade linkedin/goavro to v2.11.1
- Dominant language
- Go
- Stars
- 745
- Forks
- 389
- Avg merge
- 3d 20h
- Merged PRs (30d)
- 3
Description

Example code:
```go
package main
import (
"github.com/apache/pulsar-client-go/pulsar"
"github.com/pkg/errors"
"github.com/rs/zerolog/log"
)
type UserPulsarMessage struct {
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
Gender *string `json:"gender"`
}
var schema = `{
"name": "UserPulsarMessage",
"type": "record",
"fields": [
{
"name": "firstName",
"type": "string"
},
{
"name": "gender",
"type": ["null", "string"]
},
{
"name": "lastName",
"type": "string"
}
]
}`
func main() {
log.Debug().Msg("Start")
male := "male"
err := checkAvro("Dmytrii", "Havryliuk", &male)
if err != nil {
log.Error().Err(errors.WithStack(err)).Msgf(err.Error())
}
log.Debug().Msg("New case")
err = checkAvro("", "Portland", nil)
if err != nil {
log.Error().Err(errors.WithStack(err)).Msgf(err.Error())
}
log.Debug().Msg("Done")
}
func checkAvro(fName, lName string, gender *string) error {
avroSchema := pulsar.NewAvroSchema(schema, nil)
msg := &UserPulsarMessage{
FirstName: fName,
LastName: lName,
Gender: gender,
}
payload, err := avroSchema.Encode(msg)
if err != nil {
return err
}
log.Debug().Msgf("encoded payload: '%s'", string(payload))
var msgResult *UserPulsarMessage
err = avroSchema.Decode(payload, &msgResult)
if err != nil {
return err
}
log.Debug().Msgf("FirstName: '%s', LastName: '%s', Gender: '%s' Successful",
msgResult.FirstName, msgResult.LastName, msgResult.Gender)
return nil
}
```
Output:
```json
{"level":"debug","time":"2022-06-07T19:49:37+03:00","message":"Start"}
ERRO[0000] convert native Go form to binary Avro data error:cannot decode textual record "UserPulsarMessage": cannot decode textual union: expected: '{'; actual: '"' for key: "gender"
{"level":"error","error":"cannot decode textual record \"UserPulsarMessage\": cannot decode textual union: expected: '{'; actual: '\"' for key: \"gender\"","time":"2022-06-07T19:49:37+03:00","message":"cannot decode textual record \"UserPulsarMessage\": cannot decode textual union: expected: '{'; actual: '\"' for key: \"gender\""}
{"level":"debug","time":"2022-06-07T19:49:37+03:00","message":"New case"}
{"level":"debug","time":"2022-06-07T19:49:37+03:00","message":"encoded payload: '\u0000\u0000\u0010Portland'"}
{"level":"debug","time":"2022-06-07T19:49:37+03:00","message":"FirstName: '', LastName: 'Portland', Gender: '%!s(*string=)' Successful"}
{"level":"debug","time":"2022-06-07T19:49:37+03:00","message":"Done"}
Exiting.
```
Contributor guide
Assessment
This issue has not been assessed yet.