cas: add trace logs (#376)
diff --git a/go/pkg/cas/upload.go b/go/pkg/cas/upload.go
index 566144f..408bb4c 100644
--- a/go/pkg/cas/upload.go
+++ b/go/pkg/cas/upload.go
@@ -8,6 +8,7 @@
"os"
"path/filepath"
"regexp"
+ "runtime/trace"
"sort"
"strings"
"sync"
@@ -630,9 +631,15 @@
// It is a medium or large file.
+ tctx, task := trace.NewTask(ctx, "medium or large file")
+ defer task.End()
+ trace.Log(tctx, "file", info.Name())
+
// Compute the hash.
now := time.Now()
+ region := trace.StartRegion(tctx, "digest")
dig, err := digest.NewFromReader(f)
+ region.End()
if err != nil {
return nil, errors.Wrapf(err, "failed to compute hash")
}
@@ -663,7 +670,7 @@
item.Open = func() (uploadSource, error) {
return f, f.SeekStart(0)
}
- return ret, u.stream(ctx, item, true)
+ return ret, u.stream(tctx, item, true)
}
// Schedule a check and close the file (in defer).
@@ -980,6 +987,9 @@
}
defer u.semByteStreamWrite.Release(1)
+ ctx, task := trace.NewTask(ctx, "uploader.stream")
+ defer task.End()
+
log.Infof("start stream upload %s, size %d", item.Title, item.Digest.SizeBytes)
now := time.Now()
defer func() {
@@ -1078,7 +1088,9 @@
// Read the next chunk from the pipe.
// Use ReadFull to ensure we aren't sending tiny blobs over RPC.
+ region := trace.StartRegion(ctx, "ReadFull in streamFromReader")
n, err := io.ReadFull(r, *buf)
+ region.End()
switch {
case err == io.EOF || err == io.ErrUnexpectedEOF:
req.FinishWrite = true
@@ -1089,7 +1101,9 @@
// Send the chunk.
withTimeout(func() {
- err = stream.Send(req)
+ trace.WithRegion(ctx, "stream.Send", func() {
+ err = stream.Send(req)
+ })
})
switch {
case err == io.EOF: