[release] v0.23.0-unstable005

This commit is contained in:
Yann Stepienik
2026-08-20 09:09:42 +01:00
parent 3cb1df62e9
commit 283eb458ef
14 changed files with 459 additions and 334 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
"description": "REST API for Cosmos Cloud server management",
"title": "Cosmos Server API",
"contact": {},
"version": "0.23.0-unstable004"
"version": "0.23.0-unstable005"
},
"paths": {
"/_logs": {
+1 -1
View File
@@ -4,7 +4,7 @@
"description": "REST API for Cosmos Cloud server management",
"title": "Cosmos Server API",
"contact": {},
"version": "0.23.0-unstable004"
"version": "0.23.0-unstable005"
},
"basePath": "/cosmos",
"paths": {
+1 -1
View File
@@ -2067,7 +2067,7 @@ info:
contact: {}
description: REST API for Cosmos Cloud server management
title: Cosmos Server API
version: 0.23.0-unstable004
version: 0.23.0-unstable005
paths:
/_logs:
get:
+317 -317
View File
@@ -36461,323 +36461,323 @@ func ParsePostRcloneVfsStatsResponse(rsp *http.Response) (*PostRcloneVfsStatsRes
// const string: with thousands of chunks the chained `+` fold is several
// times slower for the Go compiler than parsing a slice literal.
var swaggerSpec = []string{
"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",
}
// decodeSpec returns the embedded OpenAPI spec as raw JSON bytes,
+1 -1
View File
@@ -1,4 +1,4 @@
package cosmossdk
// Version is the SDK version, synced with Cosmos Server at build time.
const Version = "0.23.0-unstable004"
const Version = "0.23.0-unstable005"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "cosmos-server",
"version": "0.23.0-unstable004",
"version": "0.23.0-unstable005",
"description": "",
"main": "test-server.js",
"bugs": {
+1 -1
View File
@@ -12,7 +12,7 @@ import (
func validateRoute(route utils.ProxyRouteConfig) string {
if !utils.IsValidLBMode(route.LBMode) {
return "Unsupported load balancing mode \"" + route.LBMode + "\" on route \"" + route.Name +
"\". Supported modes are \"round_robin\" and \"first\" (an empty value means \"first\": always send traffic to the first/local target)"
"\". Supported modes are \"round_robin\", \"load_based\" and \"first\" (an empty value means \"first\": always send traffic to the first/local target)"
}
return ""
}
+2 -2
View File
@@ -8,7 +8,7 @@ import (
)
func TestValidateRouteLBMode(t *testing.T) {
valid := []string{"", "first", "FIRST", "round_robin", "ROUND_ROBIN", "Round_Robin"}
valid := []string{"", "first", "FIRST", "round_robin", "ROUND_ROBIN", "Round_Robin", "load_based", "LOAD_BASED"}
for _, mode := range valid {
route := utils.ProxyRouteConfig{Name: "r", LBMode: mode}
if msg := validateRoute(route); msg != "" {
@@ -16,7 +16,7 @@ func TestValidateRouteLBMode(t *testing.T) {
}
}
invalid := []string{"load_based", "least_conn", "weighted", "roundrobin", "round robin", " "}
invalid := []string{"load-based", "least_conn", "weighted", "roundrobin", "round robin", " "}
for _, mode := range invalid {
route := utils.ProxyRouteConfig{Name: "r", LBMode: mode}
msg := validateRoute(route)
+5 -2
View File
@@ -599,8 +599,11 @@ func mergeTunnelHeartbeats(heartbeats []NodeHeartbeat, currentDeviceName string)
}
target := utils.TunnelTarget{
DeviceName: heartbeat.DeviceName,
TargetURL: tunnelRoute.Target,
DeviceName: heartbeat.DeviceName,
TargetURL: tunnelRoute.Target,
CPUPercent: heartbeat.CPUPercent,
RAMPercent: heartbeat.RAMPercent,
MonitoringOn: heartbeat.MonitoringOn,
}
tunnelRoute.Const_IsTunneled = true
@@ -132,6 +132,32 @@ func TestUnitMergeTunnelHeartbeatsFiltersAndGroups(t *testing.T) {
}
}
// Each target must carry its own advertiser's resource sample — the
// load_based LB mode is blind without them.
func TestUnitMergeTunnelHeartbeatsCarriesLoadMetrics(t *testing.T) {
hbA := tunnelAdvertiser("node_a", "load_based", false, false, 10*time.Second)
hbA.CPUPercent, hbA.RAMPercent, hbA.MonitoringOn = 20, 70, true
hbB := tunnelAdvertiser("node_b", "load_based", false, false, 10*time.Second)
tunnels := mergeTunnelHeartbeats([]NodeHeartbeat{hbA, hbB}, "node_c")
if len(tunnels) != 1 {
t.Fatalf("got %d tunnels, want 1", len(tunnels))
}
for _, target := range tunnels[0].Targets {
switch target.DeviceName {
case "node_a":
if target.CPUPercent != 20 || target.RAMPercent != 70 || !target.MonitoringOn {
t.Errorf("node_a target = %+v, want cpu 20 / ram 70 / monitored", target)
}
case "node_b":
if target.MonitoringOn {
t.Errorf("node_b target = %+v, want MonitoringOn false", target)
}
}
}
}
// A heartbeat with no device name must never govern, and must not stop a named
// advertiser from governing either.
func TestUnitMergeTunnelHeartbeatsIgnoresUnnamedAdvertiser(t *testing.T) {
+1 -1
View File
@@ -206,7 +206,7 @@ func main() {
}
// @title Cosmos Server API
// @version 0.23.0-unstable004
// @version 0.23.0-unstable005
// @description REST API for Cosmos Cloud server management
// @BasePath /cosmos
// @securityDefinitions.apikey BearerAuth
+45 -4
View File
@@ -26,9 +26,48 @@ func (lb *TunnelLoadBalancer) getCounter(routeName string) *routeCounter {
return actual.(*routeCounter)
}
// targetLoad carries a candidate's latest heartbeat resource sample.
type targetLoad struct {
cpu, ram float64
monitored bool
}
func (lb *TunnelLoadBalancer) roundRobin(keys []string, routeName string) string {
c := lb.getCounter(routeName)
idx := c.val.Add(1) - 1
return keys[idx%uint64(len(keys))]
}
// leastBusy picks the key with the lowest max(cpu, ram). Same all-or-nothing
// rule as pro's LeastBusyPlacement: if any candidate lacks trustworthy
// metrics, the whole decision falls back to round-robin.
func (lb *TunnelLoadBalancer) leastBusy(keys []string, routeName string, loads map[string]targetLoad) string {
best := ""
bestScore := 0.0
for _, k := range keys {
l, ok := loads[k]
if !ok || !l.monitored {
return lb.roundRobin(keys, routeName)
}
score := l.cpu
if l.ram > score {
score = l.ram
}
if best == "" || score < bestScore {
best, bestScore = k, score
}
}
return best
}
// Select picks a key from the given list using the configured LB mode.
// Keys can be numeric indices ("0","1") for regular routes or device names for constellation tunnels.
// "load_based" needs per-key metrics; without them (this path) it degrades to round-robin.
func (lb *TunnelLoadBalancer) Select(keys []string, routeName string, mode string, sticky bool, stickyKey string) string {
return lb.selectKey(keys, routeName, mode, sticky, stickyKey, nil)
}
func (lb *TunnelLoadBalancer) selectKey(keys []string, routeName string, mode string, sticky bool, stickyKey string, loads map[string]targetLoad) string {
if len(keys) == 0 {
return ""
}
@@ -50,9 +89,9 @@ func (lb *TunnelLoadBalancer) Select(keys []string, routeName string, mode strin
var selected string
switch strings.ToLower(mode) {
case "round_robin":
c := lb.getCounter(routeName)
idx := c.val.Add(1) - 1
selected = keys[idx%uint64(len(keys))]
selected = lb.roundRobin(keys, routeName)
case "load_based":
selected = lb.leastBusy(keys, routeName, loads)
case "", "first":
selected = keys[0]
default:
@@ -76,11 +115,13 @@ func (lb *TunnelLoadBalancer) SelectTarget(targets []utils.TunnelTarget, routeNa
}
keys := make([]string, len(targets))
loads := make(map[string]targetLoad, len(targets))
for i, t := range targets {
keys[i] = t.DeviceName
loads[t.DeviceName] = targetLoad{cpu: t.CPUPercent, ram: t.RAMPercent, monitored: t.MonitoringOn}
}
key := lb.Select(keys, routeName, mode, sticky, stickyKey)
key := lb.selectKey(keys, routeName, mode, sticky, stickyKey, loads)
if key == "" {
return nil
}
+51 -1
View File
@@ -30,7 +30,7 @@ func TestSelectModes(t *testing.T) {
}
// unknown modes still have to serve traffic, but only from the first target
for _, mode := range []string{"load_based", "least_conn"} {
for _, mode := range []string{"least_conn", "load-based"} {
if utils.IsValidLBMode(mode) {
t.Errorf("IsValidLBMode(%q) = true, want false", mode)
}
@@ -40,3 +40,53 @@ func TestSelectModes(t *testing.T) {
}
}
}
func TestSelectTargetLoadBased(t *testing.T) {
if !utils.IsValidLBMode("load_based") {
t.Fatal("IsValidLBMode(load_based) = false, want true")
}
targets := []utils.TunnelTarget{
{DeviceName: "a", CPUPercent: 20, RAMPercent: 90, MonitoringOn: true},
{DeviceName: "b", CPUPercent: 50, RAMPercent: 40, MonitoringOn: true},
{DeviceName: "c", CPUPercent: 80, RAMPercent: 10, MonitoringOn: true},
}
// b has the lowest max(cpu, ram) = 50 (a=90, c=80); repeat calls stay on b
lb := &TunnelLoadBalancer{}
for i := 0; i < 3; i++ {
got := lb.SelectTarget(targets, "route", "load_based", false, "")
if got == nil || got.DeviceName != "b" {
t.Fatalf("SelectTarget(load_based) call %d = %v, want b", i, got)
}
}
// LOAD_BASED matches case-insensitively like the other modes
if got := lb.SelectTarget(targets, "route", "LOAD_BASED", false, ""); got == nil || got.DeviceName != "b" {
t.Errorf("SelectTarget(LOAD_BASED) = %v, want b", got)
}
}
func TestSelectTargetLoadBasedFallsBackToRoundRobin(t *testing.T) {
// one unmonitored candidate poisons the metrics: all-or-nothing fallback
targets := []utils.TunnelTarget{
{DeviceName: "a", CPUPercent: 20, RAMPercent: 20, MonitoringOn: true},
{DeviceName: "b", MonitoringOn: false},
}
lb := &TunnelLoadBalancer{}
for i, want := range []string{"a", "b", "a", "b"} {
got := lb.SelectTarget(targets, "route", "load_based", false, "")
if got == nil || got.DeviceName != want {
t.Errorf("SelectTarget call %d = %v, want %s", i, got, want)
}
}
// the keys-only path has no metrics at all: same fallback
lb2 := &TunnelLoadBalancer{}
for i, want := range []string{"x", "y", "x"} {
if got := lb2.Select([]string{"x", "y"}, "route", "load_based", false, ""); got != want {
t.Errorf("Select call %d = %q, want %q", i, got, want)
}
}
}
+6 -1
View File
@@ -370,7 +370,7 @@ type ProxyRouteConfig struct {
}
// LBModes are the load balancing modes implemented by TunnelLoadBalancer.Select().
var LBModes = []string{"", "first", "round_robin"}
var LBModes = []string{"", "first", "round_robin", "load_based"}
// IsValidLBMode reports whether mode is one of LBModes, case-insensitively.
func IsValidLBMode(mode string) bool {
@@ -431,6 +431,11 @@ type ConstellationConfig struct {
type TunnelTarget struct {
DeviceName string `json:"deviceName"`
TargetURL string `json:"targetURL"`
// Latest resource sample from the advertiser's heartbeat, used by the
// "load_based" LB mode. Only trustworthy when MonitoringOn is true.
CPUPercent float64 `json:"cpuPercent,omitempty"`
RAMPercent float64 `json:"ramPercent,omitempty"`
MonitoringOn bool `json:"monitoringOn,omitempty"`
}
type ConstellationTunnel struct {