immich-app / immich

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

Shared link expiration time is not being respected #10732

Closed aaron-iles closed 2 weeks ago

aaron-iles commented 2 weeks ago

The bug

Issue

When creating shared links, they all end up being shared infinitely regardless of the expiration time set by the user. I have only tested this via the web application and did not test it on mobile.

The OS that Immich Server is running on

Fedora 40

Version of Immich Server

v1.106.4

Version of Immich Mobile App

na

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
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    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
    ports:
      - 3003:3003
    restart: always

  redis:
    container_name: immich_redis
    image: docker.io/redis:6.2-alpine@sha256:d6c2911ac51b289db208767581a5d154544f2b2fe4914ea5056443f62dc6e900
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  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}' || 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

volumes:
  model-cache:

Your .env content

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

# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/data/media/photos
# The location where your database files are stored
DB_DATA_LOCATION=/immich-app/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=<redacted>

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

Reproduction steps

When using the desktop site (untested on mobile app), follow these steps to recreate the issue:

1. Open a picture to share.
2. Click the "share" icon in the upper right.
3. In the prompt set the "Expire after" to anything other than "Never". For sake of example, choose "30 minutes". 
4. Click "Create link".
5. Navigate to "Sharing" > "Shared links".
6. See the shared link in your list and note that the expiration is "∞".

Relevant log output

na

Additional information

No response

bo0tzz commented 2 weeks ago

I can't reproduce this. What version does the web client list in the bottom left?

aaron-iles commented 2 weeks ago

The web client has "v1.106.4"

aaron-iles commented 2 weeks ago

I created about 5 or 7 of these links this morning and all of them showed up with "∞". After manually changing them in the shared links page and allowing them to expire I tried this again several times on different photos with different expiration windows and everything worked as expected. So I'm not sure what made it choke up and get stuck in that situation but it appears that allowing some shares to expire "unstuck" it.

I am okay with closing this as "cannot reproduce" and I can open a new ticket if I find the exact conditions that caused this to happen in the first place.