immich-app / immich

High performance self-hosted photo and video management solution.
https://immich.app
GNU Affero General Public License v3.0
52.37k stars 2.77k forks source link

Immich Mobile App Upload Loop #14204

Closed burak-sayici closed 4 days ago

burak-sayici commented 4 days ago

The bug

Hello, I have been using the Immich application for a long time, but I would like to tell you about a problem I have experienced both on android and ios. When backing up photos and videos in my gallery, I noticed that some of them cannot be backed up at all and go into an infinite loop. I have been having this problem for a long time and even though the progress in the backup area is progressing, the videos are not backed up at all and it is forever retrying. I even ran out of my mobile internet package with a telecommunications company just because of this. I solve the problem as follows: if a video does not upload, I transfer it to my computer, upload it through the Immich web interface and delete it from my mobile device. Please, I would like to know what is causing this issue and how to solve it. I have reset the Immich server, I have tried to upload all photos and videos from the beginning, but the problem persists. Link to the video I want to backup from my mobile device: https://drive.google.com/file/d/1h_ZDDIfEb1SSR8v2tfDrw7i64lIAYbXB/view?usp=drive_link

Screenshot_20241118_131521

Screenshot_20241118_131055

The OS that Immich Server is running on

Ubuntu 24.04 LTS

Version of Immich Server

v1.120.2

Version of Immich Mobile App

v120.2 build.167

Platform with the issue

Your docker-compose.yml content

name: immich

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
    networks:
      - captain-overlay-network
    healthcheck:
      disable: false

  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
    networks:
      - captain-overlay-network
    healthcheck:
      disable: false

  redis:
    container_name: immich_redis
    image: docker.io/redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always
    networks:
      - captain-overlay-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:
      - captain-overlay-network
  backup:
    container_name: immich_db_dumper
    image: prodrigestivill/postgres-backup-local
    env_file:
      - .env
    environment:
      POSTGRES_HOST: database
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      SCHEDULE: "@dayly"
      BACKUP_DIR: /db_dumps
    volumes:
      - ${UPLOAD_LOCATION}/dbBackup:/db_dumps
    depends_on:
      - database
    networks:
      - captain-overlay-network
volumes:
  model-cache:

networks:
  captain-overlay-network:
    external: true

Your .env content

UPLOAD_LOCATION=./library
DB_DATA_LOCATION=./postgres

TZ=Europe/Istanbul

IMMICH_VERSION=release

DB_PASSWORD=postgres

DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Reproduction steps

This error occurred when trying to synchronize existing photos in my gallery. I opened the app, activated backup in the settings, and noticed that while all photos and videos were uploaded, some were not, in an endless loop

Relevant log output

2024-11-18 13:24:21.771008 | WARNING  | SyncService          | Ignored 1 duplicate assets on device |
2024-11-18 13:19:34.310755 | WARNING  | SyncService          | Ignored 1 duplicate assets on device |
2024-11-18 13:12:19.258780 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: HttpException: Invalid statusCode: 404, uri = https://photos.buraksayici.com/api/assets/7465747a-009a-4074-8025-08cbc8b15e3e/thumbnail?size=thumbnail
Library: image resource service
Context: Instance of 'ErrorDescription' |

2024-11-18 13:07:26.937153 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: HttpException: Invalid statusCode: 404, uri = https://photos.buraksayici.com/api/assets/801db4ae-b43c-4ea3-ab11-efb2f7b6ac95/thumbnail?size=thumbnail
Library: image resource service
Context: Instance of 'ErrorDescription' |

2024-11-18 13:07:26.892556 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: HttpException: Invalid statusCode: 404, uri = https://photos.buraksayici.com/api/assets/693a4f13-fb38-4c00-a68e-973f5d53ec60/thumbnail?size=thumbnail
Library: image resource service
Context: Instance of 'ErrorDescription' |

2024-11-18 13:07:26.885293 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: HttpException: Invalid statusCode: 404, uri = https://photos.buraksayici.com/api/assets/5f8d7940-346d-4019-966e-aae53f5b3fb0/thumbnail?size=thumbnail
Library: image resource service
Context: Instance of 'ErrorDescription' |

2024-11-18 13:07:26.877775 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: HttpException: Invalid statusCode: 404, uri = https://photos.buraksayici.com/api/assets/491bd090-1a67-418f-bfa0-10f6995fd493/thumbnail?size=thumbnail
Library: image resource service
Context: Instance of 'ErrorDescription' |

2024-11-18 13:07:26.869646 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: HttpException: Invalid statusCode: 404, uri = https://photos.buraksayici.com/api/assets/74887c7e-ab42-4388-b52a-286d291e1c55/thumbnail?size=thumbnail
Library: image resource service
Context: Instance of 'ErrorDescription' |

2024-11-18 13:07:26.869031 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: HttpException: Invalid statusCode: 404, uri = https://photos.buraksayici.com/api/assets/6c549ccc-bf37-4d33-98d6-6e9a32a46781/thumbnail?size=thumbnail
Library: image resource service
Context: Instance of 'ErrorDescription' |

2024-11-18 13:07:26.863757 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: HttpException: Invalid statusCode: 404, uri = https://photos.buraksayici.com/api/assets/5751e86d-39fd-4305-a65e-06e2cd302dbf/thumbnail?size=thumbnail
Library: image resource service
Context: Instance of 'ErrorDescription' |

2024-11-18 13:03:31.344322 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: Exception: Invalid image data
Library: image resource service
Context: Instance of 'ErrorDescription' |
#0      _futurize (dart:ui/painting.dart:7021)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:6827)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2306)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:146)
#4      ImageLoader.loadImageFromCache (package:immich_mobile/providers/image/cache/image_loader.dart:40)
<asynchronous suspension>
#5      ImmichRemoteImageProvider._codec (package:immich_mobile/providers/image/immich_remote_image_provider.dart:105)
<asynchronous suspension>
#6      new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26)
<asynchronous suspension>

2024-11-18 13:02:16.594348 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: Exception: Invalid image data
Library: image resource service
Context: Instance of 'ErrorDescription' |
#0      _futurize (dart:ui/painting.dart:7021)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:6827)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2306)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:146)
#4      ImageLoader.loadImageFromCache (package:immich_mobile/providers/image/cache/image_loader.dart:40)
<asynchronous suspension>
#5      ImmichRemoteImageProvider._codec (package:immich_mobile/providers/image/immich_remote_image_provider.dart:105)
<asynchronous suspension>
#6      new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26)
<asynchronous suspension>

2024-11-18 13:02:13.469317 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: Exception: Invalid image data
Library: image resource service
Context: Instance of 'ErrorDescription' |
#0      _futurize (dart:ui/painting.dart:7021)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:6827)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2306)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:146)
#4      ImageLoader.loadImageFromCache (package:immich_mobile/providers/image/cache/image_loader.dart:40)
<asynchronous suspension>
#5      ImmichRemoteImageProvider._codec (package:immich_mobile/providers/image/immich_remote_image_provider.dart:105)
<asynchronous suspension>
#6      new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26)
<asynchronous suspension>

2024-11-18 13:01:59.957241 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: Exception: Invalid image data
Library: image resource service
Context: Instance of 'ErrorDescription' |
#0      _futurize (dart:ui/painting.dart:7021)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:6827)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2306)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:146)
#4      ImageLoader.loadImageFromCache (package:immich_mobile/providers/image/cache/image_loader.dart:40)
<asynchronous suspension>
#5      ImmichRemoteImageProvider._codec (package:immich_mobile/providers/image/immich_remote_image_provider.dart:105)
<asynchronous suspension>
#6      new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26)
<asynchronous suspension>

2024-11-18 13:01:56.533969 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: Exception: Invalid image data
Library: image resource service
Context: Instance of 'ErrorDescription' |
#0      _futurize (dart:ui/painting.dart:7021)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:6827)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2306)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:146)
#4      ImageLoader.loadImageFromCache (package:immich_mobile/providers/image/cache/image_loader.dart:40)
<asynchronous suspension>
#5      ImmichRemoteImageProvider._codec (package:immich_mobile/providers/image/immich_remote_image_provider.dart:105)
<asynchronous suspension>
#6      new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26)
<asynchronous suspension>

2024-11-18 13:01:42.264943 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: Exception: Invalid image data
Library: image resource service
Context: Instance of 'ErrorDescription' |
#0      _futurize (dart:ui/painting.dart:7021)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:6827)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2306)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:146)
#4      ImageLoader.loadImageFromCache (package:immich_mobile/providers/image/cache/image_loader.dart:40)
<asynchronous suspension>
#5      ImmichRemoteImageProvider._codec (package:immich_mobile/providers/image/immich_remote_image_provider.dart:105)
<asynchronous suspension>
#6      new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26)
<asynchronous suspension>

2024-11-18 12:58:59.717333 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: Exception: Invalid image data
Library: image resource service
Context: Instance of 'ErrorDescription' |
#0      _futurize (dart:ui/painting.dart:7021)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:6827)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2306)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:146)
#4      ImageLoader.loadImageFromCache (package:immich_mobile/providers/image/cache/image_loader.dart:40)
<asynchronous suspension>
#5      ImmichRemoteImageProvider._codec (package:immich_mobile/providers/image/immich_remote_image_provider.dart:105)
<asynchronous suspension>
#6      new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26)
<asynchronous suspension>

2024-11-18 12:58:59.376477 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: Exception: Invalid image data
Library: image resource service
Context: Instance of 'ErrorDescription' |
#0      _futurize (dart:ui/painting.dart:7021)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:6827)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2306)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:146)
#4      ImageLoader.loadImageFromCache (package:immich_mobile/providers/image/cache/image_loader.dart:40)
<asynchronous suspension>
#5      ImmichRemoteImageProvider._codec (package:immich_mobile/providers/image/immich_remote_image_provider.dart:105)
<asynchronous suspension>
#6      new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26)
<asynchronous suspension>

2024-11-18 12:58:51.815585 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: PlatformException(VideoError, Video player had error j0.l: Source error, null, null)
Library: widgets library
Context: Instance of 'ErrorDescription' |
#1      AsyncError.value (package:riverpod/src/common.dart:494:0)
#2      VideoViewerPage.build (package:immich_mobile/pages/common/video_viewer.page.dart:36:0)
#3      _ConsumerState.build (package:flutter_riverpod/src/consumer.dart:476:0)
#4      StatefulElement.build (package:flutter/src/widgets/framework.dart:5729:0)
#5      ConsumerStatefulElement.build (package:flutter_riverpod/src/consumer.dart:539:0)
#6      HookElement.build (package:flutter_hooks/src/framework.dart:438:0)
#7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5617:0)
#8      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:0)
#9      Element.rebuild (package:flutter/src/widgets/framework.dart:5333:0)
#10     BuildScope._tryRebuild (package:flutter/src/widgets/framework.dart:2693:0)
#11     BuildScope._flushDirtyElements (package:flutter/src/widgets/framework.dart:2752:0)
#12     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3048:0)
#13     _LayoutBuilderElement._rebuildWithConstraints (package:flutter/src/widgets/layout_builder.dart:231:0)
#14     RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2719:0)
#15     PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1098:0)
#16     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2719:0)
#17     RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:278:0)
#18     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:369:0)
#19     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2446:0)
#20     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1052:0)
#21     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1065:0)
#22     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:602:0)
#23     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1164:0)
#24     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:468:0)
#25     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1397:0)
#26     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1318:0)
#27     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1176:0)
#28     _invoke (dart:ui/hooks.dart:312:0)
#29     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:419:0)
#30     _drawFrame (dart:ui/hooks.dart:283:0)

2024-11-18 12:58:39.002099 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: HttpException: Invalid statusCode: 404, uri = https://photos.buraksayici.com/api/assets/b3eeef6f-1086-42cb-ab99-af290a4f1f8a/thumbnail?size=thumbnail
Library: image resource service
Context: Instance of 'ErrorDescription' |

2024-11-18 03:58:09.978948 | SEVERE   | ImmichErrorLogger    | PlatformDispatcher - Catch all | Bad state: Cannot use "ref" after the widget was disposed. |
#0      ConsumerStatefulElement._assertNotDisposed (package:flutter_riverpod/src/consumer.dart:550)
#1      ConsumerStatefulElement.read (package:flutter_riverpod/src/consumer.dart:619)
#2      BackupControllerPage.build.buildFolderSelectionTile.<anonymous closure> (package:immich_mobile/pages/backup/backup_controller.page.dart:215)
<asynchronous suspension>

2024-11-18 03:57:19.462906 | SEVERE   | ImmichErrorLogger    | FlutterError - Catch all | Instance of 'FlutterErrorDetails'
Exception: Exception: Invalid image data
Library: image resource service
Context: Instance of 'ErrorDescription' |
#0      _futurize (dart:ui/painting.dart:7021)
#1      ImageDescriptor.encoded (dart:ui/painting.dart:6827)
#2      instantiateImageCodecWithSize (dart:ui/painting.dart:2306)
#3      PaintingBinding.instantiateImageCodecWithSize (package:flutter/src/painting/binding.dart:146)
#4      ImageLoader.loadImageFromCache (package:immich_mobile/providers/image/cache/image_loader.dart:40)
<asynchronous suspension>
#5      ImmichRemoteImageProvider._codec (package:immich_mobile/providers/image/immich_remote_image_provider.dart:105)
<asynchronous suspension>
#6      new MultiImageStreamCompleter.<anonymous closure> (package:cached_network_image/src/image_provider/multi_image_stream_completer.dart:26)
<asynchronous suspension>

2024-11-18 02:39:58.380336 | WARNING  | SyncService          | Ignored 6 duplicate assets on device |
2024-11-18 02:39:57.442171 | WARNING  | SyncService          | Ignored 3 duplicate assets on device |
2024-11-18 02:39:57.306117 | WARNING  | SyncService          | Ignored 102 duplicate assets on device |
2024-11-18 02:39:56.854706 | WARNING  | SyncService          | Ignored 4 duplicate assets on device |
2024-11-18 02:39:55.107540 | WARNING  | SyncService          | Ignored 14 duplicate assets on device |
2024-11-18 02:39:54.882357 | WARNING  | SyncService          | Ignored 1 duplicate assets on device |

Additional information

No response