MCPcopy
hub / github.com/kopia/kopia / getLogSessions

Function getLogSessions

cli/command_logs_session.go:68–137  ·  view source on GitHub ↗
(ctx context.Context, st blob.Reader)

Source from the content-addressed store, hash-verified

66}
67
68func getLogSessions(ctx context.Context, st blob.Reader) ([]*logSessionInfo, error) {
69 sessions := map[string]*logSessionInfo{}
70
71 var allSessions []*logSessionInfo
72
73 if err := st.ListBlobs(ctx, repodiag.LogBlobPrefix, func(bm blob.Metadata) error {
74 parts := strings.Split(string(bm.BlobID), "_")
75
76 //nolint:mnd
77 if len(parts) < 8 {
78 log(ctx).Errorf("invalid part count: %v skipping unrecognized log: %v", len(parts), bm.BlobID)
79 return nil
80 }
81
82 id := parts[2] + "_" + parts[3]
83
84 startTime, err := strconv.ParseInt(parts[4], 10, 64)
85 if err != nil {
86 log(ctx).Errorf("invalid start time - skipping unrecognized log: %v", bm.BlobID)
87
88 //nolint:nilerr
89 return nil
90 }
91
92 endTime, err := strconv.ParseInt(parts[5], 10, 64)
93 if err != nil {
94 log(ctx).Errorf("invalid end time - skipping unrecognized log: %v", bm.BlobID)
95
96 //nolint:nilerr
97 return nil
98 }
99
100 s := sessions[id]
101 if s == nil {
102 s = &logSessionInfo{
103 id: id,
104 }
105 sessions[id] = s
106 allSessions = append(allSessions, s)
107 }
108
109 if t := time.Unix(startTime, 0); s.startTime.IsZero() || t.Before(s.startTime) {
110 s.startTime = t
111 }
112
113 if t := time.Unix(endTime, 0); t.After(s.endTime) {
114 s.endTime = t
115 }
116
117 s.segments = append(s.segments, bm)
118 s.totalSize += bm.Length
119
120 return nil
121 }); err != nil {
122 return nil, errors.Wrap(err, "error listing logs")
123 }
124
125 for _, s := range allSessions {

Callers 2

runMethod · 0.85
runMethod · 0.85

Calls 4

ErrorfMethod · 0.80
AfterMethod · 0.80
ListBlobsMethod · 0.65
BeforeMethod · 0.45

Tested by

no test coverage detected