Merge pull request #1165 from moonstream-to/nb-cache-controll-env

Controll cache with env vars
pull/1166/head
Sergei Sumarokov 2025-01-26 17:09:27 +03:00 zatwierdzone przez GitHub
commit e036c5b0bc
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
5 zmienionych plików z 53 dodań i 13 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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:

Wyświetl plik

@ -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:

Wyświetl plik

@ -1,3 +1,3 @@
package main
var NB_VERSION = "0.2.8"
var NB_VERSION = "0.2.9"

Wyświetl plik

@ -6,6 +6,9 @@ export MOONSTREAM_CORS_ALLOWED_ORIGINS="http://localhost:3000,https://moonstream
export NB_CONTROLLER_USER_ID="<bugout_id_of_nodebalancer_user>"
export NB_CONTROLLER_TOKEN="<token_of_nodebalancer_user>"
export NB_CONTROLLER_ACCESS_ID="<nodebalancer_access_id_for_internal_usage>"
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="<bugout_humbug_token_for_crash_reports>"