WHAT IS THE BUG
Object/metadata sync between P2P peers works correctly, but the actual file blocks for media (images and videos) are never transferred. Media cannot be opened on a device that has synced the objects but does not already hold the file bytes, even after a succesful p2p connection for a while, and after confirming that the connected peer holds the complete file and can play it locally. Opening the media triggers an endless load that ends in an internal “context canceled” error, and the player fails with FileNotFound. Enabling “download all files locally” does not pull the missing blocks either. Using local-only mode.
HOW TO REPRODUCE IT
-
Use local-only mode with 2 devices sharing one identity (in my case: Windows desktop, Android/Pixel), a space containing photos and videos.
-
Let objects sync to a fresh device (Pixel) — object sync completes and the media objects appear.
-
Put the device holding the full files (desktop) and the receiving device (Pixel) on the same local network. To remove the router as a variable, I hosted a hotspot on the Pixel and connected the desktop to it. Peer connection is confirmed (successful headsync in logs; internet reachable through the hotspot).
-
On the Pixel, open a video/image object and press play.
-
See the media fail to load. It briefly buffers, then errors out.
Log evidence (Pixel logcat, io.anytype.app) — trimmed to the relevant lines:
// Peer connected and OBJECT sync works fine:
common.commonspace.headsync msg:"sync done:" peerId:"12D3KooWEaVtX4Jqog..."
// FILE fetch fails — local gateway can't source the blocks:
anytype-gateway msg:"error getting image: get image reader: context canceled"
path:"/image/bafyreih5lbhtmsruvmy6udwwcdgiy3sq7oyxoq7btsaswvfe4fiouroetq"
MediaPlayer java.io.FileNotFoundException: No content provider:
http://127.0.0.1:47800/image/bafyreiffqqzjgjnrk5avouv6t2anhp347d6e3qh3lhjxijukox6jkfjvjq
THE EXPECTED BEHAVIOR
When a connected P2P peer holds the complete file, opening the media on another device should stream/download the file blocks from that peer and play successfully. With “download all files locally” enabled, all file blocks should be proactively replicated to the device, so media also opens offline. Object sync succeeding but file-block sync silently failing should not happen on a healthy, confirmed peer connection. I shouldn’t need to open objects actively to make sure they sync, as the automatic “download all files locally” option doesn’t work.
ADDITIONAL CONTEXT
-
Network causes are ruled out: the desktop plays the videos fully; the Fairphone was powered off during capture, so the desktop was the only possible source; capture was done over the Pixel’s own hotspot (no router/AP-isolation in the path); the PC reaches the internet through that hotspot; and object sync (headsync) succeeds with the peer. So data exists, the peer is reachable, and only bulk file transfer fails.
-
Several distinct files are affected (multiple different
bafyrei…CIDs in the log), so it is not single-file corruption. -
This appears related to existing reports of file sync stalling between peers while object sync works. Possibly: Any-sync: file contents are not synchronized or Local-only mode: images and media fail to load offline on android
TECHNICAL INFORMATION
Desktop (source device):
-
OS: Windows 10
-
Anytype version: OS version:
win32 x64 10.0.19045
App version:
0.55.5
Build number:
build on 2026-06-02 16:45:57 +0000 UTC at #5e888f1b9b8590575ea81da218e95c472daf0fdf
Library version:
v0.50.8
Mobile (receiving device, where the error was captured):
-
Device: Google Pixel 10
-
Device: Pixel 10 Google
Android version: 36
App version: 0.47.3
Build number: 4703
Library version: 0.50.8