diff --git a/pkl/evaluator.go b/pkl/evaluator.go index e13183e..60f4f61 100644 --- a/pkl/evaluator.go +++ b/pkl/evaluator.go @@ -77,7 +77,7 @@ type evaluator struct { logger Logger manager *evaluatorManager pendingRequests *sync.Map - closed bool + closed atomicBool resourceReaders []ResourceReader moduleReaders []ModuleReader } @@ -154,7 +154,7 @@ func (e *evaluator) EvaluateExpressionRaw(ctx context.Context, source *ModuleSou } func (e *evaluator) Close() error { - if e.closed { + if e.closed.get() { return nil } e.manager.closeEvaluator(e) @@ -162,7 +162,7 @@ func (e *evaluator) Close() error { } func (e *evaluator) Closed() bool { - return e.closed + return e.closed.get() } func (e *evaluator) handleEvaluateResponse(resp *msgapi.EvaluateResponse) { diff --git a/pkl/evaluator_manager.go b/pkl/evaluator_manager.go index 5fd57c6..3729f1a 100644 --- a/pkl/evaluator_manager.go +++ b/pkl/evaluator_manager.go @@ -273,7 +273,7 @@ func (m *evaluatorManager) closeEvaluator(ev *evaluator) { } m.impl.outChan() <- &msgapi.CloseEvaluator{EvaluatorId: ev.evaluatorId} m.evaluators.Delete(ev.evaluatorId) - ev.closed = true + ev.closed.set(true) m.interrupts.Range(func(key, value any) bool { if value.(int64) == ev.evaluatorId { key.(chan error) <- nil