Replaced the semaphore in the internal terraform harness with a RWMutex. RWMutex protects the terraform shared cache from corruption. If an init is performed, it requires a write lock. Only one write lock at a time. If another action is performed, a read lock is acquired. More than one read locks can be acquired. This prevents an init from inadvertently changing a plugin while it's in use. Prevents issues with text file busy errors. This is required if using max-reconcile-rate greater than 1.
Fixes #186
I have:
[x] Run make reviewable to ensure this PR is ready for review.
How has this code been tested
I've tested the code locally with a max reconcile rate of 4.
Description of your changes
Replaced the semaphore in the internal terraform harness with a RWMutex. RWMutex protects the terraform shared cache from corruption. If an init is performed, it requires a write lock. Only one write lock at a time. If another action is performed, a read lock is acquired. More than one read locks can be acquired. This prevents an init from inadvertently changing a plugin while it's in use. Prevents issues with
text file busy
errors. This is required if using max-reconcile-rate greater than 1.Fixes #186
I have:
make reviewable
to ensure this PR is ready for review.How has this code been tested
I've tested the code locally with a max reconcile rate of 4.