mirror of
https://github.com/kubernetes/sample-controller.git
synced 2026-02-15 00:07:52 +08:00
Automatic merge from submit-queue. Manual cherrypick of #65034 to 1.9: make json serializer case sensitive fixes partially https://github.com/kubernetes/kubernetes/issues/64612 This PR imports the latest jsoniterator library so that case sensitivity during unmarshalling is optional. The PR also sets Kubernetes json serializer to be case sensitive. **Release note**: ```release-note ACTION REQUIRED: Kubernetes JSON deserializer is now case-sensitive to restore compatibility with pre-1.8 servers. If your config files contains fields with wrong case, the config files will be now invalid. ``` /sig api-machinery /kind bug /assign caesarxuchao liggitt thockin sttts mbohlool Kubernetes-commit: f4cf484c2cb6056e28fb9759a3c913be3eed990a
43 lines
956 B
Go
43 lines
956 B
Go
package jsoniter
|
|
|
|
import (
|
|
"io"
|
|
)
|
|
|
|
// IteratorPool a thread safe pool of iterators with same configuration
|
|
type IteratorPool interface {
|
|
BorrowIterator(data []byte) *Iterator
|
|
ReturnIterator(iter *Iterator)
|
|
}
|
|
|
|
// StreamPool a thread safe pool of streams with same configuration
|
|
type StreamPool interface {
|
|
BorrowStream(writer io.Writer) *Stream
|
|
ReturnStream(stream *Stream)
|
|
}
|
|
|
|
func (cfg *frozenConfig) BorrowStream(writer io.Writer) *Stream {
|
|
stream := cfg.streamPool.Get().(*Stream)
|
|
stream.Reset(writer)
|
|
return stream
|
|
}
|
|
|
|
func (cfg *frozenConfig) ReturnStream(stream *Stream) {
|
|
stream.out = nil
|
|
stream.Error = nil
|
|
stream.Attachment = nil
|
|
cfg.streamPool.Put(stream)
|
|
}
|
|
|
|
func (cfg *frozenConfig) BorrowIterator(data []byte) *Iterator {
|
|
iter := cfg.iteratorPool.Get().(*Iterator)
|
|
iter.ResetBytes(data)
|
|
return iter
|
|
}
|
|
|
|
func (cfg *frozenConfig) ReturnIterator(iter *Iterator) {
|
|
iter.Error = nil
|
|
iter.Attachment = nil
|
|
cfg.iteratorPool.Put(iter)
|
|
}
|