App crashes when downloading huge playlist. #30

Open
opened 2026-01-07 17:18:42 +00:00 by GitKentC · 1 comment

Describe the bug
When downloading a huge playlist, the app just crashes. Using a premium account, with no memory restrictions, the playlist song count is 822 songs.

To Reproduce
Precise steps to reproduce the behavior (start from how you built your container):

  1. Search for '...'
  2. Click on playlist 'https://open.spotify.com/playlist/3DPReHzvDAvvvHZz4hNRtC?si=mqo6pKqBQmmh_-Y671gE5A&pt=c2bb26045e21b1007076cf7f3f6e4ad6&pi=RvHaMMP3RoOTD'
  3. App crashes.
    *Note: Sometimes, Server not Responding, sometimes Timeout, sometimes the app runs fine, but download is not downloading.

Expected behavior
Downloads the whole playlist, albeit taking a while.

Desktop (please complete the following information):

  • OS: Windows 11
  • Browser: Chrome

docker-compose.yaml

# HEY, YOU! READ THE DOCS BEFORE YOU DO ANYTHING!
# https://spotizerr.rtfd.io

name: spotizerr
services:
  spotizerr:
    image: spotizerrphoenix/spotizerr
    user: "1000:1000" # Spotizerr user:group ids
    volumes:
    # Ensure these directories and the .cache file exist and are writable by the container user
    - ./data:/app/data # data directory, contains config, creds, watch, history
    - ./downloads:/app/downloads # downloads directory, contains downloaded files
    - ./logs:/app/logs # logs directory, contains logs
    - ./.cache:/app/.cache # cache file
    ports:
    # Port to expose the app on
    - 7171:7171
    container_name: spotizerr-app
    restart: unless-stopped
    env_file:
    # Ensure you have a .env file in the root of the project, with the correct values
    - .env
    depends_on:
    - redis
  redis:
    image: redis:alpine
    container_name: spotizerr-redis
    restart: unless-stopped
    env_file:
    - .env
    volumes:
    - redis-data:/data
    command: sh -c 'redis-server --requirepass "$REDIS_PASSWORD" --appendonly yes'
volumes:
  redis-data:
    driver: local

.env

###
### Main configuration file of the server. If you
### plan to have this only for personal use, you
### can leave the defaults as they are.
###
### If you plan on using for a server,
### see https://spotizerr.rtfd.io
###

# Interface to bind to. Unless you know what you're doing, don't change this
HOST=0.0.0.0

# Redis connection (external or internal).
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0
REDIS_PASSWORD=

# Set to true to filter out explicit content.
EXPLICIT_FILTER=false

# Optional: Sets the default file permissions for newly created files within the container.
UMASK=0022

# Whether to setup file permissions on startup. May improve performance on remote/slow filesystems
SKIP_SET_PERMISSIONS=false

###
### Multi-user settings, disabled by default.
###

# Enable authentication (i.e. multi-user mode).
ENABLE_AUTH=false

# Basic Authentication settings.
JWT_SECRET=long-random-text

# How much a session persists, in hours. 720h = 30 days.
JWT_EXPIRATION_HOURS=720

# Default admins creds, please change the password or delete this account after you create your own
DEFAULT_ADMIN_USERNAME=
DEFAULT_ADMIN_PASSWORD=

# Whether to allow new users to register themselves or leave that only available for admins
DISABLE_REGISTRATION=false

# SSO Configuration
SSO_ENABLED=true
SSO_BASE_REDIRECT_URI=http://127.0.0.1:7171/api/auth/sso/callback
FRONTEND_URL=http://127.0.0.1:7171

# Google SSO (get from Google Cloud Console)
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

# GitHub SSO (get from GitHub Developer Settings)
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=

Config

{
    "service": "spotify",
    "version": "3.3.1",
    "spotify": "spotify premium",
    "deezer": "",
    "fallback": false,
    "spotifyQuality": "HIGH",
    "deezerQuality": "MP3_320",
    "realTime": false,
    "customDirFormat": "Spotizerr/%playlist%",
    "customTrackFormat": "%music%_%artist_1%",
    "tracknumPadding": true,
    "saveCover": true,
    "maxConcurrentDownloads": 3,
    "utilityConcurrency": 1,
    "librespotConcurrency": 1,
    "maxRetries": 10,
    "retryDelaySeconds": 2,
    "retryDelayIncrease": 0,
    "convertTo": "MP3",
    "bitrate": "",
    "artistSeparator": "; ",
    "recursiveQuality": false,
    "spotifyMetadata": true,
    "separateTracksByUser": false,
    "watch": {
        "enabled": false,
        "watchPollIntervalSeconds": 3600,
        "maxTracksPerRun": 50,
        "watchedArtistAlbumGroup": [
            "album",
            "single"
        ],
        "delayBetweenPlaylistsSeconds": 2,
        "delayBetweenArtistsSeconds": 5,
        "useSnapshotIdChecking": true,
        "maxItemsPerRun": 50
    },
    "realTimeMultiplier": 10,
    "padNumberWidth": 3,
    "sseUpdateIntervalSeconds": 1,
    "warning": "Global Spotify API credentials are not fully configured or file is missing.",
    "explicitFilter": false
}

Logs

redis     | 2026-01-08 00:15:18.306 | 1:signal-handler (1767806118) Received SIGTERM scheduling shutdown...
redis     | 2026-01-08 00:15:18.360 | 1:M 07 Jan 2026 17:15:18.359 * User requested shutdown...
redis     | 2026-01-08 00:15:18.361 | 1:M 07 Jan 2026 17:15:18.361 * Calling fsync() on the AOF file.
redis     | 2026-01-08 00:15:18.361 | 1:M 07 Jan 2026 17:15:18.361 * Saving the final RDB snapshot before exiting.
redis     | 2026-01-08 00:15:18.379 | 1:M 07 Jan 2026 17:15:18.378 * BGSAVE done, 1778 keys saved, 0 keys skipped, 226126 bytes written.
redis     | 2026-01-08 00:15:18.388 | 1:M 07 Jan 2026 17:15:18.388 * DB saved on disk
redis     | 2026-01-08 00:15:18.393 | 1:M 07 Jan 2026 17:15:18.393 # Redis is now ready to exit, bye bye...
spotizerr | 2026-01-08 00:15:18.608 | 2026-01-07 17:15:18 [ERROR] SSE Redis Subscriber: Fatal error: Connection closed by server.
spotizerr | 2026-01-08 00:15:18.608 | Traceback (most recent call last):
spotizerr | 2026-01-08 00:15:18.608 |   File "/app/routes/system/progress.py", line 179, in redis_subscriber_thread
spotizerr | 2026-01-08 00:15:18.608 |     for message in pubsub.listen():
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/client.py", line 998, in listen
spotizerr | 2026-01-08 00:15:18.608 |     response = self.handle_message(self.parse_response(block=True))
spotizerr | 2026-01-08 00:15:18.608 |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/client.py", line 837, in parse_response
spotizerr | 2026-01-08 00:15:18.608 |     response = self._execute(conn, try_read)
spotizerr | 2026-01-08 00:15:18.608 |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/client.py", line 813, in _execute
spotizerr | 2026-01-08 00:15:18.608 |     return conn.retry.call_with_retry(
spotizerr | 2026-01-08 00:15:18.608 |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/retry.py", line 49, in call_with_retry
spotizerr | 2026-01-08 00:15:18.608 |     fail(error)
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/client.py", line 815, in <lambda>
spotizerr | 2026-01-08 00:15:18.608 |     lambda error: self._disconnect_raise_connect(conn, error),
spotizerr | 2026-01-08 00:15:18.608 |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/client.py", line 802, in _disconnect_raise_connect
spotizerr | 2026-01-08 00:15:18.608 |     raise error
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/retry.py", line 46, in call_with_retry
spotizerr | 2026-01-08 00:15:18.608 |     return do()
spotizerr | 2026-01-08 00:15:18.608 |            ^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/client.py", line 814, in <lambda>
spotizerr | 2026-01-08 00:15:18.608 |     lambda: command(*args, **kwargs),
spotizerr | 2026-01-08 00:15:18.608 |             ^^^^^^^^^^^^^^^^^^^^^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/client.py", line 835, in try_read
spotizerr | 2026-01-08 00:15:18.608 |     return conn.read_response(disconnect_on_error=False, push_request=True)
spotizerr | 2026-01-08 00:15:18.608 |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/connection.py", line 512, in read_response
spotizerr | 2026-01-08 00:15:18.608 |     response = self._parser.read_response(disable_decoding=disable_decoding)
spotizerr | 2026-01-08 00:15:18.608 |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/_parsers/resp2.py", line 15, in read_response
spotizerr | 2026-01-08 00:15:18.608 |     result = self._read_response(disable_decoding=disable_decoding)
spotizerr | 2026-01-08 00:15:18.608 |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/_parsers/resp2.py", line 25, in _read_response
spotizerr | 2026-01-08 00:15:18.608 |     raw = self._buffer.readline()
spotizerr | 2026-01-08 00:15:18.608 |           ^^^^^^^^^^^^^^^^^^^^^^^
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/_parsers/socket.py", line 115, in readline
spotizerr | 2026-01-08 00:15:18.608 |     self._read_from_socket()
spotizerr | 2026-01-08 00:15:18.608 |   File "/python/redis/_parsers/socket.py", line 68, in _read_from_socket
spotizerr | 2026-01-08 00:15:18.608 |     raise ConnectionError(SERVER_CLOSED_CONNECTION_ERROR)
spotizerr | 2026-01-08 00:15:18.608 | redis.exceptions.ConnectionError: Connection closed by server.
redis     | 2026-01-08 00:15:19.280 | 1:C 07 Jan 2026 17:15:19.280 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis     | 2026-01-08 00:15:19.280 | 1:C 07 Jan 2026 17:15:19.280 * Redis version=8.4.0, bits=64, commit=00000000, modified=1, pid=1, just started
redis     | 2026-01-08 00:15:19.280 | 1:C 07 Jan 2026 17:15:19.280 * Configuration loaded
redis     | 2026-01-08 00:15:19.282 | 1:M 07 Jan 2026 17:15:19.281 * monotonic clock: POSIX clock_gettime
redis     | 2026-01-08 00:15:19.284 | 1:M 07 Jan 2026 17:15:19.284 * Running mode=standalone, port=6379.
redis     | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.286 * Server initialized
redis     | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * Reading RDB base file on AOF loading...
redis     | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * Loading RDB produced by version 8.4.0
redis     | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * RDB age 41855 seconds
redis     | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * RDB memory usage when created 0.64 Mb
redis     | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * RDB is base AOF
redis     | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * Done loading RDB, keys loaded: 0, keys expired: 0.
redis     | 2026-01-08 00:15:19.288 | 1:M 07 Jan 2026 17:15:19.287 * DB loaded from base file appendonly.aof.1.base.rdb: 0.001 seconds
redis     | 2026-01-08 00:15:19.533 | 1:M 07 Jan 2026 17:15:19.533 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.245 seconds
redis     | 2026-01-08 00:15:19.533 | 1:M 07 Jan 2026 17:15:19.533 * DB loaded from append only file: 0.247 seconds
redis     | 2026-01-08 00:15:19.539 | 1:M 07 Jan 2026 17:15:19.539 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
redis     | 2026-01-08 00:15:19.539 | 1:M 07 Jan 2026 17:15:19.539 * Ready to accept connections tcp
redis     | 2026-01-08 00:15:26.780 | 1:signal-handler (1767806126) Received SIGTERM scheduling shutdown...
redis     | 2026-01-08 00:15:26.877 | 1:M 07 Jan 2026 17:15:26.876 * User requested shutdown...
redis     | 2026-01-08 00:15:26.877 | 1:M 07 Jan 2026 17:15:26.876 * Calling fsync() on the AOF file.
redis     | 2026-01-08 00:15:26.877 | 1:M 07 Jan 2026 17:15:26.877 * Saving the final RDB snapshot before exiting.
redis     | 2026-01-08 00:15:26.882 | 1:M 07 Jan 2026 17:15:26.882 * BGSAVE done, 1778 keys saved, 0 keys skipped, 226201 bytes written.
redis     | 2026-01-08 00:15:26.887 | 1:M 07 Jan 2026 17:15:26.886 * DB saved on disk
redis     | 2026-01-08 00:15:26.890 | 1:M 07 Jan 2026 17:15:26.890 # Redis is now ready to exit, bye bye...
redis     | 2026-01-08 00:15:27.401 | 1:C 07 Jan 2026 17:15:27.401 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis     | 2026-01-08 00:15:27.401 | 1:C 07 Jan 2026 17:15:27.401 * Redis version=8.4.0, bits=64, commit=00000000, modified=1, pid=1, just started
redis     | 2026-01-08 00:15:27.401 | 1:C 07 Jan 2026 17:15:27.401 * Configuration loaded
redis     | 2026-01-08 00:15:27.402 | 1:M 07 Jan 2026 17:15:27.401 * monotonic clock: POSIX clock_gettime
redis     | 2026-01-08 00:15:27.404 | 1:M 07 Jan 2026 17:15:27.403 * Running mode=standalone, port=6379.
redis     | 2026-01-08 00:15:27.405 | 1:M 07 Jan 2026 17:15:27.404 * Server initialized
redis     | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.406 * Reading RDB base file on AOF loading...
redis     | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * Loading RDB produced by version 8.4.0
redis     | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * RDB age 41863 seconds
redis     | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * RDB memory usage when created 0.64 Mb
redis     | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * RDB is base AOF
redis     | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * Done loading RDB, keys loaded: 0, keys expired: 0.
redis     | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * DB loaded from base file appendonly.aof.1.base.rdb: 0.001 seconds
redis     | 2026-01-08 00:15:27.674 | 1:M 07 Jan 2026 17:15:27.674 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.267 seconds
redis     | 2026-01-08 00:15:27.674 | 1:M 07 Jan 2026 17:15:27.674 * DB loaded from append only file: 0.268 seconds
redis     | 2026-01-08 00:15:27.678 | 1:M 07 Jan 2026 17:15:27.678 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
redis     | 2026-01-08 00:15:27.678 | 1:M 07 Jan 2026 17:15:27.678 * Ready to accept connections tcp

Version
spotizerrphoenix/spotizerr: v4.0.15

**Describe the bug** When downloading a huge playlist, the app just crashes. Using a premium account, with no memory restrictions, the playlist song count is 822 songs. **To Reproduce** Precise steps to reproduce the behavior (start from how you built your container): 1. Search for '...' 2. Click on playlist 'https://open.spotify.com/playlist/3DPReHzvDAvvvHZz4hNRtC?si=mqo6pKqBQmmh_-Y671gE5A&pt=c2bb26045e21b1007076cf7f3f6e4ad6&pi=RvHaMMP3RoOTD' 3. App crashes. *Note: Sometimes, Server not Responding, sometimes Timeout, sometimes the app runs fine, but download is not downloading. * **Expected behavior** Downloads the whole playlist, albeit taking a while. **Desktop (please complete the following information):** - OS: Windows 11 - Browser: Chrome **docker-compose.yaml** ``` # HEY, YOU! READ THE DOCS BEFORE YOU DO ANYTHING! # https://spotizerr.rtfd.io name: spotizerr services: spotizerr: image: spotizerrphoenix/spotizerr user: "1000:1000" # Spotizerr user:group ids volumes: # Ensure these directories and the .cache file exist and are writable by the container user - ./data:/app/data # data directory, contains config, creds, watch, history - ./downloads:/app/downloads # downloads directory, contains downloaded files - ./logs:/app/logs # logs directory, contains logs - ./.cache:/app/.cache # cache file ports: # Port to expose the app on - 7171:7171 container_name: spotizerr-app restart: unless-stopped env_file: # Ensure you have a .env file in the root of the project, with the correct values - .env depends_on: - redis redis: image: redis:alpine container_name: spotizerr-redis restart: unless-stopped env_file: - .env volumes: - redis-data:/data command: sh -c 'redis-server --requirepass "$REDIS_PASSWORD" --appendonly yes' volumes: redis-data: driver: local ``` **.env** ``` ### ### Main configuration file of the server. If you ### plan to have this only for personal use, you ### can leave the defaults as they are. ### ### If you plan on using for a server, ### see https://spotizerr.rtfd.io ### # Interface to bind to. Unless you know what you're doing, don't change this HOST=0.0.0.0 # Redis connection (external or internal). REDIS_HOST=redis REDIS_PORT=6379 REDIS_DB=0 REDIS_PASSWORD= # Set to true to filter out explicit content. EXPLICIT_FILTER=false # Optional: Sets the default file permissions for newly created files within the container. UMASK=0022 # Whether to setup file permissions on startup. May improve performance on remote/slow filesystems SKIP_SET_PERMISSIONS=false ### ### Multi-user settings, disabled by default. ### # Enable authentication (i.e. multi-user mode). ENABLE_AUTH=false # Basic Authentication settings. JWT_SECRET=long-random-text # How much a session persists, in hours. 720h = 30 days. JWT_EXPIRATION_HOURS=720 # Default admins creds, please change the password or delete this account after you create your own DEFAULT_ADMIN_USERNAME= DEFAULT_ADMIN_PASSWORD= # Whether to allow new users to register themselves or leave that only available for admins DISABLE_REGISTRATION=false # SSO Configuration SSO_ENABLED=true SSO_BASE_REDIRECT_URI=http://127.0.0.1:7171/api/auth/sso/callback FRONTEND_URL=http://127.0.0.1:7171 # Google SSO (get from Google Cloud Console) GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= # GitHub SSO (get from GitHub Developer Settings) GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= ``` **Config** ``` { "service": "spotify", "version": "3.3.1", "spotify": "spotify premium", "deezer": "", "fallback": false, "spotifyQuality": "HIGH", "deezerQuality": "MP3_320", "realTime": false, "customDirFormat": "Spotizerr/%playlist%", "customTrackFormat": "%music%_%artist_1%", "tracknumPadding": true, "saveCover": true, "maxConcurrentDownloads": 3, "utilityConcurrency": 1, "librespotConcurrency": 1, "maxRetries": 10, "retryDelaySeconds": 2, "retryDelayIncrease": 0, "convertTo": "MP3", "bitrate": "", "artistSeparator": "; ", "recursiveQuality": false, "spotifyMetadata": true, "separateTracksByUser": false, "watch": { "enabled": false, "watchPollIntervalSeconds": 3600, "maxTracksPerRun": 50, "watchedArtistAlbumGroup": [ "album", "single" ], "delayBetweenPlaylistsSeconds": 2, "delayBetweenArtistsSeconds": 5, "useSnapshotIdChecking": true, "maxItemsPerRun": 50 }, "realTimeMultiplier": 10, "padNumberWidth": 3, "sseUpdateIntervalSeconds": 1, "warning": "Global Spotify API credentials are not fully configured or file is missing.", "explicitFilter": false } ``` **Logs** ``` redis | 2026-01-08 00:15:18.306 | 1:signal-handler (1767806118) Received SIGTERM scheduling shutdown... redis | 2026-01-08 00:15:18.360 | 1:M 07 Jan 2026 17:15:18.359 * User requested shutdown... redis | 2026-01-08 00:15:18.361 | 1:M 07 Jan 2026 17:15:18.361 * Calling fsync() on the AOF file. redis | 2026-01-08 00:15:18.361 | 1:M 07 Jan 2026 17:15:18.361 * Saving the final RDB snapshot before exiting. redis | 2026-01-08 00:15:18.379 | 1:M 07 Jan 2026 17:15:18.378 * BGSAVE done, 1778 keys saved, 0 keys skipped, 226126 bytes written. redis | 2026-01-08 00:15:18.388 | 1:M 07 Jan 2026 17:15:18.388 * DB saved on disk redis | 2026-01-08 00:15:18.393 | 1:M 07 Jan 2026 17:15:18.393 # Redis is now ready to exit, bye bye... spotizerr | 2026-01-08 00:15:18.608 | 2026-01-07 17:15:18 [ERROR] SSE Redis Subscriber: Fatal error: Connection closed by server. spotizerr | 2026-01-08 00:15:18.608 | Traceback (most recent call last): spotizerr | 2026-01-08 00:15:18.608 | File "/app/routes/system/progress.py", line 179, in redis_subscriber_thread spotizerr | 2026-01-08 00:15:18.608 | for message in pubsub.listen(): spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/client.py", line 998, in listen spotizerr | 2026-01-08 00:15:18.608 | response = self.handle_message(self.parse_response(block=True)) spotizerr | 2026-01-08 00:15:18.608 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/client.py", line 837, in parse_response spotizerr | 2026-01-08 00:15:18.608 | response = self._execute(conn, try_read) spotizerr | 2026-01-08 00:15:18.608 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/client.py", line 813, in _execute spotizerr | 2026-01-08 00:15:18.608 | return conn.retry.call_with_retry( spotizerr | 2026-01-08 00:15:18.608 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/retry.py", line 49, in call_with_retry spotizerr | 2026-01-08 00:15:18.608 | fail(error) spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/client.py", line 815, in <lambda> spotizerr | 2026-01-08 00:15:18.608 | lambda error: self._disconnect_raise_connect(conn, error), spotizerr | 2026-01-08 00:15:18.608 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/client.py", line 802, in _disconnect_raise_connect spotizerr | 2026-01-08 00:15:18.608 | raise error spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/retry.py", line 46, in call_with_retry spotizerr | 2026-01-08 00:15:18.608 | return do() spotizerr | 2026-01-08 00:15:18.608 | ^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/client.py", line 814, in <lambda> spotizerr | 2026-01-08 00:15:18.608 | lambda: command(*args, **kwargs), spotizerr | 2026-01-08 00:15:18.608 | ^^^^^^^^^^^^^^^^^^^^^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/client.py", line 835, in try_read spotizerr | 2026-01-08 00:15:18.608 | return conn.read_response(disconnect_on_error=False, push_request=True) spotizerr | 2026-01-08 00:15:18.608 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/connection.py", line 512, in read_response spotizerr | 2026-01-08 00:15:18.608 | response = self._parser.read_response(disable_decoding=disable_decoding) spotizerr | 2026-01-08 00:15:18.608 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/_parsers/resp2.py", line 15, in read_response spotizerr | 2026-01-08 00:15:18.608 | result = self._read_response(disable_decoding=disable_decoding) spotizerr | 2026-01-08 00:15:18.608 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/_parsers/resp2.py", line 25, in _read_response spotizerr | 2026-01-08 00:15:18.608 | raw = self._buffer.readline() spotizerr | 2026-01-08 00:15:18.608 | ^^^^^^^^^^^^^^^^^^^^^^^ spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/_parsers/socket.py", line 115, in readline spotizerr | 2026-01-08 00:15:18.608 | self._read_from_socket() spotizerr | 2026-01-08 00:15:18.608 | File "/python/redis/_parsers/socket.py", line 68, in _read_from_socket spotizerr | 2026-01-08 00:15:18.608 | raise ConnectionError(SERVER_CLOSED_CONNECTION_ERROR) spotizerr | 2026-01-08 00:15:18.608 | redis.exceptions.ConnectionError: Connection closed by server. redis | 2026-01-08 00:15:19.280 | 1:C 07 Jan 2026 17:15:19.280 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo redis | 2026-01-08 00:15:19.280 | 1:C 07 Jan 2026 17:15:19.280 * Redis version=8.4.0, bits=64, commit=00000000, modified=1, pid=1, just started redis | 2026-01-08 00:15:19.280 | 1:C 07 Jan 2026 17:15:19.280 * Configuration loaded redis | 2026-01-08 00:15:19.282 | 1:M 07 Jan 2026 17:15:19.281 * monotonic clock: POSIX clock_gettime redis | 2026-01-08 00:15:19.284 | 1:M 07 Jan 2026 17:15:19.284 * Running mode=standalone, port=6379. redis | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.286 * Server initialized redis | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * Reading RDB base file on AOF loading... redis | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * Loading RDB produced by version 8.4.0 redis | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * RDB age 41855 seconds redis | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * RDB memory usage when created 0.64 Mb redis | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * RDB is base AOF redis | 2026-01-08 00:15:19.287 | 1:M 07 Jan 2026 17:15:19.287 * Done loading RDB, keys loaded: 0, keys expired: 0. redis | 2026-01-08 00:15:19.288 | 1:M 07 Jan 2026 17:15:19.287 * DB loaded from base file appendonly.aof.1.base.rdb: 0.001 seconds redis | 2026-01-08 00:15:19.533 | 1:M 07 Jan 2026 17:15:19.533 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.245 seconds redis | 2026-01-08 00:15:19.533 | 1:M 07 Jan 2026 17:15:19.533 * DB loaded from append only file: 0.247 seconds redis | 2026-01-08 00:15:19.539 | 1:M 07 Jan 2026 17:15:19.539 * Opening AOF incr file appendonly.aof.1.incr.aof on server start redis | 2026-01-08 00:15:19.539 | 1:M 07 Jan 2026 17:15:19.539 * Ready to accept connections tcp redis | 2026-01-08 00:15:26.780 | 1:signal-handler (1767806126) Received SIGTERM scheduling shutdown... redis | 2026-01-08 00:15:26.877 | 1:M 07 Jan 2026 17:15:26.876 * User requested shutdown... redis | 2026-01-08 00:15:26.877 | 1:M 07 Jan 2026 17:15:26.876 * Calling fsync() on the AOF file. redis | 2026-01-08 00:15:26.877 | 1:M 07 Jan 2026 17:15:26.877 * Saving the final RDB snapshot before exiting. redis | 2026-01-08 00:15:26.882 | 1:M 07 Jan 2026 17:15:26.882 * BGSAVE done, 1778 keys saved, 0 keys skipped, 226201 bytes written. redis | 2026-01-08 00:15:26.887 | 1:M 07 Jan 2026 17:15:26.886 * DB saved on disk redis | 2026-01-08 00:15:26.890 | 1:M 07 Jan 2026 17:15:26.890 # Redis is now ready to exit, bye bye... redis | 2026-01-08 00:15:27.401 | 1:C 07 Jan 2026 17:15:27.401 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo redis | 2026-01-08 00:15:27.401 | 1:C 07 Jan 2026 17:15:27.401 * Redis version=8.4.0, bits=64, commit=00000000, modified=1, pid=1, just started redis | 2026-01-08 00:15:27.401 | 1:C 07 Jan 2026 17:15:27.401 * Configuration loaded redis | 2026-01-08 00:15:27.402 | 1:M 07 Jan 2026 17:15:27.401 * monotonic clock: POSIX clock_gettime redis | 2026-01-08 00:15:27.404 | 1:M 07 Jan 2026 17:15:27.403 * Running mode=standalone, port=6379. redis | 2026-01-08 00:15:27.405 | 1:M 07 Jan 2026 17:15:27.404 * Server initialized redis | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.406 * Reading RDB base file on AOF loading... redis | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * Loading RDB produced by version 8.4.0 redis | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * RDB age 41863 seconds redis | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * RDB memory usage when created 0.64 Mb redis | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * RDB is base AOF redis | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * Done loading RDB, keys loaded: 0, keys expired: 0. redis | 2026-01-08 00:15:27.407 | 1:M 07 Jan 2026 17:15:27.407 * DB loaded from base file appendonly.aof.1.base.rdb: 0.001 seconds redis | 2026-01-08 00:15:27.674 | 1:M 07 Jan 2026 17:15:27.674 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.267 seconds redis | 2026-01-08 00:15:27.674 | 1:M 07 Jan 2026 17:15:27.674 * DB loaded from append only file: 0.268 seconds redis | 2026-01-08 00:15:27.678 | 1:M 07 Jan 2026 17:15:27.678 * Opening AOF incr file appendonly.aof.1.incr.aof on server start redis | 2026-01-08 00:15:27.678 | 1:M 07 Jan 2026 17:15:27.678 * Ready to accept connections tcp ``` **Version** spotizerrphoenix/spotizerr: v4.0.15
Contributor

I have the same problem. After downloading a lot of songs, the app starts to struggle. I think it's because of redis. Found a temporary fix. Flush the cache of your redis container.

  1. redis-cli
  2. auth your-password
  3. flushall
I have the same problem. After downloading a lot of songs, the app starts to struggle. I think it's because of redis. Found a temporary fix. Flush the cache of your redis container. 1. redis-cli 2. auth your-password 3. flushall
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
spotizerrphoenix/spotizerr-phoenix#30
No description provided.