diff --git a/nodebalancer/cmd/nodebalancer/configs.go b/nodebalancer/cmd/nodebalancer/configs.go index e3378bdd..cbc35913 100644 --- a/nodebalancer/cmd/nodebalancer/configs.go +++ b/nodebalancer/cmd/nodebalancer/configs.go @@ -43,13 +43,17 @@ var ( NB_ENABLE_DEBUG = false NB_CONNECTION_RETRIES = 2 - NB_CONNECTION_RETRIES_INTERVAL = time.Millisecond * 10 - NB_HEALTH_CHECK_INTERVAL = os.Getenv("NB_HEALTH_CHECK_INTERVAL") + NB_CONNECTION_RETRIES_INTERVAL = time.Second * 5 + NB_HEALTH_CHECK_INTERVAL = 30 + NB_HEALTH_CHECK_INTERVAL_RAW = os.Getenv("NB_HEALTH_CHECK_INTERVAL") NB_HEALTH_CHECK_CALL_TIMEOUT = time.Second * 2 - NB_CACHE_CLEANING_INTERVAL = time.Second * 10 - NB_CACHE_ACCESS_ID_LIFETIME = int64(120) // 2 minutes - NB_CACHE_ACCESS_ID_SESSION_LIFETIME = int64(600) // 10 minutes + NB_CACHE_CLEANING_INTERVAL = 10 + NB_CACHE_CLEANING_INTERVAL_RAW = os.Getenv("NB_CACHE_CLEANING_INTERVAL") + NB_CACHE_ACCESS_ID_LIFETIME = int64(120) // After 2 minutes, the access ID will be deleted from the cache if there has been no activity + NB_CACHE_ACCESS_ID_LIFETIME_RAW = os.Getenv("NB_CACHE_ACCESS_ID_LIFETIME") + NB_CACHE_ACCESS_ID_SESSION_LIFETIME = int64(900) // After 15 minutes, the access ID will be deleted from the cache to refresh access limits + NB_CACHE_ACCESS_ID_SESSION_LIFETIME_RAW = os.Getenv("NB_CACHE_ACCESS_ID_SESSION_LIFETIME") NB_MAX_COUNTER_NUMBER = uint64(10000000) @@ -95,6 +99,44 @@ func CheckEnvVarSet() { for _, o := range strings.Split(MOONSTREAM_CORS_ALLOWED_ORIGINS, ",") { CORS_WHITELIST_MAP[o] = true } + + // Health check variables + if NB_HEALTH_CHECK_INTERVAL_RAW != "" { + healthCheckInterval, atoiErr := strconv.Atoi(NB_HEALTH_CHECK_INTERVAL_RAW) + if atoiErr != nil { + log.Printf("Unable to parse environment variable NB_HEALTH_CHECK_INTERVAL as integer and set to default %d, err: %v", NB_HEALTH_CHECK_INTERVAL, atoiErr) + } else { + NB_HEALTH_CHECK_INTERVAL = healthCheckInterval + } + } + + // Cache variables + if NB_CACHE_CLEANING_INTERVAL_RAW != "" { + nbCacheCleaningInterval, atoiErr := strconv.Atoi(NB_CACHE_CLEANING_INTERVAL_RAW) + if atoiErr != nil { + log.Printf("Unable to parse environment variable NB_CACHE_CLEANING_INTERVAL as integer and set to default %d, err: %v", NB_CACHE_CLEANING_INTERVAL, atoiErr) + } else { + NB_CACHE_CLEANING_INTERVAL = nbCacheCleaningInterval + } + } + + if NB_CACHE_ACCESS_ID_LIFETIME_RAW != "" { + nbCacheAccessIdLifetime, atoiErr := strconv.Atoi(NB_CACHE_ACCESS_ID_LIFETIME_RAW) + if atoiErr != nil { + log.Printf("Unable to parse environment variable NB_CACHE_ACCESS_ID_LIFETIME as integer and set to default %d, err: %v", NB_CACHE_ACCESS_ID_LIFETIME, atoiErr) + } else { + NB_CACHE_ACCESS_ID_LIFETIME = int64(nbCacheAccessIdLifetime) + } + } + + if NB_CACHE_ACCESS_ID_SESSION_LIFETIME_RAW != "" { + nbCacheAccessIdSessionLifetime, atoiErr := strconv.Atoi(NB_CACHE_ACCESS_ID_SESSION_LIFETIME_RAW) + if atoiErr != nil { + log.Printf("Unable to parse environment variable NB_CACHE_ACCESS_ID_SESSION_LIFETIME as integer and set to default %d, err: %v", NB_CACHE_ACCESS_ID_SESSION_LIFETIME, atoiErr) + } else { + NB_CACHE_ACCESS_ID_SESSION_LIFETIME = int64(nbCacheAccessIdSessionLifetime) + } + } } // Nodes configuration diff --git a/nodebalancer/cmd/nodebalancer/middleware.go b/nodebalancer/cmd/nodebalancer/middleware.go index 1df8cdec..caaf613f 100644 --- a/nodebalancer/cmd/nodebalancer/middleware.go +++ b/nodebalancer/cmd/nodebalancer/middleware.go @@ -195,7 +195,7 @@ func (ac *AccessCache) Cleanup() (int64, int64) { } func initCacheCleaning(debug bool) { - t := time.NewTicker(NB_CACHE_CLEANING_INTERVAL) + t := time.NewTicker(time.Second * time.Duration(NB_CACHE_CLEANING_INTERVAL)) for { select { case <-t.C: diff --git a/nodebalancer/cmd/nodebalancer/server.go b/nodebalancer/cmd/nodebalancer/server.go index 106f85bd..37ba4103 100644 --- a/nodebalancer/cmd/nodebalancer/server.go +++ b/nodebalancer/cmd/nodebalancer/server.go @@ -10,7 +10,6 @@ import ( "net/http" "net/http/httputil" "net/url" - "strconv" "strings" "time" @@ -27,11 +26,7 @@ var ( // initHealthCheck runs a routine for check status of the nodes every 5 seconds func initHealthCheck(debug bool) { - healthCheckInterval, convErr := strconv.Atoi(NB_HEALTH_CHECK_INTERVAL) - if convErr != nil { - healthCheckInterval = 30 - } - t := time.NewTicker(time.Second * time.Duration(healthCheckInterval)) + t := time.NewTicker(time.Second * time.Duration(NB_HEALTH_CHECK_INTERVAL)) for { select { case <-t.C: diff --git a/nodebalancer/cmd/nodebalancer/version.go b/nodebalancer/cmd/nodebalancer/version.go index 41799620..00e75a5c 100644 --- a/nodebalancer/cmd/nodebalancer/version.go +++ b/nodebalancer/cmd/nodebalancer/version.go @@ -1,3 +1,3 @@ package main -var NB_VERSION = "0.2.8" +var NB_VERSION = "0.2.9" diff --git a/nodebalancer/sample.env b/nodebalancer/sample.env index efea6003..3cf53cf2 100644 --- a/nodebalancer/sample.env +++ b/nodebalancer/sample.env @@ -6,6 +6,9 @@ export MOONSTREAM_CORS_ALLOWED_ORIGINS="http://localhost:3000,https://moonstream export NB_CONTROLLER_USER_ID="" export NB_CONTROLLER_TOKEN="" export NB_CONTROLLER_ACCESS_ID="" +export NB_CACHE_CLEANING_INTERVAL=10 +export NB_CACHE_ACCESS_ID_LIFETIME=120 +export NB_CACHE_ACCESS_ID_SESSION_LIFETIME=900 # Error humbug reporter export HUMBUG_REPORTER_NODE_BALANCER_TOKEN=""