remove 'errors' from count keys (#4813)

#### Does this PR need a docs update or release note?

- [x]  No

#### Type of change

- [x] 🐛 Bugfix
- [x] 🤖 Supportability/Tests

#### Test Plan

- [x]  Unit test
This commit is contained in:
Keepers 2023-12-08 12:45:39 -07:00 committed by GitHub
parent a66b500d90
commit 8af0e31e4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 40 additions and 25 deletions

View File

@ -217,7 +217,7 @@ func (cp *corsoProgress) Error(relpath string, err error, isIgnored bool) {
// delta query and a fetch. This is our next point of error // delta query and a fetch. This is our next point of error
// handling, where we can identify and skip over the case. // handling, where we can identify and skip over the case.
if clues.HasLabel(err, graph.LabelsSkippable) { if clues.HasLabel(err, graph.LabelsSkippable) {
cp.counter.Inc(count.PersistenceExpectedErrors) cp.counter.Inc(count.PersistenceExpectedErrs)
cp.incExpectedErrs() cp.incExpectedErrs()
return return

View File

@ -81,8 +81,8 @@ func manifestToStats(
progress.counter.Add(count.PersistedCachedFiles, int64(man.Stats.CachedFiles)) progress.counter.Add(count.PersistedCachedFiles, int64(man.Stats.CachedFiles))
progress.counter.Add(count.PersistedNonCachedFiles, int64(man.Stats.NonCachedFiles)) progress.counter.Add(count.PersistedNonCachedFiles, int64(man.Stats.NonCachedFiles))
progress.counter.Add(count.PersistedDirectories, int64(man.Stats.TotalDirectoryCount)) progress.counter.Add(count.PersistedDirectories, int64(man.Stats.TotalDirectoryCount))
progress.counter.Add(count.PersistenceErrors, int64(man.Stats.ErrorCount)) progress.counter.Add(count.PersistenceErrs, int64(man.Stats.ErrorCount))
progress.counter.Add(count.PersistenceIgnoredErrors, int64(man.Stats.IgnoredErrorCount)) progress.counter.Add(count.PersistenceIgnoredErrs, int64(man.Stats.IgnoredErrorCount))
return BackupStats{ return BackupStats{
SnapshotID: string(man.ID), SnapshotID: string(man.ID),

View File

@ -116,8 +116,8 @@ func BenchmarkHierarchyMerge(b *testing.B) {
assert.Zero(t, stats.IgnoredErrorCount) assert.Zero(t, stats.IgnoredErrorCount)
assert.Zero(t, stats.ErrorCount) assert.Zero(t, stats.ErrorCount)
assert.Zero(t, counter.Get(count.PersistenceIgnoredErrors)) assert.Zero(t, counter.Get(count.PersistenceIgnoredErrs))
assert.Zero(t, counter.Get(count.PersistenceErrors)) assert.Zero(t, counter.Get(count.PersistenceErrs))
assert.False(t, stats.Incomplete) assert.False(t, stats.Incomplete)
snap, err := snapshot.LoadSnapshot( snap, err := snapshot.LoadSnapshot(

View File

@ -952,9 +952,9 @@ func (suite *KopiaIntegrationSuite) TestBackupCollections() {
assert.Equal(t, 4+len(test.collections), stats.TotalDirectoryCount, "directory count") assert.Equal(t, 4+len(test.collections), stats.TotalDirectoryCount, "directory count")
assert.Equal(t, int64(4+len(test.collections)), counter.Get(count.PersistedDirectories), "directory count") assert.Equal(t, int64(4+len(test.collections)), counter.Get(count.PersistedDirectories), "directory count")
assert.Zero(t, stats.IgnoredErrorCount, "ignored errors") assert.Zero(t, stats.IgnoredErrorCount, "ignored errors")
assert.Zero(t, counter.Get(count.PersistenceIgnoredErrors), "ignored errors") assert.Zero(t, counter.Get(count.PersistenceIgnoredErrs), "ignored errors")
assert.Zero(t, stats.ErrorCount, "errors") assert.Zero(t, stats.ErrorCount, "errors")
assert.Zero(t, counter.Get(count.PersistenceErrors), "errors") assert.Zero(t, counter.Get(count.PersistenceErrs), "errors")
assert.False(t, stats.Incomplete) assert.False(t, stats.Incomplete)
test.hashedBytesCheck(t, stats.TotalHashedBytes, "hashed bytes") test.hashedBytesCheck(t, stats.TotalHashedBytes, "hashed bytes")
test.hashedBytesCheck(t, counter.Get(count.PersistedHashedBytes), "hashed bytes") test.hashedBytesCheck(t, counter.Get(count.PersistedHashedBytes), "hashed bytes")
@ -1272,9 +1272,9 @@ func (suite *KopiaIntegrationSuite) TestBackupCollections_NoDetailsForMeta() {
assert.Equal(t, 5, stats.TotalDirectoryCount, "uploaded directories") assert.Equal(t, 5, stats.TotalDirectoryCount, "uploaded directories")
assert.Equal(t, int64(5), counter.Get(count.PersistedDirectories), "uploaded directories") assert.Equal(t, int64(5), counter.Get(count.PersistedDirectories), "uploaded directories")
assert.Zero(t, stats.IgnoredErrorCount, "ignored errors") assert.Zero(t, stats.IgnoredErrorCount, "ignored errors")
assert.Zero(t, counter.Get(count.PersistenceIgnoredErrors), "ignored errors") assert.Zero(t, counter.Get(count.PersistenceIgnoredErrs), "ignored errors")
assert.Zero(t, stats.ErrorCount, "errors") assert.Zero(t, stats.ErrorCount, "errors")
assert.Zero(t, counter.Get(count.PersistenceErrors), "errors") assert.Zero(t, counter.Get(count.PersistenceErrs), "errors")
assert.False(t, stats.Incomplete) assert.False(t, stats.Incomplete)
// 47 file and 1 folder entries. // 47 file and 1 folder entries.
@ -1454,13 +1454,13 @@ func (suite *KopiaIntegrationSuite) TestBackupCollections_ReaderError() {
errs) errs)
require.Error(t, err, clues.ToCore(err)) require.Error(t, err, clues.ToCore(err))
assert.Zero(t, stats.ErrorCount, "error count") assert.Zero(t, stats.ErrorCount, "error count")
assert.Zero(t, counter.Get(count.PersistenceErrors), "error count") assert.Zero(t, counter.Get(count.PersistenceErrs), "error count")
assert.Equal(t, 5, stats.TotalFileCount, "total files") assert.Equal(t, 5, stats.TotalFileCount, "total files")
assert.Equal(t, int64(5), counter.Get(count.PersistedFiles), "total files") assert.Equal(t, int64(5), counter.Get(count.PersistedFiles), "total files")
assert.Equal(t, 6, stats.TotalDirectoryCount, "total directories") assert.Equal(t, 6, stats.TotalDirectoryCount, "total directories")
assert.Equal(t, int64(6), counter.Get(count.PersistedDirectories), "total directories") assert.Equal(t, int64(6), counter.Get(count.PersistedDirectories), "total directories")
assert.Zero(t, stats.IgnoredErrorCount, "ignored errors") assert.Zero(t, stats.IgnoredErrorCount, "ignored errors")
assert.Zero(t, counter.Get(count.PersistenceIgnoredErrors), "ignored errors") assert.Zero(t, counter.Get(count.PersistenceIgnoredErrs), "ignored errors")
assert.Equal(t, 1, len(errs.Errors().Recovered), "recovered errors") assert.Equal(t, 1, len(errs.Errors().Recovered), "recovered errors")
assert.False(t, stats.Incomplete, "incomplete") assert.False(t, stats.Incomplete, "incomplete")
// 5 file and 2 folder entries. // 5 file and 2 folder entries.
@ -1704,9 +1704,9 @@ func (suite *KopiaSimpleRepoIntegrationSuite) SetupTest() {
fault.New(true)) fault.New(true))
require.NoError(t, err, clues.ToCore(err)) require.NoError(t, err, clues.ToCore(err))
require.Zero(t, stats.ErrorCount) require.Zero(t, stats.ErrorCount)
require.Zero(t, counter.Get(count.PersistenceErrors)) require.Zero(t, counter.Get(count.PersistenceErrs))
require.Zero(t, stats.IgnoredErrorCount) require.Zero(t, stats.IgnoredErrorCount)
require.Zero(t, counter.Get(count.PersistenceIgnoredErrors)) require.Zero(t, counter.Get(count.PersistenceIgnoredErrs))
require.Equal(t, expectedFiles, stats.TotalFileCount) require.Equal(t, expectedFiles, stats.TotalFileCount)
require.Equal(t, int64(expectedFiles), counter.Get(count.PersistedFiles)) require.Equal(t, int64(expectedFiles), counter.Get(count.PersistedFiles))
require.Equal(t, expectedDirs, stats.TotalDirectoryCount) require.Equal(t, expectedDirs, stats.TotalDirectoryCount)

View File

@ -286,7 +286,7 @@ func (col *prefetchCollection) streamItems(
atomic.AddInt64(&success, 1) atomic.AddInt64(&success, 1)
logger.CtxErr(ctx, err).Info("item not found") logger.CtxErr(ctx, err).Info("item not found")
} else { } else {
col.Counter.Inc(count.StreamItemsErrored) col.Counter.Inc(count.StreamItemsErred)
el.AddRecoverable(ctx, clues.Wrap(err, "fetching item").Label(fault.LabelForceNoBackupCreation)) el.AddRecoverable(ctx, clues.Wrap(err, "fetching item").Label(fault.LabelForceNoBackupCreation))
} }
@ -298,7 +298,7 @@ func (col *prefetchCollection) streamItems(
id, id,
details.ItemInfo{Exchange: info}) details.ItemInfo{Exchange: info})
if err != nil { if err != nil {
col.Counter.Inc(count.StreamItemsErrored) col.Counter.Inc(count.StreamItemsErred)
el.AddRecoverable( el.AddRecoverable(
ctx, ctx,
clues.StackWC(ctx, err). clues.StackWC(ctx, err).

View File

@ -2,6 +2,16 @@ package count
type Key string type Key string
// ---------------------------------------------------------------------------
// General Rules:
// 1. Avoid the word "error", prefer "err". That minimizes log result
// contamination when using common filters like "logs with 'error'".
// 2. When some key (ex: Foo) can be counted with both an in-process
// count, and also an end-of-process count, and the two may not be
// equal, use Foo for the end of process count, and TotalFooProcessed
// for the in-process count.
// ---------------------------------------------------------------------------
const ( const (
// count of bucket-tokens consumed by api calls. // count of bucket-tokens consumed by api calls.
APICallTokensConsumed Key = "api-call-tokens-consumed" APICallTokensConsumed Key = "api-call-tokens-consumed"
@ -19,9 +29,9 @@ const (
PersistedNonMetaFiles Key = "persisted-non-meta-files" PersistedNonMetaFiles Key = "persisted-non-meta-files"
PersistedNonMetaUploadedBytes Key = "persisted-non-meta-uploaded-bytes" PersistedNonMetaUploadedBytes Key = "persisted-non-meta-uploaded-bytes"
PersistedUploadedBytes Key = "persisted-uploaded-bytes" PersistedUploadedBytes Key = "persisted-uploaded-bytes"
PersistenceErrors Key = "persistence-errors" PersistenceErrs Key = "persistence-errs"
PersistenceExpectedErrors Key = "persistence-expected-errors" PersistenceExpectedErrs Key = "persistence-expected-errs"
PersistenceIgnoredErrors Key = "persistence-ignored-errors" PersistenceIgnoredErrs Key = "persistence-ignored-errs"
) )
// backup amounts reported by data providers // backup amounts reported by data providers
@ -60,7 +70,7 @@ const (
StreamDirsFound Key = "stream-dirs-found" StreamDirsFound Key = "stream-dirs-found"
StreamItemsAdded Key = "stream-items-added" StreamItemsAdded Key = "stream-items-added"
StreamItemsDeletedInFlight Key = "stream-items-deleted-in-flight" StreamItemsDeletedInFlight Key = "stream-items-deleted-in-flight"
StreamItemsErrored Key = "stream-items-errored" StreamItemsErred Key = "stream-items-erred"
StreamItemsFound Key = "stream-items-found" StreamItemsFound Key = "stream-items-found"
StreamItemsRemoved Key = "stream-items-removed" StreamItemsRemoved Key = "stream-items-removed"
TotalContainersSkipped Key = "total-containers-skipped" TotalContainersSkipped Key = "total-containers-skipped"

View File

@ -470,14 +470,18 @@ func SetWithSettings(
return context.WithValue(ctx, ctxKey, logger) return context.WithValue(ctx, ctxKey, logger)
} }
// Ctx retrieves the logger embedded in the context. func ctxNoClues(ctx context.Context) *zap.SugaredLogger {
func Ctx(ctx context.Context) *zap.SugaredLogger {
l := ctx.Value(ctxKey) l := ctx.Value(ctxKey)
if l == nil { if l == nil {
l = singleton(Settings{}.EnsureDefaults()) l = singleton(Settings{}.EnsureDefaults())
} }
return l.(*zap.SugaredLogger).With(clues.In(ctx).Slice()...) return l.(*zap.SugaredLogger)
}
// Ctx retrieves the logger embedded in the context.
func Ctx(ctx context.Context) *zap.SugaredLogger {
return ctxNoClues(ctx).With(clues.In(ctx).Slice()...)
} }
// CtxStack retrieves the logger embedded in the context, and adds the // CtxStack retrieves the logger embedded in the context, and adds the
@ -491,8 +495,9 @@ func CtxStack(ctx context.Context, skip int) *zap.SugaredLogger {
// CtxErr retrieves the logger embedded in the context // CtxErr retrieves the logger embedded in the context
// and packs all of the structured data in the error inside it. // and packs all of the structured data in the error inside it.
func CtxErr(ctx context.Context, err error) *zap.SugaredLogger { func CtxErr(ctx context.Context, err error) *zap.SugaredLogger {
// TODO(keepers): only log the err values, not the ctx. // don't add the ctx clues or else values will duplicate between
return Ctx(ctx). // the err clues and ctx clues.
return ctxNoClues(ctx).
With( With(
"error", err, "error", err,
"error_labels", clues.Labels(err)). "error_labels", clues.Labels(err)).
@ -504,7 +509,7 @@ func CtxErr(ctx context.Context, err error) *zap.SugaredLogger {
// If skip is non-zero, it skips the stack calls starting from the // If skip is non-zero, it skips the stack calls starting from the
// first. Skip always adds +1 to account for this wrapper. // first. Skip always adds +1 to account for this wrapper.
func CtxErrStack(ctx context.Context, err error, skip int) *zap.SugaredLogger { func CtxErrStack(ctx context.Context, err error, skip int) *zap.SugaredLogger {
return Ctx(ctx). return ctxNoClues(ctx).
With( With(
"error", err, "error", err,
"error_labels", clues.Labels(err)). "error_labels", clues.Labels(err)).