Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions src/lastore-daemon/manager_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"os"
"os/exec"
"path/filepath"
"reflect"
"slices"
"strconv"
"strings"
Expand Down Expand Up @@ -497,8 +498,8 @@ func (m *Manager) refreshThrottlingFromPlatform() error {
}

if downloadSpeed.IsOnlineSpeedLimit {
// 如果启用了在线限速,禁用本地限速
if err := m.disableLocalSpeedLimitConfig(); err != nil {
// 如果启用了在线限速,禁用本地限速,并将本地限速速度同步为平台下发的限速值
if err := m.disableLocalSpeedLimitConfig(downloadSpeed.LimitSpeed); err != nil {
logger.Warningf("Failed to disable local speed limit %v", err)
}
} else {
Expand Down Expand Up @@ -534,7 +535,7 @@ func (m *Manager) disableOnlineSpeedLimitConfig() error {
return nil
}

func (m *Manager) disableLocalSpeedLimitConfig() error {
func (m *Manager) disableLocalSpeedLimitConfig(limitSpeed string) error {
var downloadSpeed downloadSpeedLimitConfig
if err := json.Unmarshal([]byte(m.config.LocalDownloadSpeedLimitConfig), &downloadSpeed); err != nil {
downloadSpeed = downloadSpeedLimitConfig{
Expand All @@ -543,10 +544,15 @@ func (m *Manager) disableLocalSpeedLimitConfig() error {
IsOnlineSpeedLimit: false,
}
}
if !downloadSpeed.DownloadSpeedLimitEnabled {
return nil
oldDownloadSpeed := downloadSpeed
if limitSpeed != "" {
downloadSpeed.LimitSpeed = limitSpeed
}
downloadSpeed.DownloadSpeedLimitEnabled = false
downloadSpeed.IsOnlineSpeedLimit = false
if reflect.DeepEqual(downloadSpeed, oldDownloadSpeed) {
return nil
}
jsonStr, err := json.Marshal(downloadSpeed)
if err != nil {
return fmt.Errorf("failed to marshal local download speed limit config: %w", err)
Expand Down
24 changes: 24 additions & 0 deletions src/lastore-daemon/updater_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package main

import (
"encoding/json"
"os"
"path/filepath"
"testing"
Expand Down Expand Up @@ -146,3 +147,26 @@ func TestGetStartupDownloadSpeedLimitConfig(t *testing.T) {
})
}
}

func TestDisableLocalSpeedLimitConfigSyncsPlatformSpeedOnly(t *testing.T) {
manager := &Manager{
config: &config.Config{
LocalDownloadSpeedLimitConfig: `{"DownloadSpeedLimitEnabled":true,"LimitSpeed":"888","IsOnlineSpeedLimit":false}`,
},
}

_ = manager.disableLocalSpeedLimitConfig("666")

var got downloadSpeedLimitConfig
if err := json.Unmarshal([]byte(manager.config.LocalDownloadSpeedLimitConfig), &got); err != nil {
t.Fatalf("LocalDownloadSpeedLimitConfig unmarshal error = %v", err)
}
want := downloadSpeedLimitConfig{
DownloadSpeedLimitEnabled: false,
LimitSpeed: "666",
IsOnlineSpeedLimit: false,
}
if got != want {
t.Fatalf("LocalDownloadSpeedLimitConfig = %+v, want %+v", got, want)
}
}
Loading