debug logs
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"log"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/models"
|
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/models"
|
||||||
@@ -77,20 +78,26 @@ func (self *Commander) removeAgent(aid string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Agent) AddJob(job models.JobForInsert) (int64, error) {
|
func (self *Agent) AddJob(job models.JobForInsert) (int64, error) {
|
||||||
|
log.Printf("[DEBUG] AddJob: agent=%s, command=%v", self.aid, job.Command)
|
||||||
jid, err := self.jobber.InitJob(self.ctx, self.aid, job)
|
jid, err := self.jobber.InitJob(self.ctx, self.aid, job)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("[DEBUG] AddJob: InitJob failed: %v", err)
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] AddJob: InitJob returned jid=%d, sending to self.in channel", jid)
|
||||||
self.in <- &proto.Command{
|
self.in <- &proto.Command{
|
||||||
Id: jid,
|
Id: jid,
|
||||||
Command: job.Command,
|
Command: job.Command,
|
||||||
Stdin: job.Stdin,
|
Stdin: job.Stdin,
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] AddJob: sent to self.in channel successfully")
|
||||||
return jid, err
|
return jid, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Agent) WaitJob(jid int64) (*models.Job, error) {
|
func (self *Agent) WaitJob(jid int64) (*models.Job, error) {
|
||||||
|
log.Printf("[DEBUG] WaitJob: agent=%s, jid=%d, waiting on self.jobs[%d].out", self.aid, jid, jid)
|
||||||
result := <-self.jobs[jid].out
|
result := <-self.jobs[jid].out
|
||||||
|
log.Printf("[DEBUG] WaitJob: agent=%s, jid=%d, received result", self.aid, jid)
|
||||||
return &result.fc, result.err
|
return &result.fc, result.err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,6 +141,7 @@ func (self *Agent) recv() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] recv: agent=%s, received finished job id=%d", self.aid, msg.Id)
|
||||||
return self.jobber.UpdateJobInDB(self.ctx, msg.Id, models.JobForUpdate{
|
return self.jobber.UpdateJobInDB(self.ctx, msg.Id, models.JobForUpdate{
|
||||||
Stdout: msg.Stdout,
|
Stdout: msg.Stdout,
|
||||||
Stderr: msg.Stderr,
|
Stderr: msg.Stderr,
|
||||||
@@ -141,25 +149,33 @@ func (self *Agent) recv() error {
|
|||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
|
log.Printf("[DEBUG] recv: agent=%s, EOF received", self.aid)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
// TODO: that would blow up at some point
|
if err != nil {
|
||||||
|
log.Printf("[DEBUG] recv: agent=%s, error: %v", self.aid, err)
|
||||||
|
}
|
||||||
out := self.jobs[job.ID].out
|
out := self.jobs[job.ID].out
|
||||||
out <- JobOut{
|
out <- JobOut{
|
||||||
fc: job,
|
fc: job,
|
||||||
err: err,
|
err: err,
|
||||||
}
|
}
|
||||||
close(out)
|
close(out)
|
||||||
|
log.Printf("[DEBUG] recv: agent=%s, sent result for job id=%d", self.aid, job.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Agent) send() error {
|
func (self *Agent) send() error {
|
||||||
for job := range self.in {
|
for job := range self.in {
|
||||||
|
log.Printf("[DEBUG] send: agent=%s, job id=%d, command=%v", self.aid, job.Id, job.Command)
|
||||||
self.jobs[job.Id] = newJob()
|
self.jobs[job.Id] = newJob()
|
||||||
if err := self.bidi.Send(job); err != nil {
|
if err := self.bidi.Send(job); err != nil {
|
||||||
|
log.Printf("[DEBUG] send: agent=%s, failed to send job id=%d: %v", self.aid, job.Id, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] send: agent=%s, sent job id=%d to agent", self.aid, job.Id)
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] send: agent=%s, self.in channel closed", self.aid)
|
||||||
return io.EOF
|
return io.EOF
|
||||||
// self.jobs[]
|
// self.jobs[]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package handlers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/grpcsrv/commander"
|
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/grpcsrv/commander"
|
||||||
@@ -44,16 +45,21 @@ type AddJobOut struct {
|
|||||||
// @Success 201 {object} AddJobOut
|
// @Success 201 {object} AddJobOut
|
||||||
// @Router /jobs [post]
|
// @Router /jobs [post]
|
||||||
func (self *JobsHandlers) AddJob(c *gin.Context) {
|
func (self *JobsHandlers) AddJob(c *gin.Context) {
|
||||||
|
log.Printf("[DEBUG] AddJob handler: request received")
|
||||||
err := func() error {
|
err := func() error {
|
||||||
var in AddJobIn
|
var in AddJobIn
|
||||||
if err := c.Bind(&in); err != nil {
|
if err := c.Bind(&in); err != nil {
|
||||||
|
log.Printf("[DEBUG] AddJob handler: bind failed: %v", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] AddJob handler: agent_id=%s, command=%s, interpreter_id=%d", in.AgentID, in.Command, in.InterpreterID)
|
||||||
agent, ok := self.cmder.GetAgent(in.AgentID)
|
agent, ok := self.cmder.GetAgent(in.AgentID)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
log.Printf("[DEBUG] AddJob handler: agent %s not found", in.AgentID)
|
||||||
c.Status(http.StatusNotFound)
|
c.Status(http.StatusNotFound)
|
||||||
return fmt.Errorf("agent not found")
|
return fmt.Errorf("agent not found")
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] AddJob handler: agent found, resolving command")
|
||||||
|
|
||||||
var command []string
|
var command []string
|
||||||
if in.InterpreterID == 0 {
|
if in.InterpreterID == 0 {
|
||||||
@@ -62,21 +68,27 @@ func (self *JobsHandlers) AddJob(c *gin.Context) {
|
|||||||
var err error
|
var err error
|
||||||
command, err = self.svc.ResolveCommand(c.Request.Context(), in.InterpreterID, in.Command)
|
command, err = self.svc.ResolveCommand(c.Request.Context(), in.InterpreterID, in.Command)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("[DEBUG] AddJob handler: ResolveCommand failed: %v", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Printf("[DEBUG] AddJob handler: calling agent.AddJob with command=%v", command)
|
||||||
jid, err := agent.AddJob(models.JobForInsert{
|
jid, err := agent.AddJob(models.JobForInsert{
|
||||||
Command: command,
|
Command: command,
|
||||||
Stdin: in.Stdin,
|
Stdin: in.Stdin,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("[DEBUG] AddJob handler: agent.AddJob failed: %v", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] AddJob handler: agent.AddJob returned jid=%d, calling WaitJob", jid)
|
||||||
job, err := agent.WaitJob(jid)
|
job, err := agent.WaitJob(jid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("[DEBUG] AddJob handler: agent.WaitJob failed: %v", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
log.Printf("[DEBUG] AddJob handler: agent.WaitJob returned job id=%d, status=%d", job.ID, job.Status)
|
||||||
c.JSON(http.StatusCreated, AddJobOut{
|
c.JSON(http.StatusCreated, AddJobOut{
|
||||||
ID: job.ID,
|
ID: job.ID,
|
||||||
Command: job.Command,
|
Command: job.Command,
|
||||||
@@ -85,6 +97,7 @@ func (self *JobsHandlers) AddJob(c *gin.Context) {
|
|||||||
Stderr: job.Stderr,
|
Stderr: job.Stderr,
|
||||||
Status: job.Status,
|
Status: job.Status,
|
||||||
})
|
})
|
||||||
|
log.Printf("[DEBUG] AddJob handler: response sent")
|
||||||
return nil
|
return nil
|
||||||
}()
|
}()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user