From 0275ae8470c90bfb5f90a0f2d6d728b6308e0c49 Mon Sep 17 00:00:00 2001 From: Benjamin Wenger <ben@elixxir.ioo> Date: Tue, 8 Jun 2021 21:29:06 -0700 Subject: [PATCH] added a lock to startnetworlfollower and stopnetworkfollwer so only one can run at a time --- api/client.go | 9 +++++++++ network/gateway/hostPool.go | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/api/client.go b/api/client.go index 73da1de10..c7ac8212b 100644 --- a/api/client.go +++ b/api/client.go @@ -30,6 +30,7 @@ import ( "gitlab.com/xx_network/crypto/signature/rsa" "gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/ndf" + "sync" "time" ) @@ -65,6 +66,10 @@ type Client struct { services *serviceProcessiesList clientErrorChannel chan interfaces.ClientError + + //lock to ensure only once instance of stop/start network follower is + //going at a time + followerLock sync.Mutex } // NewClient creates client storage, generates keys, connects, and registers @@ -381,6 +386,8 @@ func (c *Client) initPermissioning(def *ndf.NetworkDefinition) error { // - Auth Callback (/auth/callback.go) // Handles both auth confirm and requests func (c *Client) StartNetworkFollower(timeout time.Duration) (<-chan interfaces.ClientError, error) { + c.followerLock.Lock() + defer c.followerLock.Unlock() u := c.GetUser() jww.INFO.Printf("StartNetworkFollower() \n\tTransmisstionID: %s "+ "\n\tReceptionID: %s", u.TransmissionID, u.ReceptionID) @@ -441,6 +448,8 @@ func (c *Client) StartNetworkFollower(timeout time.Duration) (<-chan interfaces. // if the network follower is running and this fails, the client object will // most likely be in an unrecoverable state and need to be trashed. func (c *Client) StopNetworkFollower() error { + c.followerLock.Lock() + defer c.followerLock.Unlock() err := c.status.toStopping() if err != nil { return errors.WithMessage(err, "Failed to Stop the Network Follower") diff --git a/network/gateway/hostPool.go b/network/gateway/hostPool.go index ba8198da8..6b27cb9d1 100644 --- a/network/gateway/hostPool.go +++ b/network/gateway/hostPool.go @@ -81,7 +81,7 @@ func DefaultPoolParams() PoolParams { p.HostParams.EnableCoolOff = true p.HostParams.NumSendsBeforeCoolOff = 1 p.HostParams.CoolOffTimeout = 5 * time.Minute - p.HostParams.SendTimeout = 3500 * time.Millisecond + p.HostParams.SendTimeout = 2000 * time.Millisecond return p } -- GitLab