fixsess and logic for web ide
ci-agent / build (push) Failing after 2m42s

This commit is contained in:
d3m0k1d
2026-04-04 23:56:28 +03:00
parent 1e4e65bb84
commit b516a54c17
17 changed files with 1792 additions and 113 deletions
@@ -186,45 +186,3 @@ func (c *Collector) Agents() []*Agent {
}
return result
}
// ServicesStream handles the ServicesUpdate client-streaming RPC.
// Agents send service status updates which are stored in the collector.
// Returns a single response when the agent closes the stream.
func (c *Collector) ServicesStream(stream proto.Collector_ServicesStreamServer) error {
md, ok := metadata.FromIncomingContext(stream.Context())
if !ok {
return fmt.Errorf("no metadata in context")
}
whoamiVals := md["whoami"]
if len(whoamiVals) == 0 {
return fmt.Errorf("whoami metadata missing")
}
agentName := whoamiVals[0]
log.Printf("Agent %s started services update stream", agentName)
for {
update, err := stream.Recv()
if err == io.EOF {
log.Printf("Agent %s finished services update stream", agentName)
return stream.SendAndClose(&proto.ServicesUpdateResp{})
}
if err != nil {
return fmt.Errorf("failed to receive services update: %w", err)
}
c.mu.Lock()
if agent, ok := c.agents[agentName]; ok {
services := make([]string, 0, len(update.Services))
for _, s := range update.Services {
services = append(services, fmt.Sprintf("%s:%s", s.Name, s.Status))
}
agent.Services = services
log.Printf("Updated services for agent %s: %v", agentName, agent.Services)
} else {
log.Printf("Warning: received services update for unknown agent %s", agentName)
}
c.mu.Unlock()
}
}
@@ -60,6 +60,18 @@ func (self *Commander) GetAgent(aid string) (agent Agent, ok bool) {
return
}
// GetAgentByLabel searches for an agent by its human-readable label.
func (self *Commander) GetAgentByLabel(label string) (agent Agent, ok bool) {
self.mu.RLock()
defer self.mu.RUnlock()
for _, a := range self.agents {
if a.Label == label {
return a, true
}
}
return
}
func (self *Commander) Agents() []Agent {
self.mu.RLock()
defer self.mu.RUnlock()