• David Symonds's avatar
    Use the mutex in exvar.Set since map access is not atomic. · dc5cffbe
    David Symonds authored
    Imagine your var has a value of zero. If you have a goroutine calling Set(5),
    and another calling Increment(+1), then you only want one of these outcomes:
      - Set completes first, and then Increment occurs => 6
      - Increment completes first, and then Set occurs => 5
    
    However, you could get a sequence:
      - read (for Increment) 0
      - set (for Set) 5
      - write (for Increment) 1
    This results in a value of 1, which is undesirable.
    
    Kudos to dnadasi for catching this.
    
    R=r
    APPROVED=r
    DELTA=3  (3 added, 0 deleted, 0 changed)
    OCL=27625
    CL=27625
    dc5cffbe
exvar.go 1.27 KB