From e8aaa934593637bd4ec0a56ef8261b2dc6da3762 Mon Sep 17 00:00:00 2001 From: Chelsea Holland Komlo Date: Tue, 30 Jan 2018 11:27:26 -0500 Subject: [PATCH] locks for fingerprint reads/writes --- client/client.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/client.go b/client/client.go index 9542f734f..d8d6516e3 100644 --- a/client/client.go +++ b/client/client.go @@ -956,7 +956,9 @@ func (c *Client) fingerprint() error { request := &cstructs.FingerprintRequest{Config: c.config, Node: c.config.Node} var response cstructs.FingerprintResponse + c.configLock.Lock() err = f.Fingerprint(request, &response) + c.configLock.Unlock() if err != nil { return err } @@ -988,7 +990,9 @@ func (c *Client) fingerprintPeriodic(name string, f fingerprint.Fingerprint, d t case <-time.After(d): request := &cstructs.FingerprintRequest{Config: c.config, Node: c.config.Node} var response cstructs.FingerprintResponse + c.configLock.Lock() err := f.Fingerprint(request, &response) + c.configLock.Unlock() if err != nil { c.logger.Printf("[DEBUG] client: periodic fingerprinting for %v failed: %v", name, err) @@ -1036,9 +1040,11 @@ func (c *Client) setupDrivers() error { request := &cstructs.FingerprintRequest{Config: c.config, Node: c.config.Node} var response cstructs.FingerprintResponse + c.configLock.Lock() if err := d.Fingerprint(request, &response); err != nil { return err } + c.configLock.Unlock() c.updateNodeFromFingerprint(&response)