Rework map session
This commit restructures the map session in to a struct holding the state of what is needed during its lifetime. For streaming sessions, the event loop is structured a bit differently not hammering the clients with updates but rather batching them over a short, configurable time which should significantly improve cpu usage, and potentially flakyness. The use of Patch updates has been dialed back a little as it does not look like its a 100% ready for prime time. Nodes are now updated with full changes, except for a few things like online status. Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
parent
dd693c444c
commit
58c94d2bd3
35 changed files with 1803 additions and 1716 deletions
|
@ -69,6 +69,8 @@ type Config struct {
|
|||
CLI CLIConfig
|
||||
|
||||
ACL ACLConfig
|
||||
|
||||
Tuning Tuning
|
||||
}
|
||||
|
||||
type SqliteConfig struct {
|
||||
|
@ -161,6 +163,11 @@ type LogConfig struct {
|
|||
Level zerolog.Level
|
||||
}
|
||||
|
||||
type Tuning struct {
|
||||
BatchChangeDelay time.Duration
|
||||
NodeMapSessionBufferedChanSize int
|
||||
}
|
||||
|
||||
func LoadConfig(path string, isFile bool) error {
|
||||
if isFile {
|
||||
viper.SetConfigFile(path)
|
||||
|
@ -220,6 +227,9 @@ func LoadConfig(path string, isFile bool) error {
|
|||
|
||||
viper.SetDefault("node_update_check_interval", "10s")
|
||||
|
||||
viper.SetDefault("tuning.batch_change_delay", "800ms")
|
||||
viper.SetDefault("tuning.node_mapsession_buffered_chan_size", 30)
|
||||
|
||||
if IsCLIConfigured() {
|
||||
return nil
|
||||
}
|
||||
|
@ -719,6 +729,12 @@ func GetHeadscaleConfig() (*Config, error) {
|
|||
},
|
||||
|
||||
Log: GetLogConfig(),
|
||||
|
||||
// TODO(kradalby): Document these settings when more stable
|
||||
Tuning: Tuning{
|
||||
BatchChangeDelay: viper.GetDuration("tuning.batch_change_delay"),
|
||||
NodeMapSessionBufferedChanSize: viper.GetInt("tuning.node_mapsession_buffered_chan_size"),
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue