Skip to content

fix(activitylog): log missing parent id cache entry at debug level - #3325

Merged
rhafer merged 2 commits into
opencloud-eu:mainfrom
junkerderprovinz:issue-1043-log-level
Aug 19, 2026
Merged

rhafer merged 2 commits into
opencloud-eu:mainfrom
junkerderprovinz:issue-1043-log-level

Conversation

@junkerderprovinz

@junkerderprovinz junkerderprovinz commented Aug 17, 2026 •

Copy link
Copy Markdown

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:

Log message Location Fixable here?
could not delete parent id cache services/activitylog/pkg/service/service.go yes, fixed in this PR
failed to handle moved away item reva/pkg/storage/fs/posix/tree/assimilation.go no, vendored opencloud-eu/reva
could not remove lock file reva/pkg/storage/fs/posix/tree/tree.go no, vendored opencloud-eu/reva

This PR therefore changes the activitylog site only. The other two need a companion PR in opencloud-eu/reva followed by a dependency bump here. I am happy to open that reva PR as a follow-up if you would like.

ActivitylogService.removeCachedParentID calls ttlcache.Cache.Remove, which returns ErrNotFound ("key not found") when the key is not present. The parent id cache is filled lazily in addActivity and its entries expire, so on an ItemMoved event 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?

  • test environment: go1.26.4, CGO_ENABLED=0, package services/activitylog/pkg/service
  • test case 1: go test -count=1 ./services/activitylog/pkg/service/ passes
  • test case 2: three new Ginkgo specs added under Describe("removeCachedParentID"):
    • at the default error level, a missing cache entry produces no log output at all (this is the actual regression from the issue)
    • at debug level, the message is emitted with "level":"debug"
    • when the entry does exist, nothing is logged and the entry is removed
  • test case 3: verified the new specs genuinely guard the fix by temporarily reverting .Debug() back to .Error(), which fails 2 of the 3 specs as expected
  • test case 4: go vet ./services/activitylog/... and go build ./services/activitylog/... are clean (GOOS=linux)
  • test case 5: gofmt clean on both changed files

Screenshots (if appropriate):

n/a

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Technical debt
  • Tests only (no source changes)

Checklist:

  • Code changes
  • Unit tests added
  • Acceptance tests added
  • Documentation added

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

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
@codacy-production

codacy-production Bot commented Aug 17, 2026 •

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 duplication

Metric Results
Duplication 0

View in Codacy

🟢 Coverage 100.00% diff coverage

Metric Results
Coverage variation Report missing for 6077e741
Diff coverage ✅ 100.00% diff coverage

View coverage diff in Codacy

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 rhafer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

@junkerderprovinz

Copy link
Copy Markdown
Author

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.

@rhafer
rhafer merged commit 810ff86 into opencloud-eu:main Aug 19, 2026
61 of 62 checks passed
@openclouders openclouders mentioned this pull request Aug 19, 2026
renovate Bot added a commit to sdwilsh/ansible-playbooks that referenced this pull request Aug 29, 2026
##### [\`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)]
sdwilsh pushed a commit to sdwilsh/ansible-playbooks that referenced this pull request Aug 29, 2026
#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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Unknown cache errors

2 participants