pimutils / pimutils/vdirsyncer

DAV storage should chunk get_multi() and list() into new requests

Open
#687 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

cat: server compat lv: medium mod: DAV ready type: enhancement
Dominant language
Python
Stars
1.9k
Forks
185
Avg merge
11h 49m
Merged PRs (30d)
1

Description

get multi

Currently we create an arbitrarily sized multiget request. We should introduce a configurable limit that would make the DAV storage split up the multiget request into multiple smaller ones.

list

It's not clear how to split up this request, since we can't estimate the size from the clientside. This would likely require special support from the server (for e.g. pagination), which is not guaranteed at all. An option is to initially send the request like we do now, but catch HTTP statuses like 507. But again, how we would ask the server to only send a part of its collection listing is completely unclear.

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

Start by locating the DAV storage implementation and its get_multi() and list() entry points, then inspect how requests are currently assembled. Done should include a configurable limit that splits multiget requests and a clearly defined, supported approach for handling oversized collection listings.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Feature
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.