MCPcopy Create free account
hub / github.com/ByteYellow/AgentProvenance / CreateSession

Method CreateSession

internal/control/service.go:76–154  ·  view source on GitHub ↗
(leaseID string)

Source from the content-addressed store, hash-verified

74}
75
76func (s Service) CreateSession(leaseID string) (string, error) {
77 var runID, taskPath string
78 if err := s.DB.QueryRow(`SELECT run_id, task_path FROM leases WHERE id = ?`, leaseID).Scan(&runID, &taskPath); err != nil {
79 return "", err
80 }
81 task, _, err := LoadTask(taskPath)
82 if err != nil {
83 return "", err
84 }
85 sessionID := ids.New("sbx")
86 workspace := filepath.Join(s.Paths.Workspaces, sessionID)
87 templateName := templateNameFromTaskPath(taskPath)
88 warmHit := false
89 if item, ok, hitErr := (warm.Service{DB: s.DB, Paths: s.Paths}).Hit(templateName, sessionID, 250, task.MemoryMB); hitErr != nil {
90 return "", hitErr
91 } else if ok {
92 workspace = item.WorkspacePath
93 warmHit = true
94 }
95 if !warmHit {
96 if err := os.MkdirAll(workspace, 0o755); err != nil {
97 return "", err
98 }
99 }
100 decision, err := (scheduler.Scheduler{DB: s.DB}).Admit(scheduler.Request{
101 RunID: runID,
102 SessionID: sessionID,
103 Runtime: "docker",
104 RiskTier: task.RiskTier,
105 CPURequest: task.CPURequest,
106 MemoryMB: task.MemoryMB,
107 })
108 if err != nil {
109 return "", err
110 }
111 if !decision.Admitted {
112 return "", fmt.Errorf("admission rejected: reject_reason=%s effective_cpu=%.3f debt=%.3f burst_risk=%s overcommit_ratio=%.2f queue_pressure=%s memory_pressure=%s memory_allocated_mb=%d memory_request_mb=%d memory_capacity_mb=%d",
113 decision.RejectReason, decision.EffectiveCPU, decision.ActiveCPUDebt, decision.BurstRisk, decision.OvercommitRatio, decision.QueuePressure, decision.MemoryPressure, decision.MemoryAllocatedMB, decision.MemoryRequestMB, decision.MemoryCapacityMB)
114 }
115 var egressProxy egress.ProxyInfo
116 if s.isDockerRuntime() {
117 egressProxy, err = (egress.Service{DB: s.DB, Paths: s.Paths}).EnsureSessionProxy(runID, sessionID)
118 if err != nil {
119 return "", err
120 }
121 }
122 start := time.Now()
123 containerID, err := s.createRuntimeSession(runtimeplane.CreateSessionRequest{
124 SessionID: sessionID,
125 LeaseID: leaseID,
126 RunID: runID,
127 Image: task.Image,
128 WorkspaceHostPath: workspace,
129 MemoryMB: task.MemoryMB,
130 CPURequest: task.CPURequest,
131 NetworkMode: task.NetworkMode,
132 ProxyURL: egressProxy.ContainerProxyURL,
133 NoProxy: "localhost,127.0.0.1,::1",

Calls 11

isDockerRuntimeMethod · 0.95
createRuntimeSessionMethod · 0.95
runtimeNameMethod · 0.95
NewFunction · 0.92
LoadTaskFunction · 0.85
templateNameFromTaskPathFunction · 0.85
HitMethod · 0.80
AdmitMethod · 0.80
EnsureSessionProxyMethod · 0.80
ExecMethod · 0.65

Tested by 2