From 86aa031f9234e6ba37b6ebd102699a488df0fe2c Mon Sep 17 00:00:00 2001 From: Andrea Luzzardi Date: Tue, 2 Feb 2021 13:52:52 -0800 Subject: [PATCH] fix concurrency issues in Compiler.Compile and Value.Source Signed-off-by: Andrea Luzzardi --- dagger/compiler.go | 3 +++ dagger/value.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/dagger/compiler.go b/dagger/compiler.go index 711ee8b6..ba84590f 100644 --- a/dagger/compiler.go +++ b/dagger/compiler.go @@ -48,6 +48,9 @@ func (cc *Compiler) EmptyStruct() (*Value, error) { } func (cc *Compiler) Compile(name string, src interface{}) (*Value, error) { + cc.Lock() + defer cc.Unlock() + inst, err := cc.Cue().Compile(name, src) if err != nil { // FIXME: cleaner way to unwrap cue error details? diff --git a/dagger/value.go b/dagger/value.go index d2823650..cf4056f5 100644 --- a/dagger/value.go +++ b/dagger/value.go @@ -255,6 +255,9 @@ func (v *Value) Validate(defs ...string) error { // Return cue source for this value func (v *Value) Source() ([]byte, error) { + v.cc.RLock() + defer v.cc.RUnlock() + return cueformat.Node(v.val.Eval().Syntax()) }