Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
shimv2: Add check for ppid before tracing
Browse files Browse the repository at this point in the history
Add a check for parent process ID before creating span.

Fixes #1807

Signed-off-by: Chelsea Mafrica <[email protected]>
  • Loading branch information
Chelsea Mafrica committed Nov 20, 2020
1 parent 609acf0 commit 2de728b
Showing 1 changed file with 72 additions and 34 deletions.
106 changes: 72 additions & 34 deletions containerd-shim-v2/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,11 @@ func New(ctx context.Context, id string, publisher events.Publisher) (cdshim.Shi
return nil, err
}
// create span
span, ctx := trace(ctx, "New")
defer span.Finish()
if os.Getppid() == 1 {
var span opentracing.Span
span, ctx = trace(ctx, "New")
defer span.Finish()
}

ctx, cancel := context.WithCancel(ctx)

Expand Down Expand Up @@ -182,8 +185,10 @@ func (s *service) StartShim(ctx context.Context, id, containerdBinary, container
// is called again after StartShim()
defer katautils.StopTracing(s.ctx)

span, _ := trace(s.ctx, "StartShim")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "StartShim")
defer span.Finish()
}

bundlePath, err := os.Getwd()
if err != nil {
Expand Down Expand Up @@ -309,8 +314,10 @@ func trace(ctx context.Context, name string) (opentracing.Span, context.Context)
}

func (s *service) Cleanup(ctx context.Context) (_ *taskAPI.DeleteResponse, err error) {
span, _ := trace(s.ctx, "Cleanup")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Cleanup")
defer span.Finish()
}

//Since the binary cleanup will return the DeleteResponse from stdout to
//containerd, thus we must make sure there is no any outputs in stdout except
Expand Down Expand Up @@ -367,8 +374,10 @@ func (s *service) Cleanup(ctx context.Context) (_ *taskAPI.DeleteResponse, err e

// Create a new sandbox or container with the underlying OCI runtime
func (s *service) Create(ctx context.Context, r *taskAPI.CreateTaskRequest) (_ *taskAPI.CreateTaskResponse, err error) {
span, _ := trace(s.ctx, "Create")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Create")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -421,8 +430,10 @@ func (s *service) Create(ctx context.Context, r *taskAPI.CreateTaskRequest) (_ *

// Start a process
func (s *service) Start(ctx context.Context, r *taskAPI.StartRequest) (_ *taskAPI.StartResponse, err error) {
span, _ := trace(s.ctx, "Start")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Start")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -470,8 +481,10 @@ func (s *service) Start(ctx context.Context, r *taskAPI.StartRequest) (_ *taskAP

// Delete the initial process and container
func (s *service) Delete(ctx context.Context, r *taskAPI.DeleteRequest) (_ *taskAPI.DeleteResponse, err error) {
span, _ := trace(s.ctx, "Delete")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Delete")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -520,8 +533,10 @@ func (s *service) Delete(ctx context.Context, r *taskAPI.DeleteRequest) (_ *task

// Exec an additional process inside the container
func (s *service) Exec(ctx context.Context, r *taskAPI.ExecProcessRequest) (_ *ptypes.Empty, err error) {
span, _ := trace(s.ctx, "Exec")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Exec")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -556,8 +571,10 @@ func (s *service) Exec(ctx context.Context, r *taskAPI.ExecProcessRequest) (_ *p

// ResizePty of a process
func (s *service) ResizePty(ctx context.Context, r *taskAPI.ResizePtyRequest) (_ *ptypes.Empty, err error) {
span, _ := trace(s.ctx, "ResizePty")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "ResizePty")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -593,8 +610,10 @@ func (s *service) ResizePty(ctx context.Context, r *taskAPI.ResizePtyRequest) (_

// State returns runtime state information for a process
func (s *service) State(ctx context.Context, r *taskAPI.StateRequest) (_ *taskAPI.StateResponse, err error) {
span, _ := trace(s.ctx, "State")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "State")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -643,8 +662,10 @@ func (s *service) State(ctx context.Context, r *taskAPI.StateRequest) (_ *taskAP

// Pause the container
func (s *service) Pause(ctx context.Context, r *taskAPI.PauseRequest) (_ *ptypes.Empty, err error) {
span, _ := trace(s.ctx, "Pause")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Pause")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -680,8 +701,10 @@ func (s *service) Pause(ctx context.Context, r *taskAPI.PauseRequest) (_ *ptypes

// Resume the container
func (s *service) Resume(ctx context.Context, r *taskAPI.ResumeRequest) (_ *ptypes.Empty, err error) {
span, _ := trace(s.ctx, "Resume")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Resume")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -715,8 +738,10 @@ func (s *service) Resume(ctx context.Context, r *taskAPI.ResumeRequest) (_ *ptyp

// Kill a process with the provided signal
func (s *service) Kill(ctx context.Context, r *taskAPI.KillRequest) (_ *ptypes.Empty, err error) {
span, _ := trace(s.ctx, "Kill")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Kill")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -770,8 +795,10 @@ func (s *service) Kill(ctx context.Context, r *taskAPI.KillRequest) (_ *ptypes.E
// Since for kata, it cannot get the process's pid from VM,
// thus only return the Shim's pid directly.
func (s *service) Pids(ctx context.Context, r *taskAPI.PidsRequest) (_ *taskAPI.PidsResponse, err error) {
span, _ := trace(s.ctx, "Pids")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Pids")
defer span.Finish()
}

var processes []*task.ProcessInfo

Expand All @@ -791,8 +818,10 @@ func (s *service) Pids(ctx context.Context, r *taskAPI.PidsRequest) (_ *taskAPI.

// CloseIO of a process
func (s *service) CloseIO(ctx context.Context, r *taskAPI.CloseIORequest) (_ *ptypes.Empty, err error) {
span, _ := trace(s.ctx, "CloseIO")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "CloseIO")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand Down Expand Up @@ -830,8 +859,10 @@ func (s *service) CloseIO(ctx context.Context, r *taskAPI.CloseIORequest) (_ *pt

// Checkpoint the container
func (s *service) Checkpoint(ctx context.Context, r *taskAPI.CheckpointTaskRequest) (_ *ptypes.Empty, err error) {
span, _ := trace(s.ctx, "Checkpoint")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Checkpoint")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand All @@ -842,8 +873,10 @@ func (s *service) Checkpoint(ctx context.Context, r *taskAPI.CheckpointTaskReque

// Connect returns shim information such as the shim's pid
func (s *service) Connect(ctx context.Context, r *taskAPI.ConnectRequest) (_ *taskAPI.ConnectResponse, err error) {
span, _ := trace(s.ctx, "Connect")
defer span.Finish()
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Connect")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand All @@ -860,7 +893,10 @@ func (s *service) Connect(ctx context.Context, r *taskAPI.ConnectRequest) (_ *ta
}

func (s *service) Shutdown(ctx context.Context, r *taskAPI.ShutdownRequest) (_ *ptypes.Empty, err error) {
span, _ := trace(s.ctx, "Shutdown")
if os.Getppid() == 1 {
span, _ := trace(s.ctx, "Shutdown")
defer span.Finish()
}

defer func() {
err = toGRPC(err)
Expand All @@ -873,7 +909,9 @@ func (s *service) Shutdown(ctx context.Context, r *taskAPI.ShutdownRequest) (_ *
}
s.mu.Unlock()

span.Finish()
//if os.Getppid() == 1 {
// span.Finish()
//}
katautils.StopTracing(s.ctx)

s.cancel()
Expand Down

0 comments on commit 2de728b

Please sign in to comment.