From 0a0fd1738c361a6ec611fbbf0c598f6e5f1b8b2f Mon Sep 17 00:00:00 2001 From: matst80 Date: Wed, 13 Nov 2024 22:52:36 +0100 Subject: [PATCH] change stuff --- rpc-server.go | 5 +---- synced-pool.go | 12 ++++++------ tcp-connection.go | 3 ++- tcp-connection_test.go | 13 ++++++++++++- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/rpc-server.go b/rpc-server.go index fcf4e81..6eeadb4 100644 --- a/rpc-server.go +++ b/rpc-server.go @@ -49,11 +49,8 @@ func (h *GrainHandler) RemoteHandleMessageHandler(data *FrameWithPayload, result replyData, err := h.pool.Process(cartData.Id, msg) - if err != nil { - fmt.Println("Error handling message:", err) - } resultChan <- *replyData - return nil + return err } func (h *GrainHandler) RemoteGetStateHandler(data *FrameWithPayload, resultChan chan<- FrameWithPayload) error { diff --git a/synced-pool.go b/synced-pool.go index 2e35c98..7898c1c 100644 --- a/synced-pool.go +++ b/synced-pool.go @@ -103,7 +103,7 @@ func (p *SyncedPool) GrainOwnerChangeHandler(data *FrameWithPayload, resultChan idAndHostParts := strings.Split(string(data.Payload), ";") if len(idAndHostParts) != 2 { log.Printf("Invalid remote grain change message\n") - resultChan <- MakeFrameWithPayload(AckError, 400, []byte("invalid")) + resultChan <- MakeFrameWithPayload(AckError, 500, []byte("invalid")) return nil } id := ToCartId(idAndHostParts[0]) @@ -360,17 +360,17 @@ func (p *SyncedPool) removeLocalGrain(id CartId) { delete(p.local.grains, id) } -func (p *SyncedPool) AddRemote(host string) error { +func (p *SyncedPool) AddRemote(host string) { _, hasHost := p.remotes[host] - if host == "" || p.IsKnown(host) || hasHost { - return nil + if host == "" || hasHost { + return } client := NewConnection(fmt.Sprintf("%s:1338", host)) _, err := client.Call(Ping, nil) if err != nil { log.Printf("Error connecting to remote %s: %s\n", host, err) - return err + return } remote := RemoteHost{ @@ -403,7 +403,7 @@ func (p *SyncedPool) AddRemote(host string) error { log.Printf("Added remote %s\n", remote.Host) go remote.Initialize(p) - return nil + return } func (p *SyncedPool) getGrain(id CartId) (Grain, error) { diff --git a/tcp-connection.go b/tcp-connection.go index f5de9fb..8fe460e 100644 --- a/tcp-connection.go +++ b/tcp-connection.go @@ -83,8 +83,9 @@ func (c *Connection) CallAsync(msg FrameType, payload []byte, ch chan<- FrameWit err = SendFrame(conn, &toSend) if err != nil { - conn.Close() + log.Printf("Error sending frame: %v\n", err) close(ch) + conn.Close() return nil, err } diff --git a/tcp-connection_test.go b/tcp-connection_test.go index 6f30d08..a1da4af 100644 --- a/tcp-connection_test.go +++ b/tcp-connection_test.go @@ -1,6 +1,9 @@ package main -import "testing" +import ( + "fmt" + "testing" +) func TestGenericConnection(t *testing.T) { conn := NewConnection("localhost:51337") @@ -17,6 +20,9 @@ func TestGenericConnection(t *testing.T) { resultChan <- MakeFrameWithPayload(2, 200, datta) return nil }) + listener.AddHandler(3, func(input *FrameWithPayload, resultChan chan<- FrameWithPayload) error { + return fmt.Errorf("Error") + }) r, err := conn.Call(1, datta) if err != nil { t.Errorf("Error calling: %v\n", err) @@ -28,6 +34,11 @@ func TestGenericConnection(t *testing.T) { if err != nil || response.StatusCode != 200 || response.Type != Pong { t.Errorf("Error connecting to remote %v\n", response) } + res, err := conn.Call(3, datta) + if res.StatusCode == 200 { + t.Errorf("Expected error, got %v\n", res) + } + i := 100 results := make(chan FrameWithPayload, i) for i > 0 {