Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

storage: RetryClientTest.HedgedReadRecordsMetricsOnGlobalMeterProvider leaking mock objects

已关闭 适合新手
#16,522 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@kalragauri 已经在做这个了。

开始于 2026年10月5日。

  • #16534 来自 @kalragauri —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
84/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
cpp
领域
testing

调研方向

从 google/cloud/storage/internal/connection_impl_test.cc 中报告的第 829、830、835 和 857 行附近的 mock 设置开始,重点关注 RetryClientTest.HedgedReadRecordsMetricsOnGlobalMeterProvider。使用随机化测试运行 //google/cloud/storage:internal_connection_impl_test,并确认其通过且未报告泄漏的 mock 对象。

由索引模型根据 Issue 内容生成。

描述

api: storage type: cleanup
Step #2 - "build.sh": FAIL: //google/cloud/storage:internal_connection_impl_test (Exit 1) (see /h/.cache/bazel/_bazel_root/eab0d61a99b6696edb3d2aff87b585e8/execroot/_main/bazel-out/k8-fastbuild/testlogs/google/cloud/storage/internal_connection_impl_test/test.log)
Step #2 - "build.sh": INFO: From Testing //google/cloud/storage:internal_connection_impl_test:
Step #2 - "build.sh": ==================== Test output for //google/cloud/storage:internal_connection_impl_test:
Step #2 - "build.sh": Running main() from gmock_main.cc
Step #2 - "build.sh": Note: Randomizing tests' orders with a seed of 46316 .
Step #2 - "build.sh": [==========] Running 28 tests from 1 test suite.
Step #2 - "build.sh": [----------] Global test environment set-up.
Step #2 - "build.sh": [----------] 28 tests from RetryClientTest
Step #2 - "build.sh": [ RUN      ] RetryClientTest.ReadObjectPositionsPlainRequest
Step #2 - "build.sh": [       OK ] RetryClientTest.ReadObjectPositionsPlainRequest (1 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkUploadChunkPolicyExhaustedOnStart
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkUploadChunkPolicyExhaustedOnStart (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkMissingRangeHeaderInUpload
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkMissingRangeHeaderInUpload (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkRestoreSession
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkRestoreSession (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadFinalChunkQueryTooManyMissingPayloads
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadFinalChunkQueryTooManyMissingPayloads (4 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.BackoffSpansUploadChunk
Step #2 - "build.sh": [       OK ] RetryClientTest.BackoffSpansUploadChunk (6 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkHandleRollback
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkHandleRollback (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkPermanentError
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkPermanentError (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.CreateResumableUploadHandlesTransient
Step #2 - "build.sh": [       OK ] RetryClientTest.CreateResumableUploadHandlesTransient (2 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadFinalChunkQueryMissingPayloadTriggersRetry
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadFinalChunkQueryMissingPayloadTriggersRetry (2 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.PermanentErrorHandling
Step #2 - "build.sh": [       OK ] RetryClientTest.PermanentErrorHandling (1 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.QueryResumableUploadHandlesTransient
Step #2 - "build.sh": [       OK ] RetryClientTest.QueryResumableUploadHandlesTransient (2 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.TooManyTransientsHandling
Step #2 - "build.sh": [       OK ] RetryClientTest.TooManyTransientsHandling (4 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkPermanentErrorOnQuery
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkPermanentErrorOnQuery (1 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkExhausted
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkExhausted (5 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.ReadObjectPinsGeneration
Step #2 - "build.sh": [       OK ] RetryClientTest.ReadObjectPinsGeneration (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.NonIdempotentErrorHandling
Step #2 - "build.sh": [       OK ] RetryClientTest.NonIdempotentErrorHandling (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.BackoffSpansSimple
Step #2 - "build.sh": [       OK ] RetryClientTest.BackoffSpansSimple (5 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.ReadObjectPositionsReadFromOffset
Step #2 - "build.sh": [       OK ] RetryClientTest.ReadObjectPositionsReadFromOffset (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkHandleOvercommit
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkHandleOvercommit (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.ReadObjectPositionsReadRange
Step #2 - "build.sh": [       OK ] RetryClientTest.ReadObjectPositionsReadRange (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkAbortedMaybeIsTransient
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkAbortedMaybeIsTransient (4 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkHandleTransient
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkHandleTransient (4 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkMissingRangeHeaderInQueryResumableUpload
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkMissingRangeHeaderInQueryResumableUpload (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.ExpiredRetryPolicy
Step #2 - "build.sh": [       OK ] RetryClientTest.ExpiredRetryPolicy (0 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.UploadChunkHandleTransientPartialFailures
Step #2 - "build.sh": [       OK ] RetryClientTest.UploadChunkHandleTransientPartialFailures (7 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.HedgedReadRecordsMetricsOnGlobalMeterProvider
Step #2 - "build.sh": [       OK ] RetryClientTest.HedgedReadRecordsMetricsOnGlobalMeterProvider (5 ms)
Step #2 - "build.sh": [ RUN      ] RetryClientTest.ReadObjectPositionsReadLast
Step #2 - "build.sh": [       OK ] RetryClientTest.ReadObjectPositionsReadLast (0 ms)
Step #2 - "build.sh": [----------] 28 tests from RetryClientTest (69 ms total)
Step #2 - "build.sh": 
Step #2 - "build.sh": [----------] Global test environment tear-down
Step #2 - "build.sh": [==========] 28 tests from 1 test suite ran. (69 ms total)
Step #2 - "build.sh": [  PASSED  ] 28 tests.
Step #2 - "build.sh": 
Step #2 - "build.sh": google/cloud/storage/internal/connection_impl_test.cc:835: ERROR: this mock object (used in test RetryClientTest.HedgedReadRecordsMetricsOnGlobalMeterProvider) should be deleted but never is. Its address is @0x133ef68.
Step #2 - "build.sh": google/cloud/storage/internal/connection_impl_test.cc:830: ERROR: this mock object (used in test RetryClientTest.HedgedReadRecordsMetricsOnGlobalMeterProvider) should be deleted but never is. Its address is @0x134c040.
Step #2 - "build.sh": google/cloud/storage/internal/connection_impl_test.cc:857: ERROR: this mock object (used in test RetryClientTest.HedgedReadRecordsMetricsOnGlobalMeterProvider) should be deleted but never is. Its address is @0x13631c0.
Step #2 - "build.sh": google/cloud/storage/internal/connection_impl_test.cc:829: ERROR: this mock object (used in test RetryClientTest.HedgedReadRecordsMetricsOnGlobalMeterProvider) should be deleted but never is. Its address is @0x1374120.
Step #2 - "build.sh": ERROR: 4 leaked mock objects found at program exit. Expectations on a mock object are verified when the object is destructed. Leaking a mock means that its expectations aren't verified, which is usually a test bug. If you really intend to leak a mock, you can suppress this error using testing::Mock::AllowLeak(mock_object), or you may use a fake or stub instead of a mock.
主要语言
C++
星标
659
派生
471
平均合并
1 天 10 小时
30 天内合并 PR
100

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

googleapis/google-cloud-cpp 的其他 Issue

查看 googleapis/google-cloud-cpp 的全部 Issue

相似的 Issue

更多 C++ Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。