Some files showing as not uploaded in app, but Backup says everything is uploaded. #1381

Closed
opened 2026-02-05 01:34:24 +03:00 by OVERLORD · 20 comments
Owner

Originally created by @mikex99 on GitHub (Sep 27, 2023).

The bug

Backup shows complete, but when I view images in the mobile app, some show the not uploaded overlay on them.

The OS that Immich Server is running on

Windows 10 pro/Docker Desktop/WSL2

Version of Immich Server

1.79.1

Version of Immich Mobile App

1.79.0.119

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}
    command: [ "start.sh", "immich" ]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    depends_on:
      - redis
      - database
      - typesense
    restart: always

  immich-microservices:
    container_name: immich_microservices
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    extends:
      file: hwaccel.yml
      service: hwaccel
    command: [ "start.sh", "microservices" ]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    depends_on:
      - redis
      - database
      - typesense
    restart: always

  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

  immich-web:
    container_name: immich_web
    image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release}
    env_file:
      - .env
    restart: always

  typesense:
    container_name: immich_typesense
    image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
    environment:
      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
      - TYPESENSE_DATA_DIR=/data
      # remove this to get debug messages
      #- GLOG_minloglevel=1
    volumes:
      - tsdata:/data
    restart: always

  redis:
    container_name: immich_redis
    image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
    restart: always

  database:
    container_name: immich_postgres
    image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

  immich-proxy:
    container_name: immich_proxy
    image: ghcr.io/immich-app/immich-proxy:${IMMICH_VERSION:-release}
    environment:
      # Make sure these values get passed through from the env file
      - IMMICH_SERVER_URL
      - IMMICH_WEB_URL
    ports:
      - 2283:8080
    depends_on:
      - immich-server
      - immich-web
    restart: always

volumes:
  pgdata:
  model-cache:
  tsdata:

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=D:\immich

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

# Connection secrets for postgres and typesense. You should change these to random passwords
TYPESENSE_API_KEY=randomstring
DB_PASSWORD=somepassword

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

REDIS_HOSTNAME=immich_redis

Reproduction steps

1. backup files from mobile app
2. check backup status
3. browse local media on immich app and look for items with non-uploaded overlay icon
...

Additional information

It would be less of an issue if there were a way to search for media that isn't uploaded in the mobile app. you could easily do a manual upload of anything from the search results.

Originally created by @mikex99 on GitHub (Sep 27, 2023). ### The bug Backup shows complete, but when I view images in the mobile app, some show the not uploaded overlay on them. ### The OS that Immich Server is running on Windows 10 pro/Docker Desktop/WSL2 ### Version of Immich Server 1.79.1 ### Version of Immich Mobile App 1.79.0.119 ### Platform with the issue - [X] Server - [ ] Web - [X] Mobile ### Your docker-compose.yml content ```YAML version: "3.8" services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} command: [ "start.sh", "immich" ] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload env_file: - .env depends_on: - redis - database - typesense restart: always immich-microservices: container_name: immich_microservices image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} extends: file: hwaccel.yml service: hwaccel command: [ "start.sh", "microservices" ] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload env_file: - .env depends_on: - redis - database - typesense restart: always 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 immich-web: container_name: immich_web image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release} env_file: - .env restart: always typesense: container_name: immich_typesense image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd environment: - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - TYPESENSE_DATA_DIR=/data # remove this to get debug messages #- GLOG_minloglevel=1 volumes: - tsdata:/data restart: always redis: container_name: immich_redis image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 restart: always database: container_name: immich_postgres image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441 env_file: - .env environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} volumes: - pgdata:/var/lib/postgresql/data restart: always immich-proxy: container_name: immich_proxy image: ghcr.io/immich-app/immich-proxy:${IMMICH_VERSION:-release} environment: # Make sure these values get passed through from the env file - IMMICH_SERVER_URL - IMMICH_WEB_URL ports: - 2283:8080 depends_on: - immich-server - immich-web restart: always volumes: pgdata: model-cache: tsdata: ``` ### Your .env content ```Shell # 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=D:\immich # The Immich version to use. You can pin this to a specific version like "v1.71.0" IMMICH_VERSION=release # Connection secrets for postgres and typesense. You should change these to random passwords TYPESENSE_API_KEY=randomstring DB_PASSWORD=somepassword # The values below this line do not need to be changed ################################################################################### DB_HOSTNAME=immich_postgres DB_USERNAME=postgres DB_DATABASE_NAME=immich REDIS_HOSTNAME=immich_redis ``` ### Reproduction steps ```bash 1. backup files from mobile app 2. check backup status 3. browse local media on immich app and look for items with non-uploaded overlay icon ... ``` ### Additional information It would be less of an issue if there were a way to search for media that isn't uploaded in the mobile app. you could easily do a manual upload of anything from the search results.
OVERLORD added the 📱mobile label 2026-02-05 01:34:24 +03:00
Author
Owner

@alextran1502 commented on GitHub (Nov 1, 2023):

Hello is this issue still relevance?

@alextran1502 commented on GitHub (Nov 1, 2023): Hello is this issue still relevance?
Author
Owner

@Stefomat commented on GitHub (Mar 28, 2024):

+1
For me at least it is. I'm running v1.99.0 and see lots of pictures and videos in the app that the backup successfully uploaded, but are shown in the app as local only. Can provide more information if needed.

@Stefomat commented on GitHub (Mar 28, 2024): +1 For me at least it is. I'm running v1.99.0 and see lots of pictures and videos in the app that the backup successfully uploaded, but are shown in the app as local only. Can provide more information if needed.
Author
Owner

@alextran1502 commented on GitHub (Mar 28, 2024):

@Stefomat can you try double pull to refresh on the timeline or log out and log back in?

@alextran1502 commented on GitHub (Mar 28, 2024): @Stefomat can you try double pull to refresh on the timeline or log out and log back in?
Author
Owner

@Stefomat commented on GitHub (Mar 29, 2024):

@alextran1502 Thanks, this fixed it. All pictures are correctly shown as uploaded again. Now i just gotta figure out, why Immich shows a total of 5637 elements, when all other galleries show 5638.

@Stefomat commented on GitHub (Mar 29, 2024): @alextran1502 Thanks, this fixed it. All pictures are correctly shown as uploaded again. Now i just gotta figure out, why Immich shows a total of 5637 elements, when all other galleries show 5638.
Author
Owner

@alextran1502 commented on GitHub (Mar 29, 2024):

@Stefomat perhaps a duplicated photo

@alextran1502 commented on GitHub (Mar 29, 2024): @Stefomat perhaps a duplicated photo
Author
Owner

@Stefomat commented on GitHub (Mar 29, 2024):

@alextran1502 Wow you are fast. Was thinking the same. Although i don't have much hope of finding it in thousands of pictures.

@Stefomat commented on GitHub (Mar 29, 2024): @alextran1502 Wow you are fast. Was thinking the same. Although i don't have much hope of finding it in thousands of pictures.
Author
Owner

@Stefomat commented on GitHub (Mar 29, 2024):

Also, this gets somewhat off-topic. I'll hop into the discussions tab to ask something else.

@Stefomat commented on GitHub (Mar 29, 2024): Also, this gets somewhat off-topic. I'll hop into the discussions tab to ask something else.
Author
Owner

@jeffklassen commented on GitHub (Apr 24, 2024):

Im experiencing the same issue with 1.102.3. Android app user. I've tried logging out/in, double pull. And no change.

@jeffklassen commented on GitHub (Apr 24, 2024): Im experiencing the same issue with 1.102.3. Android app user. I've tried logging out/in, double pull. And no change.
Author
Owner

@my95z34 commented on GitHub (May 14, 2024):

Hello, I am also having this issue on the 1.104 version of server and app. I don't know if it has any relevance, but it happened midway through the day on April 26th. All photos and videos since then show the cloud with a slash through them, even though they are uploaded.

At about the same time, my background upload has quit as well. I now have to open the app to get anything to upload.

If you need any other info, or logs, just let me know.

Thank you.

@my95z34 commented on GitHub (May 14, 2024): Hello, I am also having this issue on the 1.104 version of server and app. I don't know if it has any relevance, but it happened midway through the day on April 26th. All photos and videos since then show the cloud with a slash through them, even though they are uploaded. At about the same time, my background upload has quit as well. I now have to open the app to get anything to upload. If you need any other info, or logs, just let me know. Thank you.
Author
Owner

@my95z34 commented on GitHub (May 15, 2024):

Hello, I am also having this issue on the 1.104 version of server and app. I don't know if it has any relevance, but it happened midway through the day on April 26th. All photos and videos since then show the cloud with a slash through them, even though they are uploaded.

At about the same time, my background upload has quit as well. I now have to open the app to get anything to upload.

If you need any other info, or logs, just let me know.

Thank you.

App updated to 1.105 (haven't updated server yet) and now the cloud icons are showing up properly. Haven't tested background uploads yet.

@my95z34 commented on GitHub (May 15, 2024): > Hello, I am also having this issue on the 1.104 version of server and app. I don't know if it has any relevance, but it happened midway through the day on April 26th. All photos and videos since then show the cloud with a slash through them, even though they are uploaded. > > At about the same time, my background upload has quit as well. I now have to open the app to get anything to upload. > > If you need any other info, or logs, just let me know. > > Thank you. App updated to 1.105 (haven't updated server yet) and now the cloud icons are showing up properly. Haven't tested background uploads yet.
Author
Owner

@JerryLF7 commented on GitHub (Dec 7, 2024):

Server version: v1.122.1
App version: v1.122.0 build.169

Tried double tap to refresh an log in/out, it didn't work. But backgroud upload still works.

@JerryLF7 commented on GitHub (Dec 7, 2024): Server version: v1.122.1 App version: v1.122.0 build.169 Tried double tap to refresh an log in/out, it didn't work. But backgroud upload still works.
Author
Owner

@alextran1502 commented on GitHub (Dec 7, 2024):

@JerryLF7 please try clearing the app data/cache

@alextran1502 commented on GitHub (Dec 7, 2024): @JerryLF7 please try clearing the app data/cache
Author
Owner

@JerryLF7 commented on GitHub (Dec 7, 2024):

@JerryLF7 please try clearing the app data/cache

Tried this too, I even tried reinstalling the app, both didn't work.

I just checked the app logs and found this error, hope this helps.
image

@JerryLF7 commented on GitHub (Dec 7, 2024): > @JerryLF7 please try clearing the app data/cache Tried this too, I even tried reinstalling the app, both didn't work. I just checked the app logs and found this error, hope this helps. ![image](https://github.com/user-attachments/assets/a14f9cd5-e6c6-45c8-99bb-e3e093a30ad3)
Author
Owner

@enumerizor commented on GitHub (Feb 22, 2025):

I think I just got this after logging out & back in to test oauth with the mobile app. The timeline seems to correctly show all my photos but it looks like most of them have the not uploaded icon while the upload service says I'm fully synced. Logging out, clearing cache & storage, and logging back in didn't seem to change anything. I'm seeing the following happening several times in my app log.

Error while getting remote assets

Null check operator used on a null value

#0      AssetResponseDto.fromJson (package:openapi/model/asset_response_dto.dart:291)
#1      ApiClient.fromJson (package:openapi/api_client.dart:260)
#2      ApiClient.fromJson.<anonymous closure> (package:openapi/api_client.dart:657)
#3      MappedIterable.elementAt (dart:_internal/iterable.dart:385)
#4      ListIterator.moveNext (dart:_internal/iterable.dart:354)
#5      new _List._ofEfficientLengthIterable (dart:core-patch/array.dart:163)
#6      new _List.of (dart:core-patch/array.dart:128)
#7      new List.of (dart:core-patch/array_patch.dart:39)
#8      ListIterable.toList (dart:_internal/iterable.dart:224)
#9      ApiClient.fromJson (package:openapi/api_client.dart:658)
#10     ApiClient.deserialize (package:openapi/api_client.dart:158)
<asynchronous suspension>
#11     SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:108)
<asynchronous suspension>
#12     AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:145)
<asynchronous suspension>
#13     SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:267)
<asynchronous suspension>
#14     SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:257)
<asynchronous suspension>
#15     SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:92)
<asynchronous suspension>
#16     AssetService.refreshRemoteAssets (package:immich_mobile/services/asset.service.dart:85)
<asynchronous suspension>
#17     AssetNotifier.getAllAsset (package:immich_mobile/providers/asset.provider.dart:55)
<asynchronous suspension>
#18     PhotosPage.build.refreshAssets (package:immich_mobile/pages/photos/photos.page.dart:96)
<asynchronous suspension>
#19     MultiselectGrid.build.wrapLongRunningFun.<anonymous closure> (package:immich_mobile/widgets/asset_grid/multiselect_grid.dart:399)
<asynchronous suspension>
#20     RefreshIndicatorState._show.<anonymous closure>.<anonymous closure> (package:flutter/src/material/refresh_indicator.dart:503)
<asynchronous suspension>

Server 1.126.1 - Docker Compose
Mobile 1.126.1 build.184
Android Pixel 8 running Grapheneos

@enumerizor commented on GitHub (Feb 22, 2025): I think I just got this after logging out & back in to test oauth with the mobile app. The timeline seems to correctly show all my photos but it looks like most of them have the not uploaded icon while the upload service says I'm fully synced. Logging out, clearing cache & storage, and logging back in didn't seem to change anything. I'm seeing the following happening several times in my app log. ``` Error while getting remote assets Null check operator used on a null value #0 AssetResponseDto.fromJson (package:openapi/model/asset_response_dto.dart:291) #1 ApiClient.fromJson (package:openapi/api_client.dart:260) #2 ApiClient.fromJson.<anonymous closure> (package:openapi/api_client.dart:657) #3 MappedIterable.elementAt (dart:_internal/iterable.dart:385) #4 ListIterator.moveNext (dart:_internal/iterable.dart:354) #5 new _List._ofEfficientLengthIterable (dart:core-patch/array.dart:163) #6 new _List.of (dart:core-patch/array.dart:128) #7 new List.of (dart:core-patch/array_patch.dart:39) #8 ListIterable.toList (dart:_internal/iterable.dart:224) #9 ApiClient.fromJson (package:openapi/api_client.dart:658) #10 ApiClient.deserialize (package:openapi/api_client.dart:158) <asynchronous suspension> #11 SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:108) <asynchronous suspension> #12 AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:145) <asynchronous suspension> #13 SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:267) <asynchronous suspension> #14 SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:257) <asynchronous suspension> #15 SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:92) <asynchronous suspension> #16 AssetService.refreshRemoteAssets (package:immich_mobile/services/asset.service.dart:85) <asynchronous suspension> #17 AssetNotifier.getAllAsset (package:immich_mobile/providers/asset.provider.dart:55) <asynchronous suspension> #18 PhotosPage.build.refreshAssets (package:immich_mobile/pages/photos/photos.page.dart:96) <asynchronous suspension> #19 MultiselectGrid.build.wrapLongRunningFun.<anonymous closure> (package:immich_mobile/widgets/asset_grid/multiselect_grid.dart:399) <asynchronous suspension> #20 RefreshIndicatorState._show.<anonymous closure>.<anonymous closure> (package:flutter/src/material/refresh_indicator.dart:503) <asynchronous suspension> ``` Server 1.126.1 - Docker Compose Mobile 1.126.1 build.184 Android Pixel 8 running Grapheneos
Author
Owner

@enumerizor commented on GitHub (Feb 22, 2025):

I have further noticed that the photos showing as not uploaded don't show any of their server side metadata in the app like location or identified faces.

However, if I long press them and select 'Upload', let that finish, then quit & relaunch the app then that seems to fix them.

@enumerizor commented on GitHub (Feb 22, 2025): I have further noticed that the photos showing as not uploaded don't show any of their server side metadata in the app like location or identified faces. However, if I long press them and select 'Upload', let that finish, then quit & relaunch the app then that seems to fix them.
Author
Owner

@alextran1502 commented on GitHub (Feb 22, 2025):

@enumerizor Your situation is likely due to bad date data in the database that is causing issues with the new database engine we are using after migrating to Kysely. You can read more about how you can fix it in this thread

https://github.com/immich-app/immich/issues/16046#issuecomment-2657784399

@alextran1502 commented on GitHub (Feb 22, 2025): @enumerizor Your situation is likely due to bad date data in the database that is causing issues with the new database engine we are using after migrating to Kysely. You can read more about how you can fix it in this thread https://github.com/immich-app/immich/issues/16046#issuecomment-2657784399
Author
Owner

@enumerizor commented on GitHub (Feb 23, 2025):

Thank you @alextran1502 that was it. With the file paths from those queries I was able to figure out which images they were and delete them from the UI. They would still appear in a search result despite not appearing the timeline.

@enumerizor commented on GitHub (Feb 23, 2025): Thank you @alextran1502 that was it. With the file paths from those queries I was able to figure out which images they were and delete them from the UI. They would still appear in a search result despite not appearing the timeline.
Author
Owner

@danieldietzler commented on GitHub (Sep 12, 2025):

These are all very likely to be fixed with the new beta timeline/backups. If not please reply and we can re-open.

@danieldietzler commented on GitHub (Sep 12, 2025): These are all very likely to be fixed with the new beta timeline/backups. If not please reply and we can re-open.
Author
Owner

@ISibboI commented on GitHub (Sep 14, 2025):

I am using the beta timeline, and having the same issue. Images show up fine in the webinterface, but on the app they show as not backed up (cloud with a strike-through).

And well, it's backing up those images and videos again and again, so it seemingly is not just a display issue, but the app really thinks the images and videos are never backed up.

This has started two days ago for me, after I started importing a large amount of images with immich-go. This import is finished now for about 24 hours, and all the immich background tasks have run to completion. So now I would expect the backup to work normally again.

This originally happened with server version 1.140.latest and app version 1.141.latest (latest meaning the latest patch that was ever published for them, I don't remember the exact numbers.). Now I updated to 1.142.0 both on my (Android) phone and the server, and the issue persists.

The logs show some violations of UNIQUE SQL constraints.

App log

Server log

@ISibboI commented on GitHub (Sep 14, 2025): I am using the beta timeline, and having the same issue. Images show up fine in the webinterface, but on the app they show as not backed up (cloud with a strike-through). And well, it's backing up those images and videos again and again, so it seemingly is not just a display issue, but the app really thinks the images and videos are never backed up. This has started two days ago for me, after I started importing a large amount of images with immich-go. This import is finished now for about 24 hours, and all the immich background tasks have run to completion. So now I would expect the backup to work normally again. This originally happened with server version 1.140.latest and app version 1.141.latest (latest meaning the latest patch that was ever published for them, I don't remember the exact numbers.). Now I updated to 1.142.0 both on my (Android) phone and the server, and the issue persists. The logs show some violations of UNIQUE SQL constraints. [App log](https://github.com/user-attachments/files/22319041/immich-app.log) [Server log](https://github.com/user-attachments/files/22319043/immich.log)
Author
Owner

@danieldietzler commented on GitHub (Sep 14, 2025):

This seems like a new/unrelated issue @ISibboI. Would you mind opening a new issue? :)

@danieldietzler commented on GitHub (Sep 14, 2025): This seems like a new/unrelated issue @ISibboI. Would you mind opening a new issue? :)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#1381