Skip to content

Commit 6ca3ec8

Browse files
author
Tibor Vass
committed
builder: remove legacy build's session handling
This feature was used by docker build --stream and it was kept experimental. Users of this endpoint should enable BuildKit anyway by setting Version to BuilderBuildKit. Signed-off-by: Tibor Vass <[email protected]>
1 parent a4a82bb commit 6ca3ec8

10 files changed

Lines changed: 15 additions & 1009 deletions

File tree

api/server/backend/build/backend.go

Lines changed: 6 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ import (
99
"github.com/docker/docker/api/types/backend"
1010
"github.com/docker/docker/builder"
1111
buildkit "github.com/docker/docker/builder/builder-next"
12-
"github.com/docker/docker/builder/fscache"
1312
"github.com/docker/docker/image"
1413
"github.com/docker/docker/pkg/stringid"
1514
"github.com/pkg/errors"
16-
"golang.org/x/sync/errgroup"
1715
"google.golang.org/grpc"
1816
)
1917

@@ -31,14 +29,13 @@ type Builder interface {
3129
// Backend provides build functionality to the API router
3230
type Backend struct {
3331
builder Builder
34-
fsCache *fscache.FSCache
3532
imageComponent ImageComponent
3633
buildkit *buildkit.Builder
3734
}
3835

3936
// NewBackend creates a new build backend from components
40-
func NewBackend(components ImageComponent, builder Builder, fsCache *fscache.FSCache, buildkit *buildkit.Builder) (*Backend, error) {
41-
return &Backend{imageComponent: components, builder: builder, fsCache: fsCache, buildkit: buildkit}, nil
37+
func NewBackend(components ImageComponent, builder Builder, buildkit *buildkit.Builder) (*Backend, error) {
38+
return &Backend{imageComponent: components, builder: builder, buildkit: buildkit}, nil
4239
}
4340

4441
// RegisterGRPC registers buildkit controller to the grpc server.
@@ -99,34 +96,11 @@ func (b *Backend) Build(ctx context.Context, config backend.BuildConfig) (string
9996

10097
// PruneCache removes all cached build sources
10198
func (b *Backend) PruneCache(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) {
102-
eg, ctx := errgroup.WithContext(ctx)
103-
104-
var fsCacheSize uint64
105-
eg.Go(func() error {
106-
var err error
107-
fsCacheSize, err = b.fsCache.Prune(ctx)
108-
if err != nil {
109-
return errors.Wrap(err, "failed to prune fscache")
110-
}
111-
return nil
112-
})
113-
114-
var buildCacheSize int64
115-
var cacheIDs []string
116-
eg.Go(func() error {
117-
var err error
118-
buildCacheSize, cacheIDs, err = b.buildkit.Prune(ctx, opts)
119-
if err != nil {
120-
return errors.Wrap(err, "failed to prune build cache")
121-
}
122-
return nil
123-
})
124-
125-
if err := eg.Wait(); err != nil {
126-
return nil, err
99+
buildCacheSize, cacheIDs, err := b.buildkit.Prune(ctx, opts)
100+
if err != nil {
101+
return nil, errors.Wrap(err, "failed to prune build cache")
127102
}
128-
129-
return &types.BuildCachePruneReport{SpaceReclaimed: fsCacheSize + uint64(buildCacheSize), CachesDeleted: cacheIDs}, nil
103+
return &types.BuildCachePruneReport{SpaceReclaimed: uint64(buildCacheSize), CachesDeleted: cacheIDs}, nil
130104
}
131105

132106
// Cancel cancels the build by ID

api/server/router/system/system.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package system // import "github.com/docker/docker/api/server/router/system"
33
import (
44
"github.com/docker/docker/api/server/router"
55
buildkit "github.com/docker/docker/builder/builder-next"
6-
"github.com/docker/docker/builder/fscache"
76
)
87

98
// systemRouter provides information about the Docker system overall.
@@ -12,17 +11,15 @@ type systemRouter struct {
1211
backend Backend
1312
cluster ClusterBackend
1413
routes []router.Route
15-
fscache *fscache.FSCache // legacy
1614
builder *buildkit.Builder
1715
features *map[string]bool
1816
}
1917

2018
// NewRouter initializes a new system router
21-
func NewRouter(b Backend, c ClusterBackend, fscache *fscache.FSCache, builder *buildkit.Builder, features *map[string]bool) router.Router {
19+
func NewRouter(b Backend, c ClusterBackend, builder *buildkit.Builder, features *map[string]bool) router.Router {
2220
r := &systemRouter{
2321
backend: b,
2422
cluster: c,
25-
fscache: fscache,
2623
builder: builder,
2724
features: features,
2825
}

api/server/router/system/system_routes.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,6 @@ func (s *systemRouter) getDiskUsage(ctx context.Context, w http.ResponseWriter,
101101
return err
102102
})
103103

104-
var builderSize int64 // legacy
105-
eg.Go(func() error {
106-
var err error
107-
builderSize, err = s.fscache.DiskUsage(ctx)
108-
if err != nil {
109-
return pkgerrors.Wrap(err, "error getting fscache build cache usage")
110-
}
111-
return nil
112-
})
113-
114104
var buildCache []*types.BuildCache
115105
eg.Go(func() error {
116106
var err error
@@ -125,6 +115,7 @@ func (s *systemRouter) getDiskUsage(ctx context.Context, w http.ResponseWriter,
125115
return err
126116
}
127117

118+
var builderSize int64
128119
for _, b := range buildCache {
129120
builderSize += b.Size
130121
}

builder/dockerfile/builder.go

Lines changed: 3 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@ import (
88
"io/ioutil"
99
"sort"
1010
"strings"
11-
"time"
1211

1312
"github.com/containerd/containerd/platforms"
1413
"github.com/docker/docker/api/types"
1514
"github.com/docker/docker/api/types/backend"
1615
"github.com/docker/docker/api/types/container"
1716
"github.com/docker/docker/builder"
18-
"github.com/docker/docker/builder/fscache"
1917
"github.com/docker/docker/builder/remotecontext"
2018
"github.com/docker/docker/errdefs"
2119
"github.com/docker/docker/pkg/idtools"
@@ -25,7 +23,6 @@ import (
2523
"github.com/moby/buildkit/frontend/dockerfile/instructions"
2624
"github.com/moby/buildkit/frontend/dockerfile/parser"
2725
"github.com/moby/buildkit/frontend/dockerfile/shell"
28-
"github.com/moby/buildkit/session"
2926
specs "github.com/opencontainers/image-spec/specs-go/v1"
3027
"github.com/pkg/errors"
3128
"github.com/sirupsen/logrus"
@@ -49,31 +46,19 @@ const (
4946
stepFormat = "Step %d/%d : %v"
5047
)
5148

52-
// SessionGetter is object used to get access to a session by uuid
53-
type SessionGetter interface {
54-
Get(ctx context.Context, uuid string) (session.Caller, error)
55-
}
56-
5749
// BuildManager is shared across all Builder objects
5850
type BuildManager struct {
5951
idMapping *idtools.IdentityMapping
6052
backend builder.Backend
6153
pathCache pathCache // TODO: make this persistent
62-
sg SessionGetter
63-
fsCache *fscache.FSCache
6454
}
6555

6656
// NewBuildManager creates a BuildManager
67-
func NewBuildManager(b builder.Backend, sg SessionGetter, fsCache *fscache.FSCache, identityMapping *idtools.IdentityMapping) (*BuildManager, error) {
57+
func NewBuildManager(b builder.Backend, identityMapping *idtools.IdentityMapping) (*BuildManager, error) {
6858
bm := &BuildManager{
6959
backend: b,
7060
pathCache: &syncmap.Map{},
71-
sg: sg,
7261
idMapping: identityMapping,
73-
fsCache: fsCache,
74-
}
75-
if err := fsCache.RegisterTransport(remotecontext.ClientSessionRemote, NewClientSessionTransport()); err != nil {
76-
return nil, err
7762
}
7863
return bm, nil
7964
}
@@ -100,10 +85,8 @@ func (bm *BuildManager) Build(ctx context.Context, config backend.BuildConfig) (
10085
ctx, cancel := context.WithCancel(ctx)
10186
defer cancel()
10287

103-
if src, err := bm.initializeClientSession(ctx, cancel, config.Options); err != nil {
104-
return nil, err
105-
} else if src != nil {
106-
source = src
88+
if config.Options.SessionID != "" {
89+
return nil, errors.New("experimental session with v1 builder is no longer supported, use builder version v2 (BuildKit) instead")
10790
}
10891

10992
builderOptions := builderOptions{
@@ -120,39 +103,6 @@ func (bm *BuildManager) Build(ctx context.Context, config backend.BuildConfig) (
120103
return b.build(source, dockerfile)
121104
}
122105

123-
func (bm *BuildManager) initializeClientSession(ctx context.Context, cancel func(), options *types.ImageBuildOptions) (builder.Source, error) {
124-
if options.SessionID == "" || bm.sg == nil {
125-
return nil, nil
126-
}
127-
logrus.Debug("client is session enabled")
128-
129-
connectCtx, cancelCtx := context.WithTimeout(ctx, sessionConnectTimeout)
130-
defer cancelCtx()
131-
132-
c, err := bm.sg.Get(connectCtx, options.SessionID)
133-
if err != nil {
134-
return nil, err
135-
}
136-
go func() {
137-
<-c.Context().Done()
138-
cancel()
139-
}()
140-
if options.RemoteContext == remotecontext.ClientSessionRemote {
141-
st := time.Now()
142-
csi, err := NewClientSessionSourceIdentifier(ctx, bm.sg, options.SessionID)
143-
if err != nil {
144-
return nil, err
145-
}
146-
src, err := bm.fsCache.SyncFrom(ctx, csi)
147-
if err != nil {
148-
return nil, err
149-
}
150-
logrus.Debugf("sync-time: %v", time.Since(st))
151-
return src, nil
152-
}
153-
return nil, nil
154-
}
155-
156106
// builderOptions are the dependencies required by the builder
157107
type builderOptions struct {
158108
Options *types.ImageBuildOptions

builder/dockerfile/clientsession.go

Lines changed: 0 additions & 76 deletions
This file was deleted.

0 commit comments

Comments
 (0)