Ver Fonte

make mq call async in signal api call

Abhishek Kondur há 2 anos atrás
pai
commit
8cc6286b83
4 ficheiros alterados com 11 adições e 13 exclusões
  1. 9 9
      controllers/hosts.go
  2. 0 2
      database/database.go
  3. 1 1
      mq/mq.go
  4. 1 1
      mq/publishers.go

+ 9 - 9
controllers/hosts.go

@@ -491,18 +491,18 @@ func signalPeer(w http.ResponseWriter, r *http.Request) {
 	// push the signal to host through mq
 	found := false
 	for _, hostI := range hosts {
+		hostI := hostI
 		if hostI.PublicKey.String() == signal.ToHostPubKey {
 			// found host publish message and break
 			found = true
-			err = mq.HostUpdate(&models.HostUpdate{
-				Action: models.SignalHost,
-				Host:   hostI,
-				Signal: signal,
-			})
-			if err != nil {
-				logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("failed to publish signal to peer: "+err.Error()), "badrequest"))
-				return
-			}
+			go func(host models.Host) {
+				mq.HostUpdate(&models.HostUpdate{
+					Action: models.SignalHost,
+					Host:   hostI,
+					Signal: signal,
+				})
+			}(hostI)
+
 			break
 		}
 	}

+ 0 - 2
database/database.go

@@ -215,8 +215,6 @@ func FetchRecord(tableName string, key string) (string, error) {
 
 // FetchRecords - fetches all records in given table
 func FetchRecords(tableName string) (map[string]string, error) {
-	dbMutex.RLock()
-	defer dbMutex.RUnlock()
 	return getCurrentDB()[FETCH_ALL].(func(string) (map[string]string, error))(tableName)
 }
 

+ 1 - 1
mq/mq.go

@@ -33,7 +33,7 @@ func setMqOptions(user, password string, opts *mqtt.ClientOptions) {
 	opts.SetPassword(password)
 	opts.SetAutoReconnect(true)
 	opts.SetConnectRetry(true)
-	opts.SetConnectRetryInterval(time.Second << 2)
+	opts.SetConnectRetryInterval(time.Second * 5)
 	opts.SetKeepAlive(time.Minute)
 	opts.SetWriteTimeout(time.Minute)
 }

+ 1 - 1
mq/publishers.go

@@ -407,7 +407,7 @@ func NodeUpdate(node *models.Node) error {
 
 // HostUpdate -- publishes a host update to clients
 func HostUpdate(hostUpdate *models.HostUpdate) error {
-	logger.Log(3, "publishing host update to "+hostUpdate.Host.ID.String())
+	logger.Log(4, "publishing host update to "+hostUpdate.Host.ID.String())
 
 	data, err := json.Marshal(hostUpdate)
 	if err != nil {