Repository navigation
fix(activitylog): log missing parent id cache entry at debug level - #3325
Conversation
Moving a file logged "could not delete parent id cache" at error level even though the operation succeeded. The parent id cache is populated lazily and its entries expire, so removing a key that was never cached returns "key not found", which is the expected case rather than an error. Log it at debug level instead. Two of the three log sites reported in the issue live in the vendored opencloud-eu/reva module and need a separate fix there. Fixes: opencloud-eu#1043
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Duplication | 0 |
🟢 Coverage 100.00% diff coverage
Metric Results Coverage variation Report missing for 6077e741 Diff coverage ✅ 100.00% diff coverage Coverage variation details
Coverable lines Covered lines Coverage Common ancestor commit (6077e74) Report Missing Report Missing Report Missing Head commit (56fbed9) 84102 19355 23.01% Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch:
<coverage of head commit> - <coverage of common ancestor commit>Diff coverage details
Coverable lines Covered lines Diff coverage Pull request (#3325) 1 1 100.00% Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified:
<covered lines added or modified>/<coverable lines added or modified> * 100%1 Codacy didn't receive coverage data for the commit, or there was an error processing the received data. Check your integration for errors and validate that your coverage setup is correct.
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
rhafer
left a comment
There was a problem hiding this comment.
Looks fine codewise. Just remove the the changelog item please, before we can merge.
Also you might want to read up on https://github.com/opencloud-eu/.github/blob/main/profile/AI_GUIDELINE.md
There was a problem hiding this comment.
Please remove this, we've switched away from calens for changelog generation last year already. The changelog directory is just a leftover (will be removed by #3339)
|
Done, the changelog fragment is removed and pushed. Thanks for the pointer to the AI guideline too, I hadn't seen it before, I've added an Assisted-by line to the PR description to match it. |
##### [\`7.5.0\`](https://github.com/opencloud-eu/opencloud/blob/HEAD/CHANGELOG.md#750---2026-08-25) ##### ❤️ Thanks to all contributors! ❤️ [@AlexAndBear](https://github.com/AlexAndBear), [@JammingBen](https://github.com/JammingBen), [@Svanvith](https://github.com/Svanvith), [@aduffeck](https://github.com/aduffeck), [@butonic](https://github.com/butonic), [@fschade](https://github.com/fschade), [@junkerderprovinz](https://github.com/junkerderprovinz), [@kulmann](https://github.com/kulmann), [@maki5](https://github.com/maki5), [@pbleser-oc](https://github.com/pbleser-oc), [@rhafer](https://github.com/rhafer), [@saw-jan](https://github.com/saw-jan), [@schweigisito](https://github.com/schweigisito), [@v-scharf](https://github.com/v-scharf) ##### ✅ Tests - test(api): update php test dependencies \[[#3335](opencloud-eu/opencloud#3335)] - fix(acceptance): fix running acceptance tests against host on Linux \[[#3358](opencloud-eu/opencloud#3358)] - fix(graph): adding the same user as multiple members in a group ([#3354](opencloud-eu/opencloud#3354)) \[[#3356](opencloud-eu/opencloud#3356)] - test(api): fix share role update test scenario \[[#3322](opencloud-eu/opencloud#3322)] - test: add api tests for cross-space search index mutation \[[#3320](opencloud-eu/opencloud#3320)] - ci: run search acceptance tests against OpenSearch in nightly \[[#3302](opencloud-eu/opencloud#3302)] - api-test: notification settings and getting email notifications \[[#3281](opencloud-eu/opencloud#3281)] - api-test: add posixfs scan and consistency CLI tests \[[#3263](opencloud-eu/opencloud#3263)] - api-test: replace sleeps with WaitHelper poll for async state \[[#3239](opencloud-eu/opencloud#3239)] ##### 📈 Enhancement - feat(thumbnails): extend list of default resolutions \[[#3386](opencloud-eu/opencloud#3386)] - ability to disable grpc and/or event consumer for event history service \[[#3279](opencloud-eu/opencloud#3279)] - feat(graph): add LibreGraphContentType on drive \[[#3355](opencloud-eu/opencloud#3355)] - feat: update space template image \[[#3324](opencloud-eu/opencloud#3324)] - feat(web): add rclone-crypt to default apps \[[#3313](opencloud-eu/opencloud#3313)] - enhance: send events for adding/removing favourite items \[[#3229](opencloud-eu/opencloud#3229)] - allow tuning the proxies http client \[[#3278](opencloud-eu/opencloud#3278)] - feat(web): add yjsServerUrl config \[[#3259](opencloud-eu/opencloud#3259)] - feat(posixfs): [#3182](opencloud-eu/opencloud#3182) add basepath option in the "posixfs scan" command \[[#3235](opencloud-eu/opencloud#3235)] ##### 🐛 Bug Fixes - fix(search): refresh the opensearch index after a write \[[#3388](opencloud-eu/opencloud#3388)] - fix(thumbnails): respect the requested height in libvips builds \[[#3377](opencloud-eu/opencloud#3377)] - refactor datagateway into proxy middleware \[[#3289](opencloud-eu/opencloud#3289)] - Only log a debug message when an item is still in processing state \[[#3158](opencloud-eu/opencloud#3158)] - fix(postprocessing): retry publishing events instead of killing the server \[[#3347](opencloud-eu/opencloud#3347)] - actually log error on exit \[[#3344](opencloud-eu/opencloud#3344)] - fix(activitylog): log missing parent id cache entry at debug level \[[#3325](opencloud-eu/opencloud#3325)] - fix restore file version for shared resource \[[#3268](opencloud-eu/opencloud#3268)] - Fix missing favorite flag on opensearch hits \[[#3252](opencloud-eu/opencloud#3252)] ##### 📚 Documentation - docs: clarify custom role bootstrap behavior \[[#3366](opencloud-eu/opencloud#3366)] ##### 📦️ Dependencies - \[full-ci] chore: bump web to v7.4.0 \[[#3399](opencloud-eu/opencloud#3399)] - build(deps): bump google.golang.org/grpc from 1.83.0 to 1.83.1 \[[#3396](opencloud-eu/opencloud#3396)] - build(deps): bump github.com/stretchr/testify from 1.12.0 to 1.12.1 \[[#3395](opencloud-eu/opencloud#3395)] - build(deps): bump github.com/go-chi/chi/v5 from 5.3.1 to 5.3.2 \[[#3394](opencloud-eu/opencloud#3394)] - build(deps): bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.29.0 to 2.30.0 \[[#3380](opencloud-eu/opencloud#3380)] - build(deps): bump golang.org/x/image from 0.44.0 to 0.45.0 \[[#3381](opencloud-eu/opencloud#3381)] - build(deps): bump github.com/beevik/etree from 1.7.0 to 1.7.1 \[[#3382](opencloud-eu/opencloud#3382)] - build(deps): bump github.com/nats-io/nats-server/v2 from 2.14.4 to 2.14.5 \[[#3357](opencloud-eu/opencloud#3357)] - build(deps): bump go.opentelemetry.io/contrib/zpages from 0.69.0 to 0.70.0 \[[#3360](opencloud-eu/opencloud#3360)] - build(deps): bump github.com/sirupsen/logrus from 1.9.4 to 1.10.0 \[[#3359](opencloud-eu/opencloud#3359)] - chore: bump reva to latest main \[[#3329](opencloud-eu/opencloud#3329)] - build(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.0 \[[#3341](opencloud-eu/opencloud#3341)] - build(deps): bump golang.org/x/net from 0.57.0 to 0.58.0 \[[#3342](opencloud-eu/opencloud#3342)] - build(deps): bump github.com/onsi/ginkgo/v2 from 2.32.0 to 2.32.1 \[[#3340](opencloud-eu/opencloud#3340)] - build(deps): bump github.com/testcontainers/testcontainers-go/modules/opensearch from 0.43.0 to 0.44.0 \[[#3303](opencloud-eu/opencloud#3303)] - build(deps): bump github.com/opencloud-eu/libre-graph-api-go \[[#3326](opencloud-eu/opencloud#3326)] - build(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace from 1.44.0 to 1.45.0 \[[#3306](opencloud-eu/opencloud#3306)] - build(deps): bump go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp from 0.69.0 to 0.70.0 \[[#3305](opencloud-eu/opencloud#3305)] - build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.44.0 to 1.45.0 \[[#3280](opencloud-eu/opencloud#3280)] - build(deps): bump github.com/rogpeppe/go-internal from 1.15.0 to 1.16.0 \[[#3250](opencloud-eu/opencloud#3250)] - build(deps): bump github.com/kovidgoyal/imaging from 1.8.22 to 1.8.23 \[[#3135](opencloud-eu/opencloud#3135)] - build(deps): bump go.opentelemetry.io/otel/trace from 1.44.0 to 1.45.0 \[[#3266](opencloud-eu/opencloud#3266)]
#1842) ##### [\`7.5.0\`](https://github.com/opencloud-eu/opencloud/blob/HEAD/CHANGELOG.md#750---2026-08-25) ##### ❤️ Thanks to all contributors! ❤️ [@AlexAndBear](https://github.com/AlexAndBear), [@JammingBen](https://github.com/JammingBen), [@Svanvith](https://github.com/Svanvith), [@aduffeck](https://github.com/aduffeck), [@butonic](https://github.com/butonic), [@fschade](https://github.com/fschade), [@junkerderprovinz](https://github.com/junkerderprovinz), [@kulmann](https://github.com/kulmann), [@maki5](https://github.com/maki5), [@pbleser-oc](https://github.com/pbleser-oc), [@rhafer](https://github.com/rhafer), [@saw-jan](https://github.com/saw-jan), [@schweigisito](https://github.com/schweigisito), [@v-scharf](https://github.com/v-scharf) ##### ✅ Tests - test(api): update php test dependencies \[[#3335](opencloud-eu/opencloud#3335)] - fix(acceptance): fix running acceptance tests against host on Linux \[[#3358](opencloud-eu/opencloud#3358)] - fix(graph): adding the same user as multiple members in a group ([#3354](opencloud-eu/opencloud#3354)) \[[#3356](opencloud-eu/opencloud#3356)] - test(api): fix share role update test scenario \[[#3322](opencloud-eu/opencloud#3322)] - test: add api tests for cross-space search index mutation \[[#3320](opencloud-eu/opencloud#3320)] - ci: run search acceptance tests against OpenSearch in nightly \[[#3302](opencloud-eu/opencloud#3302)] - api-test: notification settings and getting email notifications \[[#3281](opencloud-eu/opencloud#3281)] - api-test: add posixfs scan and consistency CLI tests \[[#3263](opencloud-eu/opencloud#3263)] - api-test: replace sleeps with WaitHelper poll for async state \[[#3239](opencloud-eu/opencloud#3239)] ##### 📈 Enhancement - feat(thumbnails): extend list of default resolutions \[[#3386](opencloud-eu/opencloud#3386)] - ability to disable grpc and/or event consumer for event history service \[[#3279](opencloud-eu/opencloud#3279)] - feat(graph): add LibreGraphContentType on drive \[[#3355](opencloud-eu/opencloud#3355)] - feat: update space template image \[[#3324](opencloud-eu/opencloud#3324)] - feat(web): add rclone-crypt to default apps \[[#3313](opencloud-eu/opencloud#3313)] - enhance: send events for adding/removing favourite items \[[#3229](opencloud-eu/opencloud#3229)] - allow tuning the proxies http client \[[#3278](opencloud-eu/opencloud#3278)] - feat(web): add yjsServerUrl config \[[#3259](opencloud-eu/opencloud#3259)] - feat(posixfs): [#3182](opencloud-eu/opencloud#3182) add basepath option in the "posixfs scan" command \[[#3235](opencloud-eu/opencloud#3235)] ##### 🐛 Bug Fixes - fix(search): refresh the opensearch index after a write \[[#3388](opencloud-eu/opencloud#3388)] - fix(thumbnails): respect the requested height in libvips builds \[[#3377](opencloud-eu/opencloud#3377)] - refactor datagateway into proxy middleware \[[#3289](opencloud-eu/opencloud#3289)] - Only log a debug message when an item is still in processing state \[[#3158](opencloud-eu/opencloud#3158)] - fix(postprocessing): retry publishing events instead of killing the server \[[#3347](opencloud-eu/opencloud#3347)] - actually log error on exit \[[#3344](opencloud-eu/opencloud#3344)] - fix(activitylog): log missing parent id cache entry at debug level \[[#3325](opencloud-eu/opencloud#3325)] - fix restore file version for shared resource \[[#3268](opencloud-eu/opencloud#3268)] - Fix missing favorite flag on opensearch hits \[[#3252](opencloud-eu/opencloud#3252)] ##### 📚 Documentation - docs: clarify custom role bootstrap behavior \[[#3366](opencloud-eu/opencloud#3366)] ##### 📦️ Dependencies - \[full-ci] chore: bump web to v7.4.0 \[[#3399](opencloud-eu/opencloud#3399)] - build(deps): bump google.golang.org/grpc from 1.83.0 to 1.83.1 \[[#3396](opencloud-eu/opencloud#3396)] - build(deps): bump github.com/stretchr/testify from 1.12.0 to 1.12.1 \[[#3395](opencloud-eu/opencloud#3395)] - build(deps): bump github.com/go-chi/chi/v5 from 5.3.1 to 5.3.2 \[[#3394](opencloud-eu/opencloud#3394)] - build(deps): bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.29.0 to 2.30.0 \[[#3380](opencloud-eu/opencloud#3380)] - build(deps): bump golang.org/x/image from 0.44.0 to 0.45.0 \[[#3381](opencloud-eu/opencloud#3381)] - build(deps): bump github.com/beevik/etree from 1.7.0 to 1.7.1 \[[#3382](opencloud-eu/opencloud#3382)] - build(deps): bump github.com/nats-io/nats-server/v2 from 2.14.4 to 2.14.5 \[[#3357](opencloud-eu/opencloud#3357)] - build(deps): bump go.opentelemetry.io/contrib/zpages from 0.69.0 to 0.70.0 \[[#3360](opencloud-eu/opencloud#3360)] - build(deps): bump github.com/sirupsen/logrus from 1.9.4 to 1.10.0 \[[#3359](opencloud-eu/opencloud#3359)] - chore: bump reva to latest main \[[#3329](opencloud-eu/opencloud#3329)] - build(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.0 \[[#3341](opencloud-eu/opencloud#3341)] - build(deps): bump golang.org/x/net from 0.57.0 to 0.58.0 \[[#3342](opencloud-eu/opencloud#3342)] - build(deps): bump github.com/onsi/ginkgo/v2 from 2.32.0 to 2.32.1 \[[#3340](opencloud-eu/opencloud#3340)] - build(deps): bump github.com/testcontainers/testcontainers-go/modules/opensearch from 0.43.0 to 0.44.0 \[[#3303](opencloud-eu/opencloud#3303)] - build(deps): bump github.com/opencloud-eu/libre-graph-api-go \[[#3326](opencloud-eu/opencloud#3326)] - build(deps): bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace from 1.44.0 to 1.45.0 \[[#3306](opencloud-eu/opencloud#3306)] - build(deps): bump go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp from 0.69.0 to 0.70.0 \[[#3305](opencloud-eu/opencloud#3305)] - build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.44.0 to 1.45.0 \[[#3280](opencloud-eu/opencloud#3280)] - build(deps): bump github.com/rogpeppe/go-internal from 1.15.0 to 1.16.0 \[[#3250](opencloud-eu/opencloud#3250)] - build(deps): bump github.com/kovidgoyal/imaging from 1.8.22 to 1.8.23 \[[#3135](opencloud-eu/opencloud#3135)] - build(deps): bump go.opentelemetry.io/otel/trace from 1.44.0 to 1.45.0 \[[#3266](opencloud-eu/opencloud#3266)] Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Description
Issue #1043 reports three ERROR log lines that appear during perfectly normal file moves and deletes. @butonic already diagnosed all three as expected conditions that are simply logged at the wrong level.
Only one of the three sites lives in this repository:
could not delete parent id cacheservices/activitylog/pkg/service/service.gofailed to handle moved away itemreva/pkg/storage/fs/posix/tree/assimilation.goopencloud-eu/revacould not remove lock filereva/pkg/storage/fs/posix/tree/tree.goopencloud-eu/revaThis PR therefore changes the activitylog site only. The other two need a companion PR in
opencloud-eu/revafollowed by a dependency bump here. I am happy to open that reva PR as a follow-up if you would like.ActivitylogService.removeCachedParentIDcallsttlcache.Cache.Remove, which returnsErrNotFound("key not found") when the key is not present. The parent id cache is filled lazily inaddActivityand its entries expire, so on anItemMovedevent the key is very often simply not there. That is the normal case, not a failure, so it is now logged at debug level.A short comment was added at the call site so the reason for the debug level is not lost.
Related Issue
Small note on process: @robin-thoene mentioned in the issue that they wanted to pick this up and asked exactly the right two clarifying questions, which turned out to be correct on both counts. As the questions had not been answered and there was no visible activity since, I went ahead and prepared this change. Happy to hand it over or close this if they would still prefer to do it.
Motivation and Context
Users running an otherwise healthy instance see ERROR entries in their logs for successful operations, which is alarming and hard to distinguish from real problems. The reporter in #1043 specifically opened the issue because they thought something was broken.
How Has This Been Tested?
CGO_ENABLED=0, packageservices/activitylog/pkg/servicego test -count=1 ./services/activitylog/pkg/service/passesDescribe("removeCachedParentID"):errorlevel, a missing cache entry produces no log output at all (this is the actual regression from the issue)debuglevel, the message is emitted with"level":"debug".Debug()back to.Error(), which fails 2 of the 3 specs as expectedgo vet ./services/activitylog/...andgo build ./services/activitylog/...are clean (GOOS=linux)gofmtclean on both changed filesScreenshots (if appropriate):
n/a
Types of changes
Checklist:
AI assistance: Claude Code helped with investigation and implementation of this fix. I reviewed, tested, and take full responsibility for the change.
Assisted-by: Claude Code:claude-opus-5