Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Playback starts with a random song after playlist is reloaded when reload_mode is 'watch' and mode is 'normal' #4316

Open
iSerganov opened this issue Jan 14, 2025 · 2 comments
Labels

Comments

@iSerganov
Copy link

iSerganov commented Jan 14, 2025

Description

After playlist is being reloaded, playback starts with incorrect song (not sure if it is a coincidence, but in my cases it is always the last pre-fetched song).

Steps to reproduce

Playlist definition in .liq script:

# not sure if it impacts somehow the described behavior, however I use external cue_file as you may see below
%include "/etc/liquidsoap/autocue.cue_file.liq"
ignore(check_autocue_setup(shutdown=true, print=true))
enable_autocue_metadata()

settings.request.prefetch := 3
myplaylist = playlist("/playlist.pls",reload_mode="watch",mode="normal")
# apply loudness normalization
radio = amplify(1., override="liq_amplify", myplaylist)

The issue doesn't occur in 100% cases, however after a few playlist.pls updates it always occurs.
I have 3 identical pods with the same .liq script and same /playlist.pls running in K8s cluster. When I run simultaneous update of the playlist in all of them - I always get incorrect start song in at least one of them.

  1. Run the above setup with some valid .pls playlist.
  2. Make changes to /playlist.pls
  3. Playback will be reloaded and playback starts from track number 3.
  4. After track number 3 finishes LS proceeds with track number 1 and continues to play in normal order.

Expected behavior

When playlist is defined as follows:
myplaylist = playlist("/playlist.pls",reload_mode="watch",mode="normal")

after any update made to /playlist.pls playback must always start with the track number 1 in the updated /playlist.pls file

Liquidsoap version

Liquidsoap 2.3.0
Copyright (c) 2003-2024 Savonet team
Liquidsoap is open-source software, released under GNU General Public License.
See <http://liquidsoap.info> for more information.

Liquidsoap build config

* Liquidsoap version  : 2.3.0

 * Compilation options
   - Release build       : true
   - Git SHA             : (none)
   - OCaml version       : 4.14.2
   - OS type             : Unix
   - Libs versions       : alsa=0.3.0 angstrom=0.16.1 ao=0.2.4 asetmap=0.8.1 asn1-combinators=0.3.2 astring=0.8.5 base=v0.16.3 base.base_internalhash_types=v0.16.3 base.caml=v0.16.3 base.shadow_stdlib=v0.16.3 base64=3.5.1 bigarray=[distributed with Ocaml] bigarray-compat=1.1.0 bigstringaf=0.10.0 bjack=0.1.6 bos=0.2.1 bytes=[distributed with OCaml 4.02 or above] ca-certs=v1.0.0 camlp-streams camomile.lib=2.0 cohttp=5.3.1 cohttp-lwt=5.3.0 cohttp-lwt-unix=5.3.0 conduit=7.1.0 conduit-lwt=7.1.0 conduit-lwt-unix=7.1.0 cry=1.0.3 cstruct=6.2.0 ctypes=0.23.0 ctypes-foreign=0.23.0 ctypes.stubs=0.23.0 curl=0.9.2 digestif.c=1.2.0 domain-name=0.4.0 domain_shims dssi=0.1.5 dtools=0.4.5 dune-build-info=3.16.1 dune-private-libs.dune-section=3.16.1 dune-site=3.16.1 dune-site.private=3.16.1 duppy=0.9.4 eqaf=0.10 faad=0.5.2 fdkaac=0.3.3 ffmpeg-av=1.2.1 ffmpeg-avcodec=1.2.1 ffmpeg-avdevice=1.2.1 ffmpeg-avfilter=1.2.1 ffmpeg-avutil=1.2.1 ffmpeg-swresample=1.2.1 ffmpeg-swscale=1.2.1 fileutils=0.6.4 flac=0.5.1 flac.decoder=0.5.1 flac.ogg=0.5.1 fmt=0.9.0 fpath=0.7.3 frei0r=0.1.2 gd=1.1 gen=1.1 gmap=0.3.0 inotify=v2.6 integers ipaddr=5.6.0 ipaddr-sexp=5.6.0 ipaddr.unix=5.6.0 irc-client irc-client-unix kdf.hkdf=1.0.0 kdf.pbkdf=1.0.0 ladspa=0.2.2 lame=0.3.7 lastfm=0.3.4 lilv=0.2.0 liquidsoap-lang=2.3.0 liquidsoap-lang.console=2.3.0 liquidsoap_alsa=v2.3.0-2-g658a641 liquidsoap_ao=v2.3.0-2-g658a641 liquidsoap_bjack=v2.3.0-2-g658a641 liquidsoap_builtins=v2.3.0-2-g658a641 liquidsoap_core=v2.3.0-2-g658a641 liquidsoap_dssi=v2.3.0-2-g658a641 liquidsoap_faad=v2.3.0-2-g658a641 liquidsoap_fdkaac=v2.3.0-2-g658a641 liquidsoap_ffmpeg=v2.3.0-2-g658a641 liquidsoap_flac=v2.3.0-2-g658a641 liquidsoap_frei0r=v2.3.0-2-g658a641 liquidsoap_gd=v2.3.0-2-g658a641 liquidsoap_irc=v2.3.0-2-g658a641 liquidsoap_ladspa=v2.3.0-2-g658a641 liquidsoap_lame=v2.3.0-2-g658a641 liquidsoap_lastfm=v2.3.0-2-g658a641 liquidsoap_lilv=v2.3.0-2-g658a641 liquidsoap_lo=v2.3.0-2-g658a641 liquidsoap_mad=v2.3.0-2-g658a641 liquidsoap_ndi=v2.3.0-2-g658a641 liquidsoap_ogg=v2.3.0-2-g658a641 liquidsoap_ogg_flac=v2.3.0-2-g658a641 liquidsoap_optionals=v2.3.0-2-g658a641 liquidsoap_opus=v2.3.0-2-g658a641 liquidsoap_osc=v2.3.0-2-g658a641 liquidsoap_oss=v2.3.0-2-g658a641 liquidsoap_portaudio=v2.3.0-2-g658a641 liquidsoap_posix_time=v2.3.0-2-g658a641 liquidsoap_prometheus=v2.3.0-2-g658a641 liquidsoap_pulseaudio=v2.3.0-2-g658a641 liquidsoap_runtime=v2.3.0-2-g658a641 liquidsoap_samplerate=v2.3.0-2-g658a641 liquidsoap_sdl=v2.3.0-2-g658a641 liquidsoap_sdl_log_level=v2.3.0-2-g658a641 liquidsoap_shine=v2.3.0-2-g658a641 liquidsoap_soundtouch=v2.3.0-2-g658a641 liquidsoap_speex=v2.3.0-2-g658a641 liquidsoap_sqlite=v2.3.0-2-g658a641 liquidsoap_srt=v2.3.0-2-g658a641 liquidsoap_ssl=v2.3.0-2-g658a641 liquidsoap_stereotool=v2.3.0-2-g658a641 liquidsoap_theora=v2.3.0-2-g658a641 liquidsoap_tls=v2.3.0-2-g658a641 liquidsoap_vorbis=v2.3.0-2-g658a641 liquidsoap_xmlplaylist=v2.3.0-2-g658a641 liquidsoap_yaml=v2.3.0-2-g658a641 lo=0.2.0 logs=0.7.0 logs.fmt=0.7.0 logs.lwt=0.7.0 lwt lwt.unix macaddr=5.6.0 mad=0.5.3 magic-mime=1.3.1 mem_usage=0.1.1 memtrace=0.2.3 menhirLib=20240715 metadata=0.3.0 mirage-crypto=1.1.0 mirage-crypto-ec=1.1.0 mirage-crypto-pk=1.1.0 mirage-crypto-rng=1.1.0 mirage-crypto-rng.unix=1.1.0 mm=0.8.6 mm.audio=0.8.6 mm.base=0.8.6 mm.image=0.8.6 mm.midi=0.8.6 mm.video=0.8.6 ndi=v2.3.0-2-g658a641 ocplib-endian ocplib-endian.bigstring ogg=0.7.4 ogg.decoder=0.7.4 ohex opus=0.2.3 opus.decoder=0.2.3 osc osc-unix portaudio=0.2.3 posix-base=5a7f328 posix-socket=5a7f328 posix-socket.constants=5a7f328 posix-socket.stubs=5a7f328 posix-socket.types=5a7f328 posix-time2=5a7f328 posix-time2.constants=5a7f328 posix-time2.stubs=5a7f328 posix-time2.types=5a7f328 posix-types=5a7f328 posix-types.constants=5a7f328 ppx_compare.runtime-lib=v0.16.0 ppx_hash.runtime-lib=v0.16.0 ppx_sexp_conv.runtime-lib=v0.16.0 prometheus=1.2 prometheus-app=1.2 ptime=1.2.0 ptime.clock=1.2.0 ptime.clock.os=1.2.0 pulseaudio=0.1.6 re=1.12.0 result=1.5 rresult=0.7.0 samplerate=0.1.7 saturn_lockfree=0.4.1 sedlex=3.3 seq=[distributed with OCaml 4.07 or above] sexplib0=v0.16.0 shine=0.2.3 soundtouch=0.1.9 speex=0.4.2 speex.decoder=0.4.2 sqlite3=5.2.0 srt=0.3.1 srt.constants=0.3.1 srt.stubs=0.3.1 srt.stubs.locked=0.3.1 srt.types=0.3.1 ssl=0.7.0 stdlib-shims=0.3.0 stereotool=v2.3.0-2-g658a641 str=[distributed with Ocaml] stringext=1.6.0 theora=0.4.1 theora.decoder=0.4.1 threads=[distributed with Ocaml] threads.posix=[internal] tls=1.0.2 tsdl=v1.1.0 tsdl-image=0.5 tsdl-ttf=0.6 unix=[distributed with Ocaml] unix-errno=52c6ecb unix-errno.errno_bindings=52c6ecb unix-errno.errno_types=52c6ecb unix-errno.errno_types_detected=52c6ecb unix-errno.unix=52c6ecb uri=4.4.0 uri-sexp=4.4.0 uri.services=4.4.0 vorbis=0.8.1 vorbis.decoder=0.8.1 x509=1.0.5 xmlm=1.4.0 xmlplaylist=0.1.5 yaml=3.2.0 yaml.bindings=3.2.0 yaml.bindings.types=3.2.0 yaml.c=3.2.0 yaml.ffi=3.2.0 yaml.types=3.2.0 zarith=1.14
   - architecture        : amd64
   - host                : x86_64-pc-linux-gnu
   - target              : x86_64-pc-linux-gnu
   - system              : linux
   - ocamlopt_cflags     : -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC
   - native_c_compiler   : gcc -O2 -fno-strict-aliasing -fwrapv -pthread -fPIC -D_FILE_OFFSET_BITS=64
   - native_c_libraries  : -lm

 * Configured paths
   - mode              : posix
   - standard library  : /usr/share/liquidsoap/libs
   - scripted binaries : /usr/share/liquidsoap/bin
   - rundir            : /var/run/liquidsoap
   - logdir            : /var/log/liquidsoap
   - user cache        : $HOME/.cache/liquidsoap (override with $LIQ_CACHE_USER_DIR)
   - system cache      : /var/cache/liquidsoap (override with $LIQ_CACHE_SYSTEM_DIR)
   - camomile files    : /usr/share/liquidsoap/camomile

 * Supported input formats
   - MP3               : yes
   - AAC               : yes
   - Ffmpeg            : yes
   - Flac (native)     : yes
   - Flac (ogg)        : yes
   - Opus              : yes
   - Speex             : yes
   - Theora            : yes
   - Vorbis            : yes
   - WAV/AIFF          : yes (native)

 * Supported output formats
   - FDK-AAC           : yes
   - FFmpeg            : yes
   - MP3               : yes
   - MP3 (fixed-point) : yes
   - Flac (native)     : yes
   - Flac (ogg)        : yes
   - Opus              : yes
   - Speex             : yes
   - Theora            : yes
   - Vorbis            : yes
   - WAV/AIFF          : yes (native)

 * Tags
   - AAC               : yes
   - FFmpeg            : yes
   - FLAC (native)     : yes
   - Flac (ogg)        : yes
   - Native decoder    : yes
   - Vorbis            : yes

 * Input / output
   - ALSA              : yes
   - AO                : yes
   - FFmpeg            : yes
   - JACK              : yes
   - NDI               : yes
   - OSS               : yes
   - Portaudio         : yes
   - Pulseaudio        : yes
   - SRT               : yes

 * Audio manipulation
   - FFmpeg            : yes
   - LADSPA            : yes
   - Lilv              : yes
   - Samplerate        : yes
   - SoundTouch        : yes
   - StereoTool        : yes

 * Video manipulation
   - camlimages        : no (requires camlimages)
   - FFmpeg            : yes
   - frei0r            : yes
   - ImageLib          : no (requires imagelib)
   - SDL               : yes

 * MIDI manipulation
   - DSSI              : yes

 * Visualization
   - GD                : yes
   - Graphics          : no (requires graphics)
   - SDL               : yes

 * Additional libraries
   - FFmpeg filters    : yes
   - FFmpeg devices    : yes
   - inotify           : yes
   - irc               : yes
   - jemalloc          : no (requires jemalloc)
   - lastfm            : yes
   - lo                : yes
   - memtrace          : yes
   - osc               : yes
   - ssl               : yes
   - sqlite3           : yes
   - tls               : yes
   - posix-time2       : yes
   - windows service   : no (requires winsvc)
   - YAML support      : yes
   - XML playlists     : yes

 * Monitoring
   - Prometheus        : yes

Installation method

From official container image

Additional Info

No response

@iSerganov iSerganov added the bug label Jan 14, 2025
@vitoyucepi
Copy link
Collaborator

Looks similar to #3343.

@iSerganov
Copy link
Author

Indeed, seems to be a long-existing issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants