Skip to content

[BUG]Android WebDAV sync fails: mutation fence response exceeds 4096 byte download limit #1126

Description

@Toxican

Android WebDAV sync fails: mutation fence response exceeds 4096 byte download limit

If this is mainly a sync/data integrity problem, please use the Sync / Data Issue template for faster triage.

💻 Platform

  • Desktop (Linux - Arch/Hyprland/Niri/Other)
  • Desktop (macOS)
  • Desktop (Windows)
  • Mobile (Android)
  • Mobile (iOS)

🧭 Affected Area

  • Sync / data consistency
  • UI / interaction
  • Projects / areas / sections
  • Search / filter
  • Settings / preferences
  • Notifications / reminders
  • Recurrence / calendar
  • Attachments
  • Audio / transcription
  • Other

ℹ️ Environment

  • App Version: v1.2.5 (Desktop and Android)
  • Install Channel: Android: Play Store
  • OS Version: Android 16; Desktop: Arch Linux
  • Device: Android phone
  • Sync Backend: WebDAV
  • WebDAV Provider: mailbox.org (Open-Xchange WebDAV)

🚨 Impact

  • Blocks core workflow
  • Data loss or data mismatch
  • Crash / freeze
  • Visual issue only

📝 Description

WebDAV sync works correctly with Mindwtr Desktop v1.2.5, but fails on Android v1.2.5 when using the same WebDAV server and remote data.json.

The WebDAV connection test on Android succeeds, but attempting an actual sync fails immediately. The Android app continues to show "Never synced".

Debug logging reports:

Remote sync mutation fence acquisition failed: Response exceeds the 4096 byte download limit

The remote data.json is currently 20,860 bytes.

The WebDAV server itself appears to behave correctly. A normal GET returns the complete file with HTTP 200, and a manually tested 4096-byte HTTP Range request returns exactly 4096 bytes with HTTP 206.

🔄 Steps to Reproduce (REQUIRED)

  1. Configure a mailbox.org WebDAV directory as the sync backend in Mindwtr Desktop v1.2.5.
  2. Sync successfully from Desktop, creating/updating data.json on the WebDAV server.
  3. Configure the same WebDAV directory and credentials in Mindwtr Android v1.2.5.
  4. Test the WebDAV connection on Android. The connection test succeeds.
  5. Start Sync on Android.
  6. Sync fails and the app remains at "Never synced".
  7. Enable debug logging and repeat the sync.
  8. The log reports:
Remote sync mutation fence acquisition failed: Response exceeds the 4096 byte download limit

The same problem also occurs when using a dedicated WebDAV subdirectory containing only the Mindwtr sync data.

🎯 Expected Behavior

Mindwtr Android should successfully synchronize the same WebDAV data.json that Mindwtr Desktop v1.2.5 can synchronize.

A remote data.json larger than 4096 bytes should not cause mutation fence acquisition to fail.

🧪 Regression?

  • This worked in a previous version
  • Last known working version (if known): Unknown

📸 Screenshots / Logs

Relevant Android debug log:

{"ts":"2026-09-01T06:39:45.125Z","level":"info","scope":"sync","message":"Sync start","context":{"backend":"webdav"}}
{"ts":"2026-09-01T06:39:45.125Z","level":"info","scope":"sync","message":"Sync diagnostic start","context":{"backend":"webdav"}}
{"ts":"2026-09-01T06:39:45.126Z","level":"info","scope":"sync","message":"Sync step","context":{"step":"flush","sinceLastStepMs":"0"}}
{"ts":"2026-09-01T06:39:45.126Z","level":"info","scope":"sync","message":"Sync step","context":{"step":"setup","sinceLastStepMs":"0"}}
{"ts":"2026-09-01T06:39:45.131Z","level":"info","scope":"sync","message":"Sync step","context":{"step":"read-local","sinceLastStepMs":"5"}}
{"ts":"2026-09-01T06:39:45.149Z","level":"info","scope":"sync","message":"Sync local reconcile","context":{"reconcile":"aligned-skip","durationMs":"1","tasks":"9"}}
{"ts":"2026-09-01T06:39:45.152Z","level":"info","scope":"sync","message":"Sync step","context":{"step":"read-remote","sinceLastStepMs":"21"}}
{"ts":"2026-09-01T06:39:45.296Z","level":"warn","scope":"sync","message":"Sync failed","context":{"error":"Remote sync mutation fence acquisition failed: Response exceeds the 4096 byte download limit"}}

WebDAV GET test

A normal GET of the remote data.json returns:

HTTP/2 200
x-powered-by: Open-Xchange
content-disposition: attachment
etag: "9965763-46-2-1788242672016"
accept-ranges: bytes
content-type: application/json
content-length: 20860

Downloaded file size:

20860 /tmp/get-data.json

HTTP Range test

I also tested a 4096-byte Range request against the same resource:

Range: bytes=0-4095

The WebDAV server responds:

HTTP/2 206
etag: "9965763-46-2-1788242672016"
accept-ranges: bytes
content-type: application/json
content-length: 4096

The resulting response body is exactly 4096 bytes:

4096 /tmp/range-data.bin

A WebDAV PROPFIND also succeeds with HTTP 207 Multi-Status, reports the correct data.json size and provides an ETag.

Mindwtr Desktop v1.2.5 successfully syncs against this same WebDAV endpoint.

This suggests that the Android WebDAV mutation-fence code may be applying the 4096-byte response limit to the remote data resource, or otherwise attempting to read more than the allowed mutation-fence response size.

  1. Toggle Debug logging to ON.
  2. Reproduce the issue.
  3. Tap Share log to export the file and attach it here.

Note: Logs are local-only and redact common credentials.

📋 Additional Context

Add any other context about the problem here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:syncSync engine and conflict resolutionbugSomething isn't workingplatform:androidAndroid-specificplatform:desktopDesktop app scopestatus:needs-confirmationFix landed; awaiting reporter or release confirmation

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions