Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Partner Not Seeing All Shared Media On iOS #14293

Open
1 of 3 tasks
coltenkrauter opened this issue Nov 22, 2024 · 7 comments
Open
1 of 3 tasks

Partner Not Seeing All Shared Media On iOS #14293

coltenkrauter opened this issue Nov 22, 2024 · 7 comments

Comments

@coltenkrauter
Copy link

The bug

Context

My wife and I have accounts on our local immich instance and we both have the option to Show in timeline enabled to see each other's photos.

On web, when either of us sign in, we both see the expected timeline, going back to 2012.

Problem

On iOS, I see the expected timeline, but my wife can only see timeline content for this year. Oddly, her iOS experience is different from her web experience. Web works, iOS is missing many years of photos.


Image 1

The OS that Immich Server is running on

Debian GNU/Linux 12 (bookworm) – TrueNas Scale Electric Eel > Dockge > Compose Stack

Version of Immich Server

v1.121.0

Version of Immich Mobile App

v1.121.0

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

version: "3.8"
services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false
      # environment:
      # - IMMICH_LOG_LEVEL=verbose
      # - IMMICH_TRUSTED_PROXIES=127.0.0.1,172.17.0.0/16 # Trust localhost and Docker
    labels:
      - traefik.enable=true
      - traefik.http.routers.immich-server.rule=Host(`immich.******.com`)
      - traefik.http.routers.immich-server.entrypoints=websecure
      - traefik.http.routers.immich-server.tls.certresolver=letsencrypt
      - traefik.http.services.immich-server.loadbalancer.server.port=2283
      - traefik.docker.network=traefik_proxy
    networks:
      - traefik_proxy
      - immich_network
  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always
    healthcheck:
      disable: false
    networks:
      - immich_network
  redis:
    container_name: immich_redis
    image: docker.io/redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always
    networks:
      - immich_network
  database:
    container_name: immich_postgres
    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: --data-checksums
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    healthcheck:
      test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' ||
        exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}'
        --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT
        COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo
        "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
      interval: 5m
      start_interval: 30s
      start_period: 5m
    command:
      - postgres
      - -c
      - shared_preload_libraries=vectors.so
      - -c
      - search_path="$$user", public, vectors
      - -c
      - logging_collector=on
      - -c
      - max_wal_size=2GB
      - -c
      - shared_buffers=512MB
      - -c
      - wal_compression=on
    restart: always
    networks:
      - immich_network
volumes:
  model-cache: null
networks:
  immich_network:
    driver: bridge
  traefik_proxy:
    external: true

Your .env content

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/******/Applications/Immich/library
# The location where your database files are stored
DB_DATA_LOCATION=/mnt/******/Applications/Immich/postgres

# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
# IMMICH_VERSION=release
IMMICH_VERSION=v1.121.0

# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD='***************'

# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Reproduction steps

🤷🏻

Upload photos to immich and share with partner and have partner access on iOS.

Relevant log output

ApiException 400: HTTP connection failed: POST /sync/full-sync (Inner exception: ClientException: Connection closed while receiving data, uri=https://immich.*********.com/api/sync/full-sync)

#0      IOClient.send.<anonymous closure> (package:http/src/io_client.dart:139)
#1      Stream.handleError.<anonymous closure> (dart:async/stream.dart:931)
#2      _HandleErrorStream._handleError (dart:async/stream_pipe.dart:269)
#3      _ForwardingStreamSubscription._handleError (dart:async/stream_pipe.dart:157)
#4      _HttpClientResponse.listen.<anonymous closure> (dart:_http/http_impl.dart:725)
#5      _RootZone.runBinaryGuarded (dart:async/zone.dart:1606)
#6      _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:384)
#7      _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:402)
#8      _BufferingStreamSubscription._addError (dart:async/stream_impl.dart:306)
#9      _ForwardingStreamSubscription._addError (dart:async/stream_pipe.dart:128)
#10     _addErrorWithReplacement (dart:async/stream_pipe.dart:176)
#11     _HandleErrorStream._handleError (dart:async/stream_pipe.dart:274)
#12     _ForwardingStreamSubscription._handleError (dart:async/stream_pipe.dart:157)
#13     _RootZone.runBinaryGuarded (dart:async/zone.dart:1606)
#14     _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:384)
#15     _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:402)
#16     _BufferingStreamSubscription._addError (dart:async/stream_impl.dart:306)
#17     _SyncStreamControllerDispatch._sendError (dart:async/stream_controller.dart:788)
#18     _StreamController._addError (dart:async/stream_controller.dart:666)
#19     _StreamController.addError (dart:async/stream_controller.dart:620)
#20     _HttpParser._reportBodyError (dart:_http/http_parser.dart:1201)
#21     _HttpParser._onDone (dart:_http/http_parser.dart:899)
#22     _RootZone.runGuarded (dart:async/zone.dart:1582)
#23     _BufferingStreamSubscription._sendDone.sendDone (dart:async/stream_impl.dart:418)
#24     _BufferingStreamSubscription._sendDone (dart:async/stream_impl.dart:428)
#25     _BufferingStreamSubscription._close (dart:async/stream_impl.dart:317)
#26     _SyncStreamControllerDispatch._sendDone (dart:async/stream_controller.dart:792)
#27     _StreamController._closeUnchecked (dart:async/stream_controller.dart:647)
#28     _StreamController.close (dart:async/stream_controller.dart:640)
#29     _Socket._onError (dart:io-patch/socket_patch.dart:2479)
#30     _RootZone.runBinaryGuarded (dart:async/zone.dart:1606)
#31     _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:384)
#32     _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:399)
#33     _BufferingStreamSubscription._addError (dart:async/stream_impl.dart:306)
#34     _SyncStreamControllerDispatch._sendError (dart:async/stream_controller.dart:788)
#35     _StreamController._addError (dart:async/stream_controller.dart:666)
#36     _StreamController.addError (dart:async/stream_controller.dart:620)
#37     _RawSecureSocket._reportError (dart:io/secure_socket.dart:888)
#38     _RootZone.runBinaryGuarded (dart:async/zone.dart:1606)
#39     _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:384)
#40     _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:402)
#41     _BufferingStreamSubscription._addError (dart:async/stream_impl.dart:306)
#42     _SyncStreamControllerDispatch._sendError (dart:async/stream_controller.dart:788)
#43     _StreamController._addError (dart:async/stream_controller.dart:666)
#44     _StreamController.addError (dart:async/stream_controller.dart:620)
#45     new _RawSocket.<anonymous closure> (dart:io-patch/socket_patch.dart:1955)
#46     _RootZone.runBinaryGuarded (dart:async/zone.dart:1606)
#47     _RootZone.bindBinaryCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1638)
#48     _NativeSocket.reportError (dart:io-patch/socket_patch.dart:1653)
#49     _NativeSocket.multiplex (dart:io-patch/socket_patch.dart:1467)
#50     _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184)

Additional information

No response

@alextran1502
Copy link
Contributor

alextran1502 commented Nov 22, 2024

What is the library size of hers and yours? And what happens if you accessing the instance over local IP?

@coltenkrauter
Copy link
Author

That is the current situation. We are both at home on the same network as Immich. I have a dns rule setup on my UDM-PRO such that requests to my Immich server while on the lan will be routed directly to traefik via the local ip.

Library size is about 5TB.

Interestingly, my wife's iOS Immich does show the correct library size. But, she is still unable to see many years of photos in her timeline.

image

@coltenkrauter
Copy link
Author

I thought that I checked her mobile app version... I see that she is out of date.

I'm going to update her app to the latest real quick and see if that changes anything.

@coltenkrauter
Copy link
Author

image

I just updated her app on her phone for the latest version, and we are still experiencing the issue.

@alextran1502
Copy link
Contributor

After updating her mobile app, can you try log out and log back in?

@coltenkrauter
Copy link
Author

Her phone is up to date. I signed her out and back in. Still facing the same issue. 🤷‍♂️

@alextran1502
Copy link
Contributor

Can you help capture the number of assets for each person in the Server Status section on the Administration page?

For the sake of removing other network variables, can you try connecting directly to local IP?

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

No branches or pull requests

3 participants