nextcloud / nextcloud/activity

performance considerations - many shares write of activites

Open
#590 5 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Performance 🚀
Dominant language
JavaScript
Stars
145
Forks
72
Avg merge
6d 9h
Merged PRs (30d)
42

Description

Steps to reproduce
  1. create a group "test" with ~100 users (use a slower setup like hdd-database / ~16 users starting already to get recognisable for e.g. creating a comment in a deck-card)
  2. share a entity like a "folder" or a "deck board" with this group
  3. every save action in the frontend on this enties are now delayed and the frontend is not efficiently usable.
Actual behaviour

For me it seems that on every save action 100 entries needs to get calculated and written to the activity table.
It seems that this is happening blocking on the frontend calls and not done afterwards/in the background.

Expected behaviour

Could this be done afterwards by let the frontend call finishing fast and store only one entry there which then get populated by a follow up non-blocking ghost process? could the maybe existing redis be used as a queue?

To keep that in perspective, our activity table has some million entries and it is blazing fast in showing/selecting the activities.
We only have this issue for the writes and only if we have many activites on a specific operation (cause of many shares).

We are wondering if we are the first who have/had this issue.
We are really open for tipps (without disable the app or make smaller shares)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No implementation files or tests are named. Start by tracing the save path that writes activity rows and reproduce it with a roughly 100-user group; done means frontend saves no longer wait on hundreds of activity writes while the resulting activity data remains available.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
backend, database, performance
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.