Update task service to use metadata content store

Address feedback and fix issues

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
This commit is contained in:
Derek McGowan 2017-07-06 15:37:25 -07:00
parent b6d58f63a8
commit 4322664b88
No known key found for this signature in database
GPG Key ID: F58C5D0A4405ACDB
6 changed files with 12 additions and 8 deletions

View File

@ -136,7 +136,6 @@ message StatusResponse {
Status status = 1; Status status = 1;
} }
message ListStatusesRequest { message ListStatusesRequest {
string filter = 1; string filter = 1;
} }

View File

@ -36,7 +36,7 @@ var (
bucketKeyObjectSnapshots = []byte("snapshots") // stores snapshot references bucketKeyObjectSnapshots = []byte("snapshots") // stores snapshot references
bucketKeyObjectContent = []byte("content") // stores content references bucketKeyObjectContent = []byte("content") // stores content references
bucketKeyObjectBlob = []byte("blob") // stores content links bucketKeyObjectBlob = []byte("blob") // stores content links
bucketKeyObjectIngest = []byte("ingest") // stores content links bucketKeyObjectIngest = []byte("ingest") // stores ingest links
bucketKeyDigest = []byte("digest") bucketKeyDigest = []byte("digest")
bucketKeyMediaType = []byte("mediatype") bucketKeyMediaType = []byte("mediatype")

View File

@ -296,6 +296,11 @@ func (nw *namespacedWriter) commit(tx *bolt.Tx, size int64, expected digest.Dige
if err != nil { if err != nil {
return err return err
} }
if size != 0 && size != status.Offset {
return errors.Errorf("%q failed size validation: %v != %v", nw.ref, status.Offset, size)
}
size = status.Offset
actual := nw.Writer.Digest() actual := nw.Writer.Digest()
if err := nw.Writer.Commit(size, expected); err != nil { if err := nw.Writer.Commit(size, expected); err != nil {
@ -307,8 +312,6 @@ func (nw *namespacedWriter) commit(tx *bolt.Tx, size int64, expected digest.Dige
} }
} }
size = status.Total
bkt, err := createBlobBucket(tx, nw.namespace, actual) bkt, err := createBlobBucket(tx, nw.namespace, actual)
if err != nil { if err != nil {
return err return err

View File

@ -3,6 +3,7 @@ package diff
import ( import (
diffapi "github.com/containerd/containerd/api/services/diff/v1" diffapi "github.com/containerd/containerd/api/services/diff/v1"
"github.com/containerd/containerd/api/types" "github.com/containerd/containerd/api/types"
"github.com/containerd/containerd/errdefs"
"github.com/containerd/containerd/mount" "github.com/containerd/containerd/mount"
"github.com/containerd/containerd/plugin" "github.com/containerd/containerd/plugin"
"golang.org/x/net/context" "golang.org/x/net/context"
@ -45,7 +46,7 @@ func (s *service) Apply(ctx context.Context, er *diffapi.ApplyRequest) (*diffapi
ocidesc, err := s.diff.Apply(ctx, desc, mounts) ocidesc, err := s.diff.Apply(ctx, desc, mounts)
if err != nil { if err != nil {
return nil, err return nil, errdefs.ToGRPC(err)
} }
return &diffapi.ApplyResponse{ return &diffapi.ApplyResponse{
@ -60,7 +61,7 @@ func (s *service) Diff(ctx context.Context, dr *diffapi.DiffRequest) (*diffapi.D
ocidesc, err := s.diff.DiffMounts(ctx, aMounts, bMounts, dr.MediaType, dr.Ref) ocidesc, err := s.diff.DiffMounts(ctx, aMounts, bMounts, dr.MediaType, dr.Ref)
if err != nil { if err != nil {
return nil, err return nil, errdefs.ToGRPC(err)
} }
return &diffapi.DiffResponse{ return &diffapi.DiffResponse{

View File

@ -62,6 +62,7 @@ func New(ic *plugin.InitContext) (interface{}, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
cs := metadata.NewContentStore(m.(*bolt.DB), ct.(content.Store))
runtimes := make(map[string]runtime.Runtime) runtimes := make(map[string]runtime.Runtime)
for _, rr := range rt { for _, rr := range rt {
r := rr.(runtime.Runtime) r := rr.(runtime.Runtime)
@ -71,7 +72,7 @@ func New(ic *plugin.InitContext) (interface{}, error) {
return &Service{ return &Service{
runtimes: runtimes, runtimes: runtimes,
db: m.(*bolt.DB), db: m.(*bolt.DB),
store: ct.(content.Store), store: cs,
emitter: e, emitter: e,
}, nil }, nil
} }

View File

@ -346,7 +346,7 @@ func writeContent(ctx context.Context, store content.Store, mediaType, ref strin
if err != nil { if err != nil {
return d, err return d, err
} }
if err := writer.Commit(0, ""); err != nil { if err := writer.Commit(size, ""); err != nil {
return d, err return d, err
} }
return v1.Descriptor{ return v1.Descriptor{