mirror of
https://github.com/kemko/nomad.git
synced 2026-01-01 16:05:42 +03:00
When serializing msgpack, only consider codec tag
When serializing structs with msgpack, only consider type tags of `codec`. Hashicorp/go-msgpack (based on ugorji/go) defaults to interpretting `codec` tag if it's available, but falls to using `json` if `codec` isn't present. This behavior is surprising in cases where we want to serialize json differently from msgpack, e.g. serializing `ConsulExposeConfig`.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package structs
|
||||
|
||||
//go:generate codecgen -c github.com/hashicorp/go-msgpack/codec -d 102 -t codegen_generated -o structs.generated.go structs.go
|
||||
//go:generate codecgen -c github.com/hashicorp/go-msgpack/codec -st codec -d 102 -t codegen_generated -o structs.generated.go structs.go
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
@@ -4,6 +4,7 @@ set -e
|
||||
FILES="$(ls ./*.go | grep -v -e _test.go -e .generated.go | tr '\n' ' ')"
|
||||
codecgen \
|
||||
-c github.com/hashicorp/go-msgpack/codec \
|
||||
-st codec \
|
||||
-d 100 \
|
||||
-t codegen_generated \
|
||||
-o structs.generated.go \
|
||||
|
||||
@@ -9561,6 +9561,9 @@ var MsgpackHandle = func() *codec.MsgpackHandle {
|
||||
// nil interface{}.
|
||||
h.MapType = reflect.TypeOf(map[string]interface{}(nil))
|
||||
|
||||
// only review struct codec tags
|
||||
h.TypeInfos = codec.NewTypeInfos([]string{"codec"})
|
||||
|
||||
return h
|
||||
}()
|
||||
|
||||
|
||||
@@ -65,6 +65,10 @@ var MsgpackHandle = func() *codec.MsgpackHandle {
|
||||
h.BasicHandle.TimeNotBuiltin = true
|
||||
|
||||
h.MapType = reflect.TypeOf(map[string]interface{}(nil))
|
||||
|
||||
// only review struct codec tags - ignore `json` flags
|
||||
h.TypeInfos = codec.NewTypeInfos([]string{"codec"})
|
||||
|
||||
return h
|
||||
}()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user