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

Mobile (IOS) - External Library not displaying on Timeline #17197

Closed
1 of 3 tasks
kirnehv opened this issue Mar 28, 2025 · 1 comment
Closed
1 of 3 tasks

Mobile (IOS) - External Library not displaying on Timeline #17197

kirnehv opened this issue Mar 28, 2025 · 1 comment

Comments

@kirnehv
Copy link

kirnehv commented Mar 28, 2025

The Issue Details

After fresh install/update from 1.121 to current latest 1.130.3, external library not populating in timeline of IOS app v1.130.

Stays stuck on Building the timeline.

Adding a single image or video in the backup loads up the timeline with that single image/video. But no External files on Timeline.

I am able to go to the Library tab and access all the External Library files through the new Folders option. But they still dont show up on the Timeline.

WORKAROUND: Go to web, create an album, add all (ctrll+a) external library files to album. Album content aka External library files show up on Timeline mobile!

Web is fine. External files show up in Timeline without having to put them in an Album.

No error logs from docker containers. 1 error log from mobile app posted.

Also tried checking for problematic dates following this issue all seems fine.

The OS that Immich Server is running on

Arch

Version of Immich Server

v1.130.3

Version of Immich Mobile App

v1.130.3.199

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

name: immich

services:
  immich-server:
    container_name: immich-web
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    # extends:
    #   file: hwaccel.transcoding.yml
    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    volumes:
      # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
      - /data/media/photos:/mnt/media/photos:ro
    env_file:
      - .env
    ports:
      - '2283:2283'
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false
    networks:
      - immich-network
      - reverse-proxy-network

  redis:
    container_name: immich-redis
    image: docker.io/redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always
    volumes:
      - redis:/data
    networks:
      - immich-network

  database:
    container_name: immich-db
    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    healthcheck:
      test: >-
        pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1; Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --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:
  redis:

networks:
  immich-network:
    name: immich-network
  reverse-proxy-network:
    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=./library
# The location where your database files are stored
DB_DATA_LOCATION=./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

# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=randomPassword

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

Reproduction steps

  1. Run docker compose up
  2. Create External Library and validate path
  3. Install Immich IOS app and login (over domain/proxy or locally, same result)
  4. Get stuck on Building Timeline message
  5. Add single file to backup, gets unstuck, displays single backed up file
  6. View External files in Folder on IOS app just fine
  7. Up to this point, no External Library files showing up on Timeline mobile app (web works fine)

Relevant log output

Seeing this error log on the IOS app:

Error while getting remote assets

Message: Error while getting remote assets
Details: Null check operator used on a null value
From: AssetService

Stack Trace:
#0      AssetResponseDto.fromJson (package:openapi/model/asset_response_dto.dart:291)
#1      ApiClient.fromJson (package:openapi/api_client.dart:264)
#2      ApiClient.fromJson.<anonymous closure> (package:openapi/api_client.dart:683)
#3      MappedIterable.elementAt (dart:\_internal/iterable.dart:402)
#4      ListIterator.moveNext (dart:\_internal/iterable.dart:371)
#5      new List.ofEfficientLengthIterable (dart:core-patch/array.dart:166)
#6      new List.of (dart:core-patch/array.dart:130)
#7      new List.of (dart:core-patch/arraypatch.dart:40)
#8      ListIterable.toList (dart:\_internal/iterable.dart:224)
#9      ApiClient.fromJson (package:openapi/api_client.dart:684)
#10     ApiClient.deserialize (package:openapi/api_client.dart:158)
<asynchronous suspension>
#11     SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:147)
<asynchronous suspension>
#12     AssetService.\_getRemoteAssets (package:immich_mobile/services/asset.service.dart:149)
<asynchronous suspension>
#13     SyncService.\_syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:291)
<asynchronous suspension>
#14     SyncService.\_syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:281)
<asynchronous suspension>
#15     SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:110)
<asynchronous suspension>
#16     AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>

Additional information

No response

@alextran1502
Copy link
Contributor

Your database has a bad date, an artifact from the previous migration to the new database engine.

You can use this guide to fix it #16046 (comment)

Let me know if you need help

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

No branches or pull requests

2 participants