4
4
"context"
5
5
"errors"
6
6
"io"
7
+ "log"
7
8
"net"
8
9
"net/url"
9
10
"os"
50
51
// buildx uses to get metadata like disk usage and build history.
51
52
var builds atomic.Int64
52
53
54
+ const PROXY_DEBUG = false
55
+
53
56
func BuildkitdClient (ctx context.Context , conn net.Conn , buildkitdAddress string ) (* grpc.ClientConn , error ) {
54
57
dialContext := func (context.Context , string ) (net.Conn , error ) {
55
58
return conn , nil
@@ -78,13 +81,26 @@ func Proxy(ctx context.Context, conn net.Conn, acquireState func() *ProxyState,
78
81
ctx , cancel := context .WithCancel (ctx )
79
82
defer cancel ()
80
83
84
+ var logger * log.Logger
85
+ if PROXY_DEBUG {
86
+ logFile , err := os .OpenFile ("/var/log/proxy.log" , os .O_APPEND | os .O_CREATE | os .O_WRONLY , 0644 )
87
+ if err != nil {
88
+ log .Printf ("Failed to open proxy log file: %v" , err )
89
+ return
90
+ }
91
+ defer logFile .Close ()
92
+ logger = log .New (logFile , "" , log .LstdFlags )
93
+ } else {
94
+ logger = log .New (io .Discard , "" , log .LstdFlags )
95
+ }
96
+
81
97
opts := []grpc.ServerOption {
82
98
grpc .KeepaliveEnforcementPolicy (depot .LoadKeepaliveEnforcementPolicy ()),
83
99
grpc .KeepaliveParams (depot .LoadKeepaliveServerParams ()),
84
100
}
85
101
server := grpc .NewServer (opts ... )
86
102
87
- control .RegisterControlServer (server , & ControlProxy {state : acquireState , platform : platform , cancel : cancel , status : status })
103
+ control .RegisterControlServer (server , & ControlProxy {state : acquireState , platform : platform , cancel : cancel , status : status , logger : logger })
88
104
gateway .RegisterLLBBridgeServer (server , & GatewayProxy {state : acquireState , platform : platform })
89
105
trace .RegisterTraceServiceServer (server , & TracesProxy {state : acquireState })
90
106
content .RegisterContentServer (server , & ContentProxy {state : acquireState })
@@ -112,9 +128,11 @@ type ControlProxy struct {
112
128
status chan * client.SolveStatus
113
129
platform string
114
130
cancel context.CancelFunc
131
+ logger * log.Logger
115
132
}
116
133
117
134
func (p * ControlProxy ) Prune (in * control.PruneRequest , toBuildx control.Control_PruneServer ) error {
135
+ p .logger .Printf ("Prune called!\n " )
118
136
ctx := toBuildx .Context ()
119
137
md , ok := metadata .FromIncomingContext (ctx )
120
138
if ok {
@@ -152,6 +170,7 @@ func (p *ControlProxy) Prune(in *control.PruneRequest, toBuildx control.Control_
152
170
}
153
171
154
172
func (p * ControlProxy ) Solve (ctx context.Context , in * control.SolveRequest ) (* control.SolveResponse , error ) {
173
+ p .logger .Printf ("Solve called!\n " )
155
174
if builds .Load () == 1 {
156
175
return & control.SolveResponse {}, nil
157
176
}
@@ -177,6 +196,7 @@ func (p *ControlProxy) Solve(ctx context.Context, in *control.SolveRequest) (*co
177
196
}
178
197
179
198
func (p * ControlProxy ) Status (in * control.StatusRequest , toBuildx control.Control_StatusServer ) error {
199
+ p .logger .Printf ("Status called!\n " )
180
200
if builds .Load () == 1 {
181
201
return nil
182
202
}
@@ -261,6 +281,7 @@ func (p *ControlProxy) Status(in *control.StatusRequest, toBuildx control.Contro
261
281
}
262
282
263
283
func (p * ControlProxy ) Session (buildx control.Control_SessionServer ) error {
284
+ p .logger .Printf ("Session called!\n " )
264
285
if builds .Load () == 1 {
265
286
return nil
266
287
}
@@ -310,6 +331,7 @@ func (p *ControlProxy) Session(buildx control.Control_SessionServer) error {
310
331
// Those API calls would keep the builder alive, even if the user is not using it.
311
332
// ListWorkers call is common among builds and those commands.
312
333
func (p * ControlProxy ) ListWorkers (ctx context.Context , in * control.ListWorkersRequest ) (* control.ListWorkersResponse , error ) {
334
+ p .logger .Printf ("ListWorkers called %d!\n " , builds .Load ())
313
335
num := builds .Add (1 )
314
336
// When we get a second build request we know it is not an buildx metadata call such as disk usage.
315
337
if num > 1 {
@@ -322,6 +344,9 @@ func (p *ControlProxy) ListWorkers(ctx context.Context, in *control.ListWorkersR
322
344
md , ok := metadata .FromIncomingContext (ctx )
323
345
if ok && ! isOlderThanBuildx013 (md .Get ("user-agent" )) {
324
346
builds .Add (1 )
347
+ p .logger .Printf ("new buildx detected, incremented builds to %d!\n " , builds .Load ())
348
+ } else {
349
+ p .logger .Printf ("new buildx not detected, builds is %d!\n " , builds .Load ())
325
350
}
326
351
327
352
return & control.ListWorkersResponse {
@@ -397,24 +422,30 @@ func (p *ControlProxy) scheduleShutdown() {
397
422
398
423
// Used by desktop. We ignore and shutdown.
399
424
func (p * ControlProxy ) DiskUsage (ctx context.Context , in * control.DiskUsageRequest ) (* control.DiskUsageResponse , error ) {
425
+ p .logger .Printf ("DiskUsage called!\n " )
400
426
p .scheduleShutdown ()
401
427
return & control.DiskUsageResponse {}, nil
402
428
}
403
429
404
430
// Used by desktop. We ignore and shutdown.
405
431
func (p * ControlProxy ) Info (ctx context.Context , in * control.InfoRequest ) (* control.InfoResponse , error ) {
406
- p .scheduleShutdown ()
407
- return nil , status .Errorf (codes .Unimplemented , "method Info not implemented" )
432
+ p .logger .Printf ("Info called!\n " )
433
+ return & control.InfoResponse {BuildkitVersion : & worker.BuildkitVersion {
434
+ Package : "buildkit" ,
435
+ Version : "v0.13.2" ,
436
+ Revision : "1234567890" ,
437
+ }}, nil
408
438
}
409
439
410
440
// Used by desktop. We ignore and shutdown.
411
441
func (p * ControlProxy ) ListenBuildHistory (in * control.BuildHistoryRequest , toBuildx control.Control_ListenBuildHistoryServer ) error {
442
+ p .logger .Printf ("ListenBuildHistory called!\n " )
412
443
return status .Errorf (codes .Unimplemented , "method ListenBuildHistory not implemented" )
413
444
}
414
445
415
446
// Used by desktop. We ignore and shutdown.
416
447
func (p * ControlProxy ) UpdateBuildHistory (ctx context.Context , in * control.UpdateBuildHistoryRequest ) (* control.UpdateBuildHistoryResponse , error ) {
417
- p .scheduleShutdown ( )
448
+ p .logger . Printf ( "UpdateBuildHistory called! \n " )
418
449
return & control.UpdateBuildHistoryResponse {}, nil
419
450
}
420
451
0 commit comments