func (s *amazonReplicaAPIServer) PushDiff(pushDiffServer pfs.ReplicaAPI_PushDiffServer) (retErr error) { defer func() { if err := pushDiffServer.SendAndClose(google_protobuf.EmptyInstance); err != nil && retErr == nil { retErr = err } }() request, err := pushDiffServer.Recv() if err != nil { return err } writer := &s3Writer{ s3: s.s3, bucket: s.bucket, key: pushKey(request), } reader := &pushDiffReader{ server: pushDiffServer, } _, err = reader.buffer.Write(request.Value) if err != nil { return err } _, err = io.Copy(writer, reader) return err }
func (s *googleReplicaAPIServer) PushDiff(pushDiffServer pfs.ReplicaAPI_PushDiffServer) (retErr error) { defer func() { if err := pushDiffServer.SendAndClose(google_protobuf.EmptyInstance); err != nil && retErr == nil { retErr = err } }() request, err := pushDiffServer.Recv() if err != nil { return err } writer := s.bucket.Object(fmt.Sprintf("%s/%s/%d", request.Commit.Repo.Name, request.Commit.Id, request.Shard)).NewWriter(s.ctx) defer func() { if err := writer.Close(); err != nil && retErr == nil { retErr = err } }() reader := &pushDiffReader{ server: pushDiffServer, } _, err = reader.buffer.Write(request.Value) if err != nil { return err } _, err = io.Copy(writer, reader) return err }
func (a *internalAPIServer) PushDiff(pushDiffServer pfs.ReplicaAPI_PushDiffServer) (retErr error) { version, err := a.getVersion(pushDiffServer.Context()) if err != nil { return err } defer func() { if err := pushDiffServer.SendAndClose(google_protobuf.EmptyInstance); err != nil && retErr == nil { retErr = err } }() request, err := pushDiffServer.Recv() if err != nil { return err } ok, err := a.isLocalReplicaShard(request.Shard, version) if err != nil { return err } if !ok { return fmt.Errorf("pachyderm: illegal PushDiffRequest for unknown shard %d", request.Shard) } reader := &pushDiffReader{ server: pushDiffServer, } _, err = reader.buffer.Write(request.Value) if err != nil { return err } return a.driver.PushDiff(request.Commit, request.Shard, reader) }