Skip to content

Commit 7273ce3

Browse files
committed
refactor: rename Next to NextServer
1 parent a98c3ef commit 7273ce3

File tree

6 files changed

+35
-36
lines changed

6 files changed

+35
-36
lines changed

internal/proxy/balancer.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ const ProxyKeyHeader = "X-PROXY-KEY"
2121
type LoadBalancer interface {
2222
// Update updates the list of available servers.
2323
Update([]*Server)
24-
// Next returns the next server to be used based on the load balancing algorithm.
25-
Next(*http.Request) *Server
24+
// NextServer returns the next server to be used based on the load balancing algorithm.
25+
NextServer(*http.Request) *Server
2626
}
2727

2828
// RoundRobin is a simple load balancer that distributes incoming requests
@@ -45,9 +45,9 @@ func NewRoundRobin(log *slog.Logger) *RoundRobin {
4545
}
4646
}
4747

48-
// Next returns the next server to be used based on the round-robin algorithm.
48+
// NextServer returns the next server to be used based on the round-robin algorithm.
4949
// If the selected server is unhealthy, it will recursively try the next server.
50-
func (rr *RoundRobin) Next(_ *http.Request) *Server {
50+
func (rr *RoundRobin) NextServer(r *http.Request) *Server {
5151
rr.mu.Lock()
5252
if len(rr.servers) == 0 {
5353
return nil
@@ -60,7 +60,7 @@ func (rr *RoundRobin) Next(_ *http.Request) *Server {
6060
return server
6161
}
6262
rr.log.Warn("server is unhealthy, trying next", "name", server.name)
63-
return rr.Next(nil)
63+
return rr.NextServer(r)
6464
}
6565

6666
// Update updates the list of available servers.
@@ -100,15 +100,15 @@ func NewLatencyBased(log *slog.Logger) *LatencyBased {
100100
}
101101
}
102102

103-
// Next returns the next server based on the weighted random selection,
103+
// NextServer returns the next server based on the weighted random selection,
104104
// where the weight is determined by the latency Rate of each server. The cumulative
105105
// approach is used to select a server, effectively creating a "range" for each
106106
// server in the interval [0, 1]. For example, if the rates are [0.5, 0.3, 0.2],
107107
// the ranges would be: Server 1: [0, 0.5), Server 2: [0.5, 0.8), Server 3: [0.8, 1).
108108
// The random number will fall into one of these ranges, effectively selecting
109109
// a server based on its latency rate. This approach works regardless of the order of
110110
// the servers, so there's no need to sort them based on latency or rate.
111-
func (rr *LatencyBased) Next(_ *http.Request) *Server {
111+
func (rr *LatencyBased) NextServer(_ *http.Request) *Server {
112112
rr.mu.Lock()
113113
defer rr.mu.Unlock()
114114

@@ -204,13 +204,13 @@ func NewStickyLatencyBased(log *slog.Logger, sessionTimeout time.Duration) *Stic
204204
return slb
205205
}
206206

207-
// Next returns the next server based on session affinity and latency.
207+
// NextServer returns the next server based on session affinity and latency.
208208
// It first checks for existing session identifiers in headers or cookies,
209209
// then falls back to the embedded LatencyBased selection for new sessions.
210-
func (slb *StickyLatencyBased) Next(req *http.Request) *Server {
210+
func (slb *StickyLatencyBased) NextServer(req *http.Request) *Server {
211211
if req == nil {
212212
slb.log.Warn("provided request is nil")
213-
return slb.LatencyBased.Next(nil)
213+
return slb.LatencyBased.NextServer(req)
214214
}
215215

216216
slb.LatencyBased.mu.Lock()
@@ -256,7 +256,7 @@ func (slb *StickyLatencyBased) Next(req *http.Request) *Server {
256256
}
257257
}
258258

259-
server := slb.LatencyBased.Next(req)
259+
server := slb.LatencyBased.NextServer(req)
260260

261261
if server != nil && sessionID != "" {
262262
slb.sessionMu.Lock()

internal/proxy/balancer_test.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
"github.com/akash-network/rpc-proxy/internal/seed"
1818
)
1919

20-
func TestRoundRobin_Next(t *testing.T) {
20+
func TestRoundRobin_NextServer(t *testing.T) {
2121
servers := []*Server{
2222
{
2323
name: "a",
@@ -67,7 +67,7 @@ func TestRoundRobin_Next(t *testing.T) {
6767
defer wg.Done()
6868
for j := 0; j < n; j++ {
6969
t.Logf("goroutine %d: ", id)
70-
lb.Next(nil)
70+
lb.NextServer(nil)
7171
}
7272
}(i)
7373
}
@@ -79,7 +79,7 @@ func TestRoundRobin_Next(t *testing.T) {
7979
}
8080
}
8181

82-
func TestLatencyBased_Next(t *testing.T) {
82+
func TestLatencyBased_NextServer(t *testing.T) {
8383
servers := []*Server{
8484
{
8585
name: "a",
@@ -142,7 +142,7 @@ func TestLatencyBased_Next(t *testing.T) {
142142
go func(id int) {
143143
for j := 0; j < n; j++ {
144144
t.Logf("goroutine %d: ", id)
145-
queue <- lb.Next(nil)
145+
queue <- lb.NextServer(nil)
146146
}
147147
wg.Done()
148148
}(i)
@@ -190,7 +190,7 @@ func TestStickyLatencyBased_SessionAffinity(t *testing.T) {
190190
req1.Header.Set(ProxyKeyHeader, "session123")
191191

192192
// First request should select a server (using weighted random selection)
193-
server1 := lb.Next(req1)
193+
server1 := lb.NextServer(req1)
194194
if server1 == nil {
195195
t.Fatal("expected a server to be selected")
196196
}
@@ -199,7 +199,7 @@ func TestStickyLatencyBased_SessionAffinity(t *testing.T) {
199199
// Second request with same session ID should go to same server
200200
req2 := createTestRequest()
201201
req2.Header.Set(ProxyKeyHeader, "session123")
202-
server2 := lb.Next(req2)
202+
server2 := lb.NextServer(req2)
203203

204204
if server2.name != server1.name {
205205
t.Errorf("expected same server %s, got %s", server1.name, server2.name)
@@ -208,7 +208,7 @@ func TestStickyLatencyBased_SessionAffinity(t *testing.T) {
208208
// Different session ID should potentially select different server (but likely same due to latency)
209209
req3 := createTestRequest()
210210
req3.Header.Set(ProxyKeyHeader, "session456")
211-
server3 := lb.Next(req3)
211+
server3 := lb.NextServer(req3)
212212

213213
if server3 == nil {
214214
t.Fatal("expected a server to be selected")
@@ -230,7 +230,7 @@ func TestStickyLatencyBased_NoProxyKey(t *testing.T) {
230230
req1 := createTestRequest()
231231
// No X-PROXY-KEY header set
232232

233-
server1 := lb.Next(req1)
233+
server1 := lb.NextServer(req1)
234234
if server1 == nil {
235235
t.Fatal("expected a server to be selected")
236236
}
@@ -241,7 +241,7 @@ func TestStickyLatencyBased_NoProxyKey(t *testing.T) {
241241

242242
// Second request without X-PROXY-KEY should also use latency-based selection
243243
req2 := createTestRequest()
244-
server2 := lb.Next(req2)
244+
server2 := lb.NextServer(req2)
245245

246246
if server2 == nil {
247247
t.Fatal("expected a server to be selected")
@@ -265,15 +265,15 @@ func TestStickyLatencyBased_SessionPersistence(t *testing.T) {
265265
req1 := createTestRequest()
266266
req1.Header.Set(ProxyKeyHeader, "session123")
267267

268-
server1 := lb.Next(req1)
268+
server1 := lb.NextServer(req1)
269269
if server1 == nil {
270270
t.Fatal("expected a server to be selected")
271271
}
272272

273273
// Second request with same session should go to same server
274274
req2 := createTestRequest()
275275
req2.Header.Set(ProxyKeyHeader, "session123")
276-
server2 := lb.Next(req2)
276+
server2 := lb.NextServer(req2)
277277

278278
if server2 == nil {
279279
t.Fatal("expected a server to be selected")
@@ -304,7 +304,7 @@ func TestStickyLatencyBased_SessionTimeout(t *testing.T) {
304304
req1 := createTestRequest()
305305
req1.Header.Set(ProxyKeyHeader, "session123")
306306

307-
server1 := lb.Next(req1)
307+
server1 := lb.NextServer(req1)
308308
if server1 == nil {
309309
t.Fatal("expected a server to be selected")
310310
}
@@ -344,7 +344,7 @@ func TestStickyLatencyBased_CacheHitMiss(t *testing.T) {
344344
req.Header.Set(ProxyKeyHeader, "cache-test")
345345

346346
// First request - cache miss, should create new session
347-
server1 := lb.Next(req)
347+
server1 := lb.NextServer(req)
348348
if server1 == nil {
349349
t.Fatal("expected a server to be selected")
350350
}
@@ -362,7 +362,7 @@ func TestStickyLatencyBased_CacheHitMiss(t *testing.T) {
362362
}
363363

364364
// Second request within timeout - cache hit, should return same server
365-
server2 := lb.Next(req)
365+
server2 := lb.NextServer(req)
366366
if server2 != server1 {
367367
t.Error("expected same server for cache hit")
368368
}
@@ -371,7 +371,7 @@ func TestStickyLatencyBased_CacheHitMiss(t *testing.T) {
371371
time.Sleep(150 * time.Millisecond)
372372

373373
// Third request after timeout - cache miss due to expiry, should trigger inline cleanup
374-
server3 := lb.Next(req)
374+
server3 := lb.NextServer(req)
375375
if server3 == nil {
376376
t.Fatal("expected a server to be selected after timeout")
377377
}
@@ -412,7 +412,7 @@ func TestStickyLatencyBased_ProxyKeyHeader(t *testing.T) {
412412
req1 := createTestRequest()
413413
req1.Header.Set(ProxyKeyHeader, "session-priority")
414414

415-
server1 := lb.Next(req1)
415+
server1 := lb.NextServer(req1)
416416
if server1 == nil {
417417
t.Fatal("expected a server to be selected")
418418
}
@@ -421,7 +421,7 @@ func TestStickyLatencyBased_ProxyKeyHeader(t *testing.T) {
421421
req2 := createTestRequest()
422422
req2.Header.Set(ProxyKeyHeader, "session-priority")
423423

424-
server2 := lb.Next(req2)
424+
server2 := lb.NextServer(req2)
425425
if server2.name != server1.name {
426426
t.Errorf("expected same server %s, got %s", server1.name, server2.name)
427427
}
@@ -455,7 +455,7 @@ func TestStickyLatencyBased_ConcurrentAccess(t *testing.T) {
455455
req := createTestRequest()
456456
req.Header.Set(ProxyKeyHeader, sessionID)
457457

458-
server := lb.Next(req)
458+
server := lb.NextServer(req)
459459
if server == nil {
460460
t.Errorf("goroutine %d: expected a server to be selected", goroutineID)
461461
return
@@ -490,7 +490,7 @@ func TestStickyLatencyBased_ServerUpdate(t *testing.T) {
490490
req := createTestRequest()
491491
req.Header.Set(ProxyKeyHeader, "session123")
492492

493-
server1 := lb.Next(req)
493+
server1 := lb.NextServer(req)
494494
if server1 == nil {
495495
t.Fatal("expected a server to be selected")
496496
}
@@ -503,7 +503,7 @@ func TestStickyLatencyBased_ServerUpdate(t *testing.T) {
503503
lb.Update(updatedServers)
504504

505505
// Request with same session should now go to a different server since server1 is gone
506-
server2 := lb.Next(req)
506+
server2 := lb.NextServer(req)
507507
if server2 == nil {
508508
t.Fatal("expected a server to be selected")
509509
}

internal/proxy/grpc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (p *GRPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
4444
return
4545
}
4646

47-
if srv := p.lb.Next(r); srv != nil {
47+
if srv := p.lb.NextServer(r); srv != nil {
4848

4949
// Create the reverse proxy
5050
proxy := httputil.ReverseProxy{

internal/proxy/proxy_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ func TestRPCProxy(t *testing.T) {
5050

5151
stats := proxy.Stats()
5252
require.Len(t, stats, 3)
53-
5453
}
5554

5655
func TestRestProxy(t *testing.T) {
@@ -319,6 +318,6 @@ type MockLoadBalancer struct{}
319318

320319
func (m *MockLoadBalancer) Update(servers []*Server) {}
321320

322-
func (m *MockLoadBalancer) Next(*http.Request) *Server {
321+
func (m *MockLoadBalancer) NextServer(*http.Request) *Server {
323322
return nil
324323
}

internal/proxy/rest.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func (p *RestProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
4747
}
4848

4949
r.URL.Path = strings.TrimPrefix(r.URL.Path, "/rest")
50-
if srv := p.lb.Next(r); srv != nil {
50+
if srv := p.lb.NextServer(r); srv != nil {
5151
proxy := newRedirectFollowingReverseProxy(srv, p.log, "rest")
5252
proxy.ServeHTTP(w, r)
5353
metrics.IncrementRequestCount("rest", srv.Url.String())

internal/proxy/rpc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func (p *RPCProxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
4747
}
4848

4949
r.URL.Path = strings.TrimPrefix(r.URL.Path, "/rpc")
50-
if srv := p.lb.Next(r); srv != nil {
50+
if srv := p.lb.NextServer(r); srv != nil {
5151
proxy := newRedirectFollowingReverseProxy(srv, p.log, "rpc")
5252
proxy.ServeHTTP(w, r)
5353
metrics.IncrementRequestCount("rpc", srv.Url.String())

0 commit comments

Comments
 (0)