2015-10-13 7 views
6

Sto eseguendo un'applicazione Beego che si basa su aggiornamenti in/etc/hosts (tramite link Docker) per trovare altri server. Gli aggiornamenti di/etc/hosts vanno bene, ma l'applicazione non utilizzerà i nuovi host a meno che non sia riavviato o dopo che è stato atteso troppo a lungo. Dopo aver esaminato la documentazione per src/net/hosts sembra che io sia bloccato in un tempo di aggiornamento di 5 minuti.C'è un modo per forzare gli host di aggiornamento in go?

C'è un modo per forzare questo aggiornamento della cache o sto guardando questo problema nel modo sbagliato?

+0

Non vedo un modo per farlo senza assemblaggio, neanche. – thwd

+0

Potrei cambiare la costante di timeout in src/net/hosts.go e girare il mio custom go build ma ci deve essere un altro modo. Sono contento di vedere che non sono l'unico ma bloccato su questo. – Diablojoe

+3

Normalmente i cambiamenti dinamici dovrebbero essere fatti tramite un altro meccanismo, come dns o un altro db di configurazione. Se si crea il binario con cgo abilitato, verrà utilizzato il resolver di sistema per gli host di ricerca (che inoltre non garantisce che non verrà memorizzato nella cache per un breve periodo dal sistema, ma in genere nella maggior parte dei casi è inferiore a 5 minuti) – JimB

risposta

0

The hosts file cache time in Go was shortened to 5 seconds. Il comportamento di Go è diverso se viene utilizzato il puro Go (predefinito, con eccezioni) o Cgo resolver. Per evitare la cache interna di Go del puro risolutore di Go non c'è attualmente altro modo di forzare il risolutore Cgo.

There are various ways to force Go to use the Cgo resolver. Il way to force Go to use the Cgo resolver suggested by the documentation è impostare la variabile di ambiente GODEBUG su netdns=cgo.

Problemi correlati