From fe49dcc963d315fc8ae024bb1d85645cb68db576 Mon Sep 17 00:00:00 2001 From: cbhakar Date: Fri, 8 Oct 2021 14:56:10 +0530 Subject: [PATCH 1/4] optimised boolean conditions --- pkg/manager/api_agent.go | 6 +----- pkg/manager/server.go | 7 +------ 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/pkg/manager/api_agent.go b/pkg/manager/api_agent.go index 4ef7a9a..c218a4c 100644 --- a/pkg/manager/api_agent.go +++ b/pkg/manager/api_agent.go @@ -847,11 +847,7 @@ func upsertAgent(ctx *common.Context, tx *Tx, agent *Agents, ch *common.CustomHe } func byteToBool(b byte) bool { - if b == 0 { - return false - } - - return true + return b != 0 } func boolToByte(b bool) byte { diff --git a/pkg/manager/server.go b/pkg/manager/server.go index d2e7aeb..d45ee6a 100644 --- a/pkg/manager/server.go +++ b/pkg/manager/server.go @@ -722,12 +722,7 @@ func checkLock(tx *Tx, instanceID string, d time.Duration) bool { func expired(lockDate time.Time, d time.Duration) bool { current := time.Now().UTC() compare := lockDate.Add(d) - - if current.After(compare) { - return true - } - - return false + return current.After(compare) } func (manager *KlevrManager) encrypt(msg string) string { From 8be6a469077fb7f233a4f186cbda84c0a5b81c24 Mon Sep 17 00:00:00 2001 From: cbhakar Date: Fri, 8 Oct 2021 15:00:39 +0530 Subject: [PATCH 2/4] removed unwanted for loops --- pkg/agent/handshake.go | 4 +--- pkg/agent/scheduler.go | 5 ++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/pkg/agent/handshake.go b/pkg/agent/handshake.go index 4216ea9..8872662 100644 --- a/pkg/agent/handshake.go +++ b/pkg/agent/handshake.go @@ -50,9 +50,7 @@ func (agent *KlevrAgent) handShake() *common.Primary { agent.schedulerInterval = body.Me.CallCycle if len(body.Agent.Nodes) > 0 { - for _, v := range body.Agent.Nodes { - agent.Agents = append(agent.Agents, v) - } + agent.Agents = append(agent.Agents, body.Agent.Nodes...) } return &body.Agent.Primary diff --git a/pkg/agent/scheduler.go b/pkg/agent/scheduler.go index 69c9f43..b25f3d0 100644 --- a/pkg/agent/scheduler.go +++ b/pkg/agent/scheduler.go @@ -103,9 +103,8 @@ func (agent *KlevrAgent) getRemoteUpdatedTasks() []common.KlevrTask { logger.Debugf("tasks: %v", tasks) - for _, item := range tasks { - remoteTasks = append(remoteTasks, item) - } + remoteTasks = append(remoteTasks, tasks...) + } else { logger.Debugf("getRemoteUpdatedTasks error: %v", resErr) } From 990a71c6ffd4dc8092a7b1b1a6442f48fa664d8f Mon Sep 17 00:00:00 2001 From: cbhakar Date: Fri, 8 Oct 2021 15:10:20 +0530 Subject: [PATCH 3/4] removed unused variables --- pkg/common/task_executor.go | 4 ++-- pkg/manager/api_agent.go | 2 +- pkg/manager/repository.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/common/task_executor.go b/pkg/common/task_executor.go index ffafc43..0fd6947 100644 --- a/pkg/common/task_executor.go +++ b/pkg/common/task_executor.go @@ -326,9 +326,9 @@ func (executor *taskExecutor) execute(tw *TaskWrapper) { }(err) if RESERVED == tw.recover.CommandType { - result, err = runReservedCommand(tw.Result, tw.KlevrTask, tw.recover) + result, _ = runReservedCommand(tw.Result, tw.KlevrTask, tw.recover) } else if INLINE == tw.recover.CommandType { - result, err = runInlineCommand(tw.Result, tw.KlevrTask, tw.recover) + result, _ = runInlineCommand(tw.Result, tw.KlevrTask, tw.recover) } tw.Result = result diff --git a/pkg/manager/api_agent.go b/pkg/manager/api_agent.go index c218a4c..a026d15 100644 --- a/pkg/manager/api_agent.go +++ b/pkg/manager/api_agent.go @@ -367,7 +367,7 @@ func (api *agentAPI) receivePolling(w http.ResponseWriter, r *http.Request) { } // Credential 조회 - nCredentials, cnt := tx.getCredentials(ch.ZoneID) + nCredentials, _ := tx.getCredentials(ch.ZoneID) // 신규 task 할당 nTasks, cnt := tx.getTasksWithSteps(manager, ch.ZoneID, []string{string(common.WaitPolling), string(common.HandOver)}) diff --git a/pkg/manager/repository.go b/pkg/manager/repository.go index f8db315..6478245 100644 --- a/pkg/manager/repository.go +++ b/pkg/manager/repository.go @@ -408,11 +408,11 @@ func (tx *Tx) updateTask(manager *KlevrManager, t *Tasks) { if detail.Result != "" { detail.Result = manager.encrypt(detail.Result) - cnt, err = tx.Where("TASK_ID = ?", t.Id). + _, err = tx.Where("TASK_ID = ?", t.Id). Cols("CURRENT_STEP", "RESULT", "FAILED_STEP", "IS_FAILED_RECOVER"). Update(detail) } else { - cnt, err = tx.Where("TASK_ID = ?", t.Id). + _, err = tx.Where("TASK_ID = ?", t.Id). Cols("CURRENT_STEP", "FAILED_STEP", "IS_FAILED_RECOVER"). Update(detail) } From 2124e12b53ff226d087c040f908b5a594e9d858b Mon Sep 17 00:00:00 2001 From: cbhakar Date: Fri, 8 Oct 2021 15:51:56 +0530 Subject: [PATCH 4/4] suggested pattern should be followed to avoid confusion --- cmd/klevr-agent/main.go | 8 ++--- pkg/agent/agent.go | 2 +- pkg/agent/scheduler_primary.go | 2 +- pkg/common/commands.go | 2 +- pkg/common/encrypt.go | 2 +- pkg/common/queue.go | 63 ++++++++++++++++------------------ pkg/manager/api.go | 2 +- pkg/manager/api_agent.go | 2 +- pkg/manager/api_console.go | 6 ++-- pkg/manager/api_inner.go | 10 +++--- pkg/manager/cache.go | 10 ++++-- pkg/manager/docs/docs.go | 2 +- pkg/manager/repository.go | 2 +- pkg/manager/server.go | 12 +++---- pkg/rabbitmq/rabbitmq.go | 3 +- test/repository_test.go | 3 +- 16 files changed, 64 insertions(+), 67 deletions(-) diff --git a/cmd/klevr-agent/main.go b/cmd/klevr-agent/main.go index a15a3b5..49d940d 100644 --- a/cmd/klevr-agent/main.go +++ b/cmd/klevr-agent/main.go @@ -38,19 +38,19 @@ func main() { flag.Parse() // Important for parsing // Check the null data from CLI - if len(*apikey) == 0 { + if *apikey == "" { logger.Error("Please insert an API Key") os.Exit(0) } - if len(*platform) == 0 { + if *platform == "" { logger.Error("Please make sure the platform") os.Exit(0) } - if len(*zone) == 0 { + if *zone == "" { logger.Error("Please insert zoneId") os.Exit(0) } - if len(*klevrAddr) == 0 { + if *klevrAddr == "" { logger.Error("Please insert manager addr") os.Exit(0) } diff --git a/pkg/agent/agent.go b/pkg/agent/agent.go index d45f0df..c489889 100644 --- a/pkg/agent/agent.go +++ b/pkg/agent/agent.go @@ -116,7 +116,7 @@ func (agent *KlevrAgent) updateScheduler() { interval = defaultSchedulerInterval } if oldSchedulerInterval != interval { - if agent.scheduler.IsRunning() == true { + if agent.scheduler.IsRunning() { agent.scheduler.Clear() if agent.checkPrimary(agent.Primary.IP) { agent.scheduler.Every(int(interval)).Seconds().Do(agent.polling) diff --git a/pkg/agent/scheduler_primary.go b/pkg/agent/scheduler_primary.go index b71b3f9..3657b52 100644 --- a/pkg/agent/scheduler_primary.go +++ b/pkg/agent/scheduler_primary.go @@ -57,7 +57,7 @@ func (agent *KlevrAgent) assignmentTask(primaryAgentKey string, task []common.Kl } func (agent *KlevrAgent) polling() { - if agent.taskPollingPause == true { + if agent.taskPollingPause { logger.Debug("Polling aborted because authentication failed.") return } diff --git a/pkg/common/commands.go b/pkg/common/commands.go index 54b2409..b519570 100644 --- a/pkg/common/commands.go +++ b/pkg/common/commands.go @@ -241,7 +241,7 @@ func collectAgentLog() Command { cutData := make([]byte, baseSize) - copy(cutData[:], data[sIndex:eIndex]) + copy(cutData, data[sIndex:eIndex]) data = cutData } diff --git a/pkg/common/encrypt.go b/pkg/common/encrypt.go index 5b8fb97..6747ec5 100644 --- a/pkg/common/encrypt.go +++ b/pkg/common/encrypt.go @@ -144,7 +144,7 @@ func Decrypt(key string, crypt string) (decrypted string, err error) { dec := make([]byte, len(b)) ecb.CryptBlocks(dec, b) decrypt := getPKCS5Trimming(dec) - decrypt = decrypt[8:len(decrypt)] + decrypt = decrypt[8:] b, err = encoder.DecodeString(string(decrypt)) if err != nil { diff --git a/pkg/common/queue.go b/pkg/common/queue.go index 892c786..3890165 100644 --- a/pkg/common/queue.go +++ b/pkg/common/queue.go @@ -54,43 +54,38 @@ func NewChannelQueue(chanBufSize uint32) *Queue { // Queue 생성 시 큐에 삽입되는 데이터를 채널로 받아 처리하기 위한 listener go routine. Close()가 호출되면 종료된다. go func() { - // alive가 false가 될 때까지 반복 처리 - for q.alive { - // select로 buf 채널을 수신 - select { - case newItem := <-q.buf: - // buf에 nil이 들어오면 queue가 종료된다. (Close() 를 통해 nil을 전달 받아 종료시킨다.) - if newItem != nil { - nq := &queueItem{ - item: newItem, - next: nil, - } - - if q.length == 0 { - // 빈 큐에 데이터가 삽입될 시 출력 채널과 데이터가 동기화 되어 go routine이 block 되므로 새로운 go routine에서 채널을 전송한다. - go func() { - q.current <- nq - }() - } else { - q.last.next = nq - } - - q.last = nq - q.length++ - - if q.listener != nil { - q.listenerRunCount++ - - // 리스너 함수가 설정되고 호출 건수가 만족되면 리스너 함수를 호출한다. - if q.listenerRunCount >= q.listenerCallCount { - // 리스너 함수는 별도의 go routine으로 호출되므로 호출 시점의 누적 건수와 실행 시점의 누적 건수는 차이가 발생할 수 있다. - go q.listener(&Q) - q.listenerRunCount = 0 - } - } + newItem := <-q.buf + // buf에 nil이 들어오면 queue가 종료된다. (Close() 를 통해 nil을 전달 받아 종료시킨다.) + if newItem != nil { + nq := &queueItem{ + item: newItem, + next: nil, + } + + if q.length == 0 { + // 빈 큐에 데이터가 삽입될 시 출력 채널과 데이터가 동기화 되어 go routine이 block 되므로 새로운 go routine에서 채널을 전송한다. + go func() { + q.current <- nq + }() + } else { + q.last.next = nq + } + + q.last = nq + q.length++ + + if q.listener != nil { + q.listenerRunCount++ + + // 리스너 함수가 설정되고 호출 건수가 만족되면 리스너 함수를 호출한다. + if q.listenerRunCount >= q.listenerCallCount { + // 리스너 함수는 별도의 go routine으로 호출되므로 호출 시점의 누적 건수와 실행 시점의 누적 건수는 차이가 발생할 수 있다. + go q.listener(&Q) + q.listenerRunCount = 0 } } } + }() return &Q diff --git a/pkg/manager/api.go b/pkg/manager/api.go index 00fdafb..d2a2371 100644 --- a/pkg/manager/api.go +++ b/pkg/manager/api.go @@ -98,7 +98,7 @@ func Init(ctx *common.Context) *API { api.InitAgent(api.BaseRoutes.Agent) api.InitInstall(api.BaseRoutes.Install) api.InitInner(api.BaseRoutes.Inner) - if api.Manager.Config.Console.Usage == true { + if api.Manager.Config.Console.Usage { api.InitConsole(api.BaseRoutes.Console) } diff --git a/pkg/manager/api_agent.go b/pkg/manager/api_agent.go index a026d15..95bb710 100644 --- a/pkg/manager/api_agent.go +++ b/pkg/manager/api_agent.go @@ -323,7 +323,7 @@ func (api *agentAPI) receivePolling(w http.ResponseWriter, r *http.Request) { arrAgent[i].FreeDisk = manager.encrypt(strconv.Itoa(a.FreeDisk)) arrAgent[i].IsActive = boolToByte(a.IsActive) - if a.IsActive == false { + if !a.IsActive { inactiveAgentKeys = append(inactiveAgentKeys, a.AgentKey) if tid, ok := CheckShutdownTask(a.AgentKey); ok { agentKeys = append(agentKeys, a.AgentKey) diff --git a/pkg/manager/api_console.go b/pkg/manager/api_console.go index 8809586..1e178eb 100644 --- a/pkg/manager/api_console.go +++ b/pkg/manager/api_console.go @@ -153,7 +153,7 @@ func (api *ConsoleAPI) ChangePassword(w http.ResponseWriter, r *http.Request) { } pm := (*pms)[0] - if pm.Activated == true { + if pm.Activated { decPassword, err := common.Decrypt(manager.Config.Server.EncryptionKey, pm.UserPassword) if err != nil || pw != decPassword { w.WriteHeader(http.StatusUnauthorized) @@ -203,7 +203,7 @@ func (api *ConsoleAPI) Activated(w http.ResponseWriter, r *http.Request) { pm := (*pms)[0] var activatedStatus string - if pm.Activated == true { + if pm.Activated { activatedStatus = "activated" } else { activatedStatus = "initialized" @@ -251,7 +251,7 @@ func (api *ConsoleAPI) UnActivated(w http.ResponseWriter, r *http.Request) { } pm := (*pms)[0] - if pm.Activated == true { + if pm.Activated { manager := ctx.Get(CtxServer).(*KlevrManager) encPassword, err := common.Encrypt(manager.Config.Server.EncryptionKey, "admin") if err != nil { diff --git a/pkg/manager/api_inner.go b/pkg/manager/api_inner.go index d8dc8ac..498887c 100644 --- a/pkg/manager/api_inner.go +++ b/pkg/manager/api_inner.go @@ -709,7 +709,7 @@ func (api *serversAPI) getTasks(w http.ResponseWriter, r *http.Request) { logger.Debugf("%d", len(agentKeys)) logger.Debugf("%d", len(taskNames)) - if groupIDs == nil || len(groupIDs) == 0 { + if len(groupIDs) == 0 { common.WriteHTTPError(400, w, nil, "Query parameter groupID is required.") return } @@ -1030,7 +1030,7 @@ func (api *serversAPI) deleteGroup(w http.ResponseWriter, r *http.Request) { func (api *serversAPI) deletegroup(ctx *common.Context, tx *Tx, id uint64) error { tx.deletePrimaryAgent(id) _, ok := tx.getPrimaryAgent(id) - if ok == true { + if ok { return fmt.Errorf("It cannot remove the zone(primaryagent) of the zoneid: %d", id) } @@ -1224,13 +1224,13 @@ func TaskMatchingCredential(manager *KlevrManager, task Tasks, credential *[]Cre return task } - if len(task.TaskDetail.Parameter) == 0 { + if task.TaskDetail.Parameter == "" { return task } r := regexp.MustCompile("{{2}[a-zA-Z0-9]*}{2}") isMatch := r.MatchString(task.TaskDetail.Parameter) - if isMatch == false { + if !isMatch { return task } @@ -1239,7 +1239,7 @@ func TaskMatchingCredential(manager *KlevrManager, task Tasks, credential *[]Cre v := manager.decrypt(c.Value) re := regexp.MustCompile(pattern) - task.TaskDetail.Parameter = fmt.Sprintf("%s", re.ReplaceAllString(task.TaskDetail.Parameter, v)) + task.TaskDetail.Parameter = re.ReplaceAllString(task.TaskDetail.Parameter, v) logger.Debugf("Apply Credential : %s", task.TaskDetail.Parameter) } diff --git a/pkg/manager/cache.go b/pkg/manager/cache.go index 5eb6ec2..fa49018 100644 --- a/pkg/manager/cache.go +++ b/pkg/manager/cache.go @@ -297,10 +297,14 @@ func (c *Cache) GetAgentsForInactive(ctx *common.Context, before time.Time) (int for _, member := range members { var buf Agents - json.Unmarshal([]byte(member), &buf) + err = json.Unmarshal([]byte(member), &buf) + if err != nil { + logger.Debug(err) + return 0, nil + } - if byteToBool(buf.IsActive) == true { - if res := buf.LastAccessTime.Before(before); res == true { + if byteToBool(buf.IsActive) { + if res := buf.LastAccessTime.Before(before); res { inactivedAgents = append(inactivedAgents, buf) } } else { diff --git a/pkg/manager/docs/docs.go b/pkg/manager/docs/docs.go index 35b4a32..0cb0618 100644 --- a/pkg/manager/docs/docs.go +++ b/pkg/manager/docs/docs.go @@ -1790,7 +1790,7 @@ type s struct{} func (s *s) ReadDoc() string { sInfo := SwaggerInfo - sInfo.Description = strings.Replace(sInfo.Description, "\n", "\\n", -1) + sInfo.Description = strings.ReplaceAll(sInfo.Description, "\n", "\\n") t, err := template.New("swagger_info").Funcs(template.FuncMap{ "marshal": func(v interface{}) string { diff --git a/pkg/manager/repository.go b/pkg/manager/repository.go index 6478245..a1e68ba 100644 --- a/pkg/manager/repository.go +++ b/pkg/manager/repository.go @@ -791,7 +791,7 @@ func (tx *Tx) getCredentialByName(zoneID uint64, credentialName string) *Credent exist := common.CheckGetQuery(tx.Where("CREDENTIALS.ZONE_ID = ?", zoneID).And("CREDENTIALS.KEY = ?", credentialName).Get(&credential)) logger.Debugf("Selected Credentials : exist[%v], id[%d], key[%s]", exist, credential.Id, credential.Key) - if exist == false { + if !exist { return nil } diff --git a/pkg/manager/server.go b/pkg/manager/server.go index d45ee6a..9583ff1 100644 --- a/pkg/manager/server.go +++ b/pkg/manager/server.go @@ -143,7 +143,7 @@ func (manager *KlevrManager) Run() error { ctx.Put(CtxDbConn, db) ctx.Put(CtxPrimary, &sync.Mutex{}) - if manager.Config.DB.Cache == true { + if manager.Config.DB.Cache { ctx.Put(CtxCacheLock, &sync.Mutex{}) } @@ -634,16 +634,16 @@ func (manager *KlevrManager) updateAgentStatus(ctx *common.Context, cycle int) { cnt, agents := txManager.GetAgentsForInactive(ctx, tx, before) if cnt > 0 { - len := len(*agents) - inactiveIDs := make([]uint64, len) - inactiveAgentKeys := make([]string, len) + agentLen := len(*agents) + inactiveIDs := make([]uint64, agentLen) + inactiveAgentKeys := make([]string, agentLen) forceShutdownAgentKeys := make([]string, 0) taskIDs := make([]uint64, 0) - var events = make([]KlevrEvent, len) + var events = make([]KlevrEvent, agentLen) var eventTime = &common.JSONTime{Time: time.Now().UTC()} - for i := 0; i < len; i++ { + for i := 0; i < agentLen; i++ { agent := (*agents)[i] inactiveIDs[i] = agent.Id diff --git a/pkg/rabbitmq/rabbitmq.go b/pkg/rabbitmq/rabbitmq.go index afba9df..afb2131 100644 --- a/pkg/rabbitmq/rabbitmq.go +++ b/pkg/rabbitmq/rabbitmq.go @@ -126,9 +126,8 @@ func DialCluster(urls []string) (*Connection, error) { if i < count-1 { err = nil continue - } else { - return nil, errors.Wrap(err, "all connection failed.") } + return nil, errors.Wrap(err, "all connection failed.") } connection = &Connection{ diff --git a/test/repository_test.go b/test/repository_test.go index e38a103..5f035b6 100644 --- a/test/repository_test.go +++ b/test/repository_test.go @@ -22,8 +22,7 @@ func TestToTasks(t *testing.T) { TaskDetail: &manager.TaskDetail{TaskId: 2}, }) - var nrts *[]manager.RetriveTask - nrts = &rts + nrts := &rts var tasks = make([]manager.Tasks, 0) var tasks2 *[]manager.Tasks