Skip to content

Commit

Permalink
Remove Panic in pkg
Browse files Browse the repository at this point in the history
  • Loading branch information
watal authored and Motok1 committed Oct 19, 2022
1 parent 5d8cf18 commit a1aca99
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 15 deletions.
3 changes: 2 additions & 1 deletion cmd/polad/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ func main() {
tedElems, err := gobgp.GetBgplsNlris(c.Global.Gobgp.GrpcClient.Address, c.Global.Gobgp.GrpcClient.Port)
logger.Info("Request TED Update", zap.String("source", "GoBGP"), zap.String("session", c.Global.Gobgp.GrpcClient.Address+":"+c.Global.Gobgp.GrpcClient.Port))
if err != nil {
logger.Panic("Failed session with GoBGP", zap.Error(err))
logger.Info("Failed session with GoBGP", zap.Error(err))
continue
}
tedElemsChan <- tedElems
time.Sleep(TED_UPDATE_INTERVAL * time.Minute)
Expand Down
18 changes: 12 additions & 6 deletions pkg/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,26 +73,31 @@ func NewPce(o *PceOptions, logger *zap.Logger, tedElemsChan chan []table.TedElem

s.logger = logger
lspChan := make(chan Lsp)
errChan := make(chan error)
// Start PCEP listen
go func() {
if err := s.Listen(o.PcepAddr, o.PcepPort, lspChan); err != nil {
s.logger.Panic("PCEP Listen Error", zap.Error(err))
errChan <- err
}
}()
// Start gRPC listen
go func() {
grpcServer := grpc.NewServer()
apiServer := NewAPIServer(s, grpcServer)
if err := apiServer.Serve(o.GrpcAddr, o.GrpcPort); err != nil {
s.logger.Panic("gRPC Listen Error", zap.Error(err), zap.String("server", "grpc"))
errChan <- err
}
}()

for {
lsp := <-lspChan
// Overwrite LSP
s.removeLsp(lsp)
s.lspList = append(s.lspList, lsp)
select {
case lsp := <-lspChan:
// Overwrite LSP
s.removeLsp(lsp)
s.lspList = append(s.lspList, lsp)
case err := <-errChan:
return err
}
}
}

Expand Down Expand Up @@ -122,6 +127,7 @@ func (s *Server) Listen(address string, port string, lspChan chan Lsp) error {
s.sessionList = append(s.sessionList, session)
go func() {
session.Established()
s.logger.Info("Remove PCEP session", zap.String("session", session.peerAddr.String()))
s.removeSession(session)
}()
sessionId += 1
Expand Down
18 changes: 10 additions & 8 deletions pkg/server/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package server

import (
"fmt"
"net"
"time"

Expand Down Expand Up @@ -44,10 +45,12 @@ func NewSession(sessionId uint8, lspChan chan Lsp, logger *zap.Logger) *Session
func (s *Session) Established() {
defer s.Close()
if err := s.Open(); err != nil {
s.logger.Panic("PCEP OPEN error", zap.Error(err))
s.logger.Info("PCEP OPEN error", zap.String("session", s.peerAddr.String()), zap.Error(err))
return
}
if err := s.SendKeepalive(); err != nil {
s.logger.Panic("Keepalive error", zap.Error(err))
s.logger.Info("Keepalive send error", zap.String("session", s.peerAddr.String()), zap.Error(err))
return
}

close := make(chan bool)
Expand All @@ -66,7 +69,7 @@ func (s *Session) Established() {
return
case <-ticker.C: // pass KEEPALIVE seconds
if err := s.SendKeepalive(); err != nil {
s.logger.Panic("Keepalive error", zap.Error(err))
s.logger.Info("Keepalive send error", zap.String("session", s.peerAddr.String()), zap.Error(err))
}
}
}
Expand All @@ -93,10 +96,10 @@ func (s *Session) ReadOpen() error {
commonHeader.DecodeFromBytes(headerBuf)
// CommonHeader Validation
if commonHeader.Version != 1 {
s.logger.Panic("PCEP version mismatch", zap.Uint8("version", commonHeader.Version))
return fmt.Errorf("PCEP version mismatch (receive version: %d)", commonHeader.Version)
}
if commonHeader.MessageType != pcep.MT_OPEN {
s.logger.Panic("This peer has not been opened.", zap.Uint8("commonObjectHeader.MessageType", commonHeader.MessageType), zap.String("session", s.peerAddr.String()))
return fmt.Errorf("This peer has not been opened (messageType: %d)", commonHeader.MessageType)
}

// Parse objectClass
Expand All @@ -108,10 +111,10 @@ func (s *Session) ReadOpen() error {
var commonObjectHeader pcep.CommonObjectHeader
commonObjectHeader.DecodeFromBytes(objectClassBuf)
if commonObjectHeader.ObjectClass != pcep.OC_OPEN {
s.logger.Panic("Unsupported ObjectClass", zap.Uint8("commonObjectHeader.ObjectClass", commonObjectHeader.ObjectClass), zap.String("session", s.peerAddr.String()))
return fmt.Errorf("Unsupported ObjectClass: %d", commonObjectHeader.ObjectClass)
}
if commonObjectHeader.ObjectType != 1 {
s.logger.Panic("Unsupported ObjectType", zap.Uint8("commonObjectHeader.ObjectType", commonObjectHeader.ObjectType), zap.String("session", s.peerAddr.String()))
return fmt.Errorf("Unsupported ObjectType: %d", commonObjectHeader.ObjectType)
}

var openObject pcep.OpenObject
Expand All @@ -137,7 +140,6 @@ func (s *Session) SendKeepalive() error {

s.logger.Info("Send Keepalive", zap.String("session", s.peerAddr.String()))
if _, err := s.tcpConn.Write(byteKeepaliveMessage); err != nil {
s.logger.Info("Keepalive send error", zap.String("session", s.peerAddr.String()))
return err
}
return nil
Expand Down

0 comments on commit a1aca99

Please sign in to comment.