extended cache comments
This commit is contained in:
parent
bb76c3b50c
commit
e27ecba6e4
|
@ -17,6 +17,12 @@ var mapLabelNames = []string{"key"}
|
||||||
// Caching these externally rather than within the struct is required because
|
// Caching these externally rather than within the struct is required because
|
||||||
// Blocks are used by value and copied when working with NestedBlocks, and the
|
// Blocks are used by value and copied when working with NestedBlocks, and the
|
||||||
// copying of the value prevents any safe synchronisation of the struct itself.
|
// copying of the value prevents any safe synchronisation of the struct itself.
|
||||||
|
//
|
||||||
|
// While we are using the *Block pointer as the cache key, and the Block
|
||||||
|
// contents are mutable, once a Block is created it is treated as immutable for
|
||||||
|
// the duration of its life. Because a Block is a representation of a logical
|
||||||
|
// schema, which cannot change while it's being used, any modifications to the
|
||||||
|
// schema during execution would be an error.
|
||||||
type specCache struct {
|
type specCache struct {
|
||||||
sync.Mutex
|
sync.Mutex
|
||||||
specs map[uintptr]hcldec.Spec
|
specs map[uintptr]hcldec.Spec
|
||||||
|
@ -26,7 +32,7 @@ var decoderSpecCache = specCache{
|
||||||
specs: map[uintptr]hcldec.Spec{},
|
specs: map[uintptr]hcldec.Spec{},
|
||||||
}
|
}
|
||||||
|
|
||||||
// get returns the Spec associated with the given Block, or nil if none is
|
// get returns the Spec associated with eth given Block, or nil if non is
|
||||||
// found.
|
// found.
|
||||||
func (s *specCache) get(b *Block) hcldec.Spec {
|
func (s *specCache) get(b *Block) hcldec.Spec {
|
||||||
s.Lock()
|
s.Lock()
|
||||||
|
|
Loading…
Reference in New Issue