Skip to content

Commit

Permalink
Merge pull request #2 from Famcache/fix/peer-mem
Browse files Browse the repository at this point in the history
Memory Leak Fix
  • Loading branch information
shahen94 authored May 31, 2024
2 parents cb90d4b + 0ec47c6 commit 1807927
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 19 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.2.0
1.2.1
13 changes: 0 additions & 13 deletions pkg/server/connection.go

This file was deleted.

7 changes: 6 additions & 1 deletion pkg/server/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"bufio"
"famcache/pkg/server/command"
"famcache/pkg/server/peers"
"io"
)

func (s *Server) handle(peer *peers.Peer) {
Expand All @@ -13,11 +14,15 @@ func (s *Server) handle(peer *peers.Peer) {
request, err := reader.ReadString('\n')

if err != nil {
if err == io.EOF {
s.peers.Remove(peer)
return
}

s.logger.Error("Error reading request")
return
}

println("Request: ", request)
com, err := command.NewCommand(request)

if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/server/impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ func (s *Server) Start() error {
return domain.ErrServerAccept
}

peer := s.AddPeer(&conn)
peer := s.peers.Add(conn)

s.logger.Info("New client connected: " + peer.ID())

Expand Down
32 changes: 32 additions & 0 deletions pkg/server/peers/manager.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package peers

import "net"

type PeersManager struct {
peers map[string]Peer
}

func (pm *PeersManager) Add(conn net.Conn) *Peer {
peer := NewPeer(conn)
pm.peers[peer.ID()] = *peer

return peer
}

func (pm *PeersManager) Remove(peer *Peer) {
delete(pm.peers, peer.ID())
}

func (pm *PeersManager) All() *map[string]Peer {
return &pm.peers
}

func (pm *PeersManager) GetById(id string) Peer {
return pm.peers[id]
}

func NewPeersManager() PeersManager {
return PeersManager{
peers: make(map[string]Peer),
}
}
2 changes: 1 addition & 1 deletion pkg/server/publish_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
func (s *Server) handlePublish(peer *peers.Peer, message *command.MessagingCommand) {
s.logger.Info("Peer " + peer.ID() + " published topic " + message.Topic)

for _, p := range s.peers {
for _, p := range *s.peers.All() {
if p.ID() == peer.ID() {
continue
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ type Server struct {
port string
logger logger.Logger
cache cache.Cache
peers []peers.Peer
peers peers.PeersManager
messagingQueue pubsub.Queue
}

Expand All @@ -26,7 +26,7 @@ func NewServer(options ServerOptions) server.FamcacheServer {
port: options.Port,
logger: options.Logger,
cache: options.Cache,
peers: make([]peers.Peer, 0),
peers: peers.NewPeersManager(),
messagingQueue: queue.NewPubsubQueue(),
}
}

0 comments on commit 1807927

Please sign in to comment.