Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 18 additions & 14 deletions pkg/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,22 +84,22 @@ type zerologEntry struct {

type logRecordWriter struct{}

// remoteLogThresholds defines log level thresholds for specific callers (files).
// Logs below the specified level for a given file will not be sent to the alpacon-server.
// If a file is not listed, all logs will be sent regardless of level.
var remoteLogThresholds = map[string]int{
"client.go": 30,
"reporter.go": 40,
"command.go": 30,
"commit.go": 30,
"pty.go": 30,
// logRecordFileHandlers defines log level thresholds for specific files.
// Only files listed here will have their logs sent to the remote server.
// Logs from files not listed will be ignored entirely.
// Logs below the specified level for a listed file will also be ignored.
var logRecordFileHandlers = map[string]int{
"command.go": 30,
"commit.go": 10,
"pty.go": 30,
"shell.go": 20,
}

func (w *logRecordWriter) Write(p []byte) (n int, err error) {
var entry zerologEntry
err = json.Unmarshal(p, &entry)
if err != nil {
return 0, err
return n, err
}

caller := entry.Caller
Expand All @@ -113,10 +113,14 @@ func (w *logRecordWriter) Write(p []byte) (n int, err error) {
}

callerFileName := getCallerFileName(caller)
if levelThreshold, ok := remoteLogThresholds[callerFileName]; ok {
if convertLevelToNumber(entry.Level) < levelThreshold {
return len(p), nil
}

levelThreshold, exists := logRecordFileHandlers[callerFileName]
if !exists {
return len(p), nil
}

if convertLevelToNumber(entry.Level) < levelThreshold {
return len(p), nil
}

record := logRecord{
Expand Down
4 changes: 2 additions & 2 deletions pkg/runner/shell.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ func demote(username, groupname string) (*syscall.SysProcAttr, error) {

usr, err := user.Lookup(username)
if err != nil {
return nil, fmt.Errorf("There is no corresponding %s username in this server", username)
return nil, fmt.Errorf("there is no corresponding %s username in this server", username)
}

group, err := user.LookupGroup(groupname)
if err != nil {
return nil, fmt.Errorf("There is no corresponding %s groupname in this server", groupname)
return nil, fmt.Errorf("there is no corresponding %s groupname in this server", groupname)
}

uid, err := strconv.Atoi(usr.Uid)
Expand Down
4 changes: 3 additions & 1 deletion pkg/scheduler/queue.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,11 @@ func (rq *RequestQueue) request(method, url string, data interface{}, priority i
retry: RetryLimit,
}

// Do not wake reporter goroutine if the queue is full or uninitialized.
err := rq.queue.Offer(entry)
if err != nil {
log.Error().Err(err).Msg("Error offering priority entry")
log.Error().Err(err).Msgf("Queue is full or uninitialized, dropping entry: %s", entry.url)
return
}

rq.cond.Signal()
Expand Down
5 changes: 2 additions & 3 deletions pkg/scheduler/reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,11 @@ func (r *Reporter) query(entry PriorityEntry) {
r.counters.failure++
if entry.retry > 0 {
backoff := time.Duration(math.Pow(2, float64(RetryLimit-entry.retry))) * time.Second
entry.due = time.Now().Add(backoff)
entry.due = entry.due.Add(backoff)
entry.retry--
err = Rqueue.queue.Offer(entry)
if err != nil {
r.counters.ignored++
time.Sleep(1 * time.Second)
}
} else {
r.counters.ignored++
Expand All @@ -117,8 +116,8 @@ func (r *Reporter) Run() {
err = Rqueue.queue.Offer(entry)
if err != nil {
r.counters.ignored++
time.Sleep(1 * time.Second)
}
time.Sleep(1 * time.Second)
} else {
r.query(entry)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/scheduler/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func (session *Session) CheckSession() bool {
return commissioned
} else {
log.Error().Msg("Unable to find 'commissioned' field in the response")
return false
continue
}
}
}
Expand Down
Loading