immich-app / immich

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

External Library Management - Delete Library #10160

Closed vzvl closed 4 days ago

vzvl commented 3 weeks ago

The bug

When trying to delete an external library two confirmation windows have to be passed. The first confirmation windows can be passed by toggling the "Confirm" button, whereas in the second confirmation window the toggle button is disabled. This is true for both external libraries assigned to another user as well as the admin account. Both external libraries contain indexed assets (46 and 14) for testing purposes.

The OS that Immich Server is running on

Ubuntu 22.04

Version of Immich Server

v1.106.1

Version of Immich Mobile App

v1.106

Platform with the issue

Your docker-compose.yml content

name: immich

networks:
  proxy:
    external: true

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
      - ${EXTERNAL_BILDER}:/usr/src/app/external/
    env_file:
      - stack.env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always
    networks:
      - proxy
      - default

  immich-machine-learning:
    container_name: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
    #   file: hwaccel.ml.yml
    #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache
    env_file:
      - stack.env
    restart: always

  redis:
    container_name: immich_redis
    image: registry.hub.docker.com/library/redis:6.2-alpine@sha256:84882e87b54734154586e5f8abd4dce69fe7311315e2fc6d67c29614c8de2672
    restart: always
    networks:
      - proxy
      - default

  database:
    container_name: immich_postgres
    image: registry.hub.docker.com/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    env_file:
      - stack.env
    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
    restart: always
    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"]

volumes:
  model-cache:

Your .env content

UPLOAD_LOCATION=/home/user/docker/immich/library
DB_DATA_LOCATION=/home/user/docker/immich/postgres
IMMICH_VERSION=release
DB_PASSWORD=
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
EXTERNAL_BILDER=/home/user/Bilder/

Reproduction steps

1. Select "Delete library"
2. Select "Confirm" in the first window
3. "Confirm" toggle in second window is disabled

Relevant log output

No response

Additional information

No response

bo0tzz commented 3 weeks ago

I'm not sure what you're trying to say, can you rephrase things or add more info?

vzvl commented 3 weeks ago

As stated in the description, when trying to delete an external library through the adminsitration panel, one has to click thorugh two confirmation windows. In the desribed case, where the external libraries are populated (path and assets) they can not be deleleted, as the second confirmation windows does not allow the "Confirm" toggle to be clicked. I resolved the issue by first manually removing the path of the external library. Then I had to "Remove offline files" so that no assets are indexed. Only then could I click the second "Confirm" toggle for the deletion of the library. Not sure if it is intended to work that way.

f0ff886f commented 3 weeks ago

With pictures...

This is the first dialog box that pops up when you click delete library: CleanShot 2024-06-12 at 19 49 07

After you click the red button, you get another dialog, and this you cannot click Confirm because it has a no icon for the cursor:

CleanShot 2024-06-12 at 19 50 32

It sounds like the WAR is unmount the library from docker and then you can delete it. This is a regression in 1.106.x because I used to add / delete libraries all the time to test things out.

HandHsince1920 commented 3 weeks ago

I have the same issue under unraid.

porjo commented 3 weeks ago

same issue here - Immich on Truenas Scale (running as kubernetes app)

NickIAm commented 3 weeks ago

I have also run into this issue.

Detected CPU Cores: 4
Starting api worker
Starting microservices worker
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:EventRepository] Initialized websocket server
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:SystemConfigService] LogLevel=debug (set via system config)
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering thumbnailGeneration with a concurrency of 4
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering metadataExtraction with a concurrency of 2
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering videoConversion with a concurrency of 1
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering faceDetection with a concurrency of 2
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering facialRecognition with a concurrency of 1
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering smartSearch with a concurrency of 2
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering duplicateDetection with a concurrency of 1
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering backgroundTask with a concurrency of 5
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering storageTemplateMigration with a concurrency of 1
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering migration with a concurrency of 4
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering search with a concurrency of 5
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering sidecar with a concurrency of 4
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering library with a concurrency of 4
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:JobService] Registering notifications with a concurrency of 5
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:MapRepository] Initializing metadata repository
[Nest] 17  - 06/15/2024, 10:05:49 PM     LOG [Api:EventRepository] Initialized websocket server
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:MetadataService] Initialized local reverse geocoder
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:NestFactory] Starting Nest application...
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] BullModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] OpenTelemetryModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] TypeOrmModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] OpenTelemetryCoreModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] ConfigHostModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] DiscoveryModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] ClsModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] ConfigModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] EventEmitterModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] BullModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] BullModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] TypeOrmCoreModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] TypeOrmModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:InstanceLoader] MicroservicesModule dependencies initialized
[Nest] 7  - 06/15/2024, 10:05:49 PM   DEBUG [Microservices:ClsModule] Mounting ClsMiddleware to *
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:NestApplication] Nest application successfully started
[Nest] 7  - 06/15/2024, 10:05:49 PM     LOG [Microservices:Bootstrap] Immich Microservices is running [v1.106.4] [PRODUCTION] 
[Nest] 17  - 06/15/2024, 10:05:50 PM     LOG [Api:SystemConfigService] LogLevel=debug (set via system config)
[Nest] 17  - 06/15/2024, 10:05:50 PM   DEBUG [Api:VersionService] Running version check
[Nest] 17  - 06/15/2024, 10:06:00 PM    WARN [Api:Error: Failed to fetch GitHub release: TypeError: fetch failed
    at ServerInfoRepository.getGitHubRelease (/usr/src/app/dist/repositories/server-info.repository.js:22:19)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async VersionService.handleVersionCheck (/usr/src/app/dist/services/version.service.js:104:77)
    at async VersionService.init (/usr/src/app/dist/services/version.service.js:78:9)
    at async ApiService.init (/usr/src/app/dist/services/api.service.js:82:9)
    at async ApiModule.onModuleInit (/usr/src/app/dist/app.module.js:62:9)
    at async callModuleInitHook (/usr/src/app/node_modules/@nestjs/core/hooks/on-module-init.hook.js:51:9)
    at async NestApplication.callInitHook (/usr/src/app/node_modules/@nestjs/core/nest-application-context.js:223:13)
    at async NestApplication.init (/usr/src/app/node_modules/@nestjs/core/nest-application.js:100:9)
    at async NestApplication.listen (/usr/src/app/node_modules/@nestjs/core/nest-application.js:169:33)] Unable to run version check: Error: Failed to fetch GitHub release: TypeError: fetch failed
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:ApiService] Feature Flags: {
  "smartSearch": true,
  "facialRecognition": true,
  "duplicateDetection": true,
  "map": true,
  "reverseGeocoding": true,
  "sidecar": true,
  "search": true,
  "trash": true,
  "oauth": false,
  "oauthAutoLaunch": false,
  "passwordLogin": true,
  "configFile": false,
  "email": true
}
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:NestFactory] Starting Nest application...
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] BullModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] OpenTelemetryModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] TypeOrmModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] OpenTelemetryCoreModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] ConfigHostModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] DiscoveryModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] ClsModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] ConfigModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] EventEmitterModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] ScheduleModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] BullModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] BullModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] TypeOrmCoreModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] TypeOrmModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:InstanceLoader] ApiModule dependencies initialized
[Nest] 17  - 06/15/2024, 10:06:00 PM   DEBUG [Api:ClsModule] Mounting ClsMiddleware to *
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] APIKeyController {/api/api-keys}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/api-keys, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/api-keys, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/api-keys/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/api-keys/:id, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/api-keys/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] ActivityController {/api/activities}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/activities, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/activities/statistics, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/activities, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/activities/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] AlbumController {/api/albums}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums/count, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums/:id, PATCH} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums/:id/assets, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums/:id/assets, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums/:id/users, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums/:id/user/:userId, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/albums/:id/user/:userId, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] AppController {/api}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/.well-known/immich, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/custom.css, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] AssetController {/api/assets}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/memory-lane, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/random, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/device/:deviceId, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/statistics, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/jobs, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/stack/parent, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/:id, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] AssetMediaController {/api/assets}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/:id/original, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/:id/original, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/:id/thumbnail, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/:id/video/playback, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/exist, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/assets/bulk-upload-check, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] AuditController {/api/audit}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/audit/deletes, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] AuthController {/api/auth}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/auth/login, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/auth/admin-sign-up, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/auth/validateToken, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/auth/change-password, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/auth/logout, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] DownloadController {/api/download}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/download/info, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/download/archive, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] DuplicateController {/api/duplicates}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/duplicates, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] FaceController {/api/faces}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/faces, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/faces/:id, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] JobController {/api/jobs}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/jobs, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/jobs/:id, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] LibraryController {/api/libraries}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/libraries, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/libraries, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/libraries/:id, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/libraries/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/libraries/:id/validate, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/libraries/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/libraries/:id/statistics, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/libraries/:id/scan, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/libraries/:id/removeOffline, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] MapController {/api/map}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/map/markers, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/map/style.json, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] MemoryController {/api/memories}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/memories, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/memories, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/memories/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/memories/:id, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/memories/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/memories/:id/assets, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/memories/:id/assets, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] NotificationController {/api/notifications}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/notifications/test-email, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] OAuthController {/api/oauth}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/oauth/mobile-redirect, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/oauth/authorize, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/oauth/callback, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/oauth/link, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/oauth/unlink, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] PartnerController {/api/partners}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/partners, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/partners/:id, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/partners/:id, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/partners/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] PersonController {/api/people}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people/:id, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people/:id/statistics, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people/:id/thumbnail, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people/:id/assets, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people/:id/reassign, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/people/:id/merge, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] ReportController {/api/reports}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/reports, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/reports/checksum, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/reports/fix, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] SearchController {/api/search}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/search/metadata, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/search/smart, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/search/explore, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/search/person, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/search/places, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/search/cities, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/search/suggestions, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] ServerInfoController {/api/server-info}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/server-info/storage, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/server-info/ping, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/server-info/version, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/server-info/features, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/server-info/theme, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/server-info/config, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/server-info/statistics, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/server-info/media-types, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] SessionController {/api/sessions}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/sessions, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/sessions, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/sessions/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] SharedLinkController {/api/shared-links}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/shared-links, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/shared-links/me, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/shared-links, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id, PATCH} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id/assets, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/shared-links/:id/assets, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] SyncController {/api/sync}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/sync/full-sync, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/sync/delta-sync, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] SystemConfigController {/api/system-config}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/system-config, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/system-config/defaults, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/system-config, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/system-config/storage-template-options, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] SystemMetadataController {/api/system-metadata}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/system-metadata/admin-onboarding, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/system-metadata/admin-onboarding, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/system-metadata/reverse-geocoding-state, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] TagController {/api/tags}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/tags, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/tags, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/tags/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/tags/:id, PATCH} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/tags/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/tags/:id/assets, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/tags/:id/assets, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/tags/:id/assets, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] TimelineController {/api/timeline}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/timeline/buckets, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/timeline/bucket, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] TrashController {/api/trash}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/trash/empty, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/trash/restore, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/trash/restore/assets, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] UserAdminController {/api/admin/users}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/admin/users, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/admin/users, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/preferences, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/preferences, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/admin/users/:id/restore, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RoutesResolver] UserController {/api/users}:
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/users, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/users/me, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/users/me, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/users/me/preferences, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/users/me/preferences, PUT} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/users/:id, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/users/profile-image, POST} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/users/profile-image, DELETE} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:RouterExplorer] Mapped {/api/users/:id/profile-image, GET} route
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:NestApplication] Nest application successfully started
[Nest] 17  - 06/15/2024, 10:06:00 PM     LOG [Api:Bootstrap] Immich Server is listening on http://[::1]:3001 [v1.106.4] [PRODUCTION] 
[Nest] 17  - 06/15/2024, 10:06:02 PM     LOG [Api:EventRepository] Websocket Connect:    zhMEf5FatgVbulL3AAAB
[Nest] 17  - 06/15/2024, 10:06:02 PM   DEBUG [Api:EventRepository] Server event: websocket.connect (send)
[Nest] 17  - 06/15/2024, 10:06:09 PM   DEBUG [Api:LoggingInterceptor~9t0mir97] POST /api/libraries/4b74816a-a06b-4bda-917b-dda38f797c04/removeOffline 204 14.98ms 100.108.78.65
[Nest] 7  - 06/15/2024, 10:06:10 PM   DEBUG [Microservices:LibraryService] Removing 4 offline assets
[Nest] 17  - 06/15/2024, 10:06:44 PM   DEBUG [Api:LoggingInterceptor~je1qrmbo] GET /api/libraries/4b74816a-a06b-4bda-917b-dda38f797c04/statistics 200 73.26ms 100.108.78.65
[Nest] 17  - 06/15/2024, 10:06:45 PM   DEBUG [Api:LoggingInterceptor~fna283dd] GET /api/admin/users/b681bc2e-5be2-4405-ae5b-44c11434269b 200 11.21ms 100.108.78.65

This is the log when I click to delete a external library. I'm running version 1.106.4

james-atkins commented 2 weeks ago

See this too. Sometimes I can click on the Confirm button in the second popup but it doesn't do anything. But most of the the time, the second confirm button is disabled, as per the screenshots above.

alextran1502 commented 2 weeks ago

Thank you for the report, I will take a look shortly and have a fix

Tyree commented 2 weeks ago

Thank you for the report, I will take a look shortly and have a fix

I see #10440 seems to be completed. Just updated my install this morning and I'm on 1.106.4, should I still be seeing this issue? Thanks!

bo0tzz commented 2 weeks ago

Yes, there hasn't been a new release yet.

Tyree commented 2 weeks ago

Yes, there hasn't been a new release yet.

Gotcha. Sorry, I didn't know if that was part of the last 1.106.4 or not. Thanks!

anotheraccount1 commented 1 week ago

As stated in the description, when trying to delete an external library through the adminsitration panel, one has to click thorugh two confirmation windows. In the desribed case, where the external libraries are populated (path and assets) they can not be deleleted, as the second confirmation windows does not allow the "Confirm" toggle to be clicked. I resolved the issue by first manually removing the path of the external library. Then I had to "Remove offline files" so that no assets are indexed. Only then could I click the second "Confirm" toggle for the deletion of the library. Not sure if it is intended to work that way.

@vzvl ... would you mind explaining the steps you used to successfully work around this issue? until the next release is available, where the bug is fixed, my installation is stuck in a state where shared albums are "offline" due to underlying library changes that make the database hold invalid indexing information.

I've tried ...

  1. delete the path from the immich / settings / external libraries / "stale" library

  2. run library scan of "stale" library

  3. run "remove offline files" from "Stale" library

  4. attempted to run "delete library" for "Stale" library result = second "confirm" button is still not clickable

  5. bring down immich containers in docker compose

  6. delete the volume mount paths from inside the docker compole.yml for the "stale" library

  7. bring immich containers back up using docker compose

  8. run library scan of "stale" library

  9. run "remove offline files" from "Stale" library

  10. attempted to run "delete library" for "Stale" library result = second "confirm" button is still not clickable

so I'm not sure what steps gave you success, but would greatly appreciate a more detailed step list. Thanks!

NickIAm commented 1 week ago

I did something similar. I pointed my library path mount at /dev/null ,then ran the scan for missing files and waited until the total file count for the library reached 0. I did have to run the scan for missing files several times and it slowly decreased to 0 files eventually. Once it showed 0 I was able to delete the external library entirely.

roadev commented 1 week ago

run

I'm trying that one, but the library job gets stuck (in waiting, not active)

roadev commented 1 week ago

I was able to get unstuck thanks to https://github.com/immich-app/immich/issues/10405#issuecomment-2171775357 I forgot to remove that line on the last update I'm still trying to remove the external library

dawnofsoap commented 1 week ago

I was able to find a temporary workaround for this issue however my setup may be slightly different from yours @roadev. I'm running the latest Immich (Chart Version: 4.0.3 App Version: 1.106.4) on TrueNAS Scale Dragonfish (24.04.1.1) with my external library's mapped as additional storage (host path mount). For what it's worth, it ONLY seems like you can delete the library when the assets and/or size is zero.

I went into the path that was mapped manually via an SMB share (could most likely do this from in TrueNAS bash as well) and moved the folders containing the photos into a new folder that wasn't mapped in the external library. I also created new folders with the same name as the previous mapped folders that were empty.

I'm not sure if this mattered but I also restarted the App (all containers) containing Immich.

I then selected the "Remove Offline Files" button and watched the number start going down with manual page refreshes. Once the external library was at zero, I was able to delete the library.

f0ff886f commented 4 days ago

So, it looks like the buttons are fixed in 1.107.2... but nothing happens when you click them. After you click delete on the dropdown you get:

CleanShot 2024-07-03 at 16 16 07@2x

Click confirm and you get:

CleanShot 2024-07-03 at 16 16 28@2x

Click confirm and the library is still there :(

No errors in the server logs. No javascript errors.

jrasm91 commented 4 days ago

Can you turn logging up to verbose, try again, and then post the results from the server container log here?

Tyree commented 4 days ago

Same problem as @f0ff886f here. Second confirm button is no longer disabled, but the library is still there after clicking it. (I am using the AIO and I'm not quite sure how to enable verbose logging with it. Doesn't look like that ENV var is available per the github page.)

f0ff886f commented 4 days ago

Can you turn logging up to verbose, try again, and then post the results from the server container log here?

There is nothing appearing in the logs when clicking Confirm the second time.

Nor is there any network request (other than a cached response for library statistics and my user details).

This seems like entirely a frontend/javascript issue.

jrasm91 commented 4 days ago

You know what, I think I am actually able to reproduce it. Let me open another PR to address it.