Просмотр исходного кода

Revert asynchronous embedded server list import

* From time to time, the Update() call in StoreServerEntry would hang.
* Wasn't properly asynchronous since the Wait() happened at the end
  of Start(). Would need to do something else, such as have the
  Controller manage asynchronous importing, allowing Start() to
  return before the import completes.
* May not even be a performance issue with boltdb.
Rod Hynes 10 лет назад
Родитель
Сommit
6bd3e268ff
1 измененных файлов с 7 добавлено и 34 удалено
  1. 7 34
      AndroidLibrary/psi/psi.go

+ 7 - 34
AndroidLibrary/psi/psi.go

@@ -74,40 +74,13 @@ func Start(
 		return fmt.Errorf("error initializing datastore: %s", err)
 		return fmt.Errorf("error initializing datastore: %s", err)
 	}
 	}
 
 
-	// If specified, the embedded server list is loaded and stored. When there
-	// are no server candidates at all, we wait for this import to complete
-	// before starting the Psiphon controller. Otherwise, we import while
-	// concurrently starting the controller to minimize delay before attempting
-	// to connect to existing candidate servers.
-	// If the import fails, an error notice is emitted, but the controller is
-	// still started: either existing candidate servers may suffice, or the
-	// remote server list fetch may obtain candidate servers.
-	// TODO: duplicates logic in psiphonClient.go -- refactor?
-	if embeddedServerEntryList != "" {
-		embeddedServerListWaitGroup := new(sync.WaitGroup)
-		embeddedServerListWaitGroup.Add(1)
-		go func() {
-			defer embeddedServerListWaitGroup.Done()
-			// TODO: stream embedded server list data?
-			serverEntries, err := psiphon.DecodeAndValidateServerEntryList(embeddedServerEntryList)
-			if err != nil {
-				psiphon.NoticeError("error decoding embedded server entry list file: %s", err)
-				return
-			}
-			// Since embedded server list entries may become stale, they will not
-			// overwrite existing stored entries for the same server.
-			err = psiphon.StoreServerEntries(serverEntries, false)
-			if err != nil {
-				psiphon.NoticeError("error storing embedded server entry list data: %s", err)
-				return
-			}
-		}()
-
-		if psiphon.CountServerEntries(config.EgressRegion, config.TunnelProtocol) == 0 {
-			embeddedServerListWaitGroup.Wait()
-		} else {
-			defer embeddedServerListWaitGroup.Wait()
-		}
+	serverEntries, err := psiphon.DecodeAndValidateServerEntryList(embeddedServerEntryList)
+	if err != nil {
+		return fmt.Errorf("error decoding embedded server entry list: %s", err)
+	}
+	err = psiphon.StoreServerEntries(serverEntries, false)
+	if err != nil {
+		return fmt.Errorf("error storing embedded server entry list: %s", err)
 	}
 	}
 
 
 	controller, err = psiphon.NewController(config)
 	controller, err = psiphon.NewController(config)