Launcher fails: line 334: NULL-Byte ignored

Der aktuelle Rebuild der Web-App schlägt mit diesem Fehler fehl:

root@docker2:/var/discourse# ./launcher stop web_only && ./launcher rebuild data && ./launcher rebuild web_only
x86_64 arch detected.
+ /usr/bin/docker stop -t 600 web_only
web_only
x86_64 arch detected.
Ensuring launcher is up to date
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 data
data
./launcher: Zeile 334: Warnung: Kommandoersetzung: NULL-Byte in der Eingabe ignoriert.
2.0.20240825-0027: Pulling from discourse/base
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Status: Image is up to date for discourse/base:2.0.20240825-0027
docker.io/discourse/base:2.0.20240825-0027
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2024-10-04T15:54:02.326983 #1]  INFO -- : Reading from stdin
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/cli.rb:54:in `split': invalid byte sequence in UTF-8 (ArgumentError)

        split = conf.split("_FILE_SEPERATOR_")
                           ^^^^^^^^^^^^^^^^^^
        from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/cli.rb:54:in `run'
        from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/bin/pups:9:in `<top (required)>'
        from /usr/local/bin/pups:25:in `load'
        from /usr/local/bin/pups:25:in `<main>'
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

Irgendwelche Ideen, wie man das beheben kann? Mein Forum ist nach diesem Redeployment derzeit nicht verfügbar :worried:

1 „Gefällt mir“

Sie sollten es mit folgendem Befehl wieder hochfahren können:

./launcher start app

Damit wird der alte Container neu gestartet.

Ich weiß nicht, was das eigentliche Problem sein könnte, aber es könnte eine Regression sein.

In diesem Fall sind web_only und data getrennte Container und der Start des web_only-Containers schlägt mit

oot@docker2:/var/discourse# ./launcher start web_only
x86_64 arch detected.

starting up existing container
+ /usr/bin/docker start web_only
Error response from daemon: Cannot link to a non running container: /data AS /web_only/data
Error: failed to start containers: web_only

Vielleicht muss ich in diesem Fall manuell über Docker starten, da die Datenbank extern auf einem anderen Rechner liegt, siehe diesen Code im web_only YAML:

 ## connect to central postgres database
  DISCOURSE_DB_SOCKET: ''
  DISCOURSE_DB_USERNAME: discourse
  DISCOURSE_DB_PASSWORD: xxxxxxxxxx
  DISCOURSE_DB_HOST: 10.10.xx.xx
  DISCOURSE_REDIS_HOST: data

Entschuldigung. Das wusste ich nicht (oder habe es vielleicht nicht sorgfältig gelesen).

Dann musst du

./launcher destroy web_only;./launcher start web_only

Es sei denn, du hast eine Bereinigung durchgeführt, die den Container gelöscht hat, in diesem Fall hast du wahrscheinlich ein Problem.

Dann wundert es mich, die Fehlermeldung “cannot link” zu sehen. Ich habe sie nur gesehen, wenn versucht wird, einen Docker link zu verwenden, um mit einem anderen Container auf derselben Maschine zu sprechen.

Oh! Ja, es ist Redis, mit dem es keine Verbindung herstellen kann. Du hast einen data-Container mit Redis darin, richtig? Das Destroy-Start sollte mit der angegebenen Einschränkung funktionieren.

@pfaffman danke, das hat es behoben. Ich habe vergessen, dass der Datencontainer auch die Redis-Caching-Funktionalität bereitstellt – aber auf jeden Fall laufen die Container jetzt wieder.

Was können wir mit dem Bootstrap-Fehler aus dem Launcher-Skript, Zeile 334, machen? Ich habe diesen Fehler noch nie zuvor gesehen. Ist der launcher_go/v2 als Ersatz einsatzbereit?

330 set_template_info() {
    331     templates=$(find_templates $config_file)
    332
    333     arrTemplates=(${templates// / })
    334     config_data=$(cat $config_file)
    335
    336     input="hack: true"
    337
    338     for template in "${arrTemplates[@]}"
    339     do
    340       [ ! -z $template ] && {
    341         input="$input _FILE_SEPERATOR_ $(cat $template)"
    342       }
    343     done
    344
1 „Gefällt mir“

Dies ist nicht der Fehler, sondern nur eine Warnung

Dies ist der Fehler.

Mir scheint, Ihre web-app.yml könnte beschädigt sein.

2 „Gefällt mir“

jawohl:

root@docker2:/var/discourse/containers# yamllint web_only.yml
web_only.yml
  5:81      error    Zeile zu lang (115 > 80 Zeichen)  (line-length)
  8:1       warning  fehlender Dokumentenstart "---"  (document-start)
  14:4      warning  fehlendes Leerzeichen am Anfang des Kommentars  (comments)
  14:3      warning  Kommentar nicht wie Inhalt eingerückt  (comments-indentation)
  15:4      warning  fehlendes Leerzeichen am Anfang des Kommentars  (comments)
  18:81     error    Zeile zu lang (85 > 80 Zeichen)  (line-length)
  36:3      warning  Kommentar nicht wie Inhalt eingerückt  (comments-indentation)
  37:4      warning  fehlendes Leerzeichen am Anfang des Kommentars  (comments)
  43:81     error    Zeile zu lang (85 > 80 Zeichen)  (line-length)
  44:81     error    Zeile zu lang (87 > 80 Zeichen)  (line-length)
  58:81     error    Zeile zu lang (84 > 80 Zeichen)  (line-length)
  67:81     error    Zeile zu lang (90 > 80 Zeichen)  (line-length)
  68:4      warning  fehlendes Leerzeichen am Anfang des Kommentars  (comments)
  77:81     error    Zeile zu lang (83 > 80 Zeichen)  (line-length)
  79:4      warning  fehlendes Leerzeichen am Anfang des Kommentars  (comments)
  99:81     error    Zeile zu lang (81 > 80 Zeichen)  (line-length)
  110:81    error    Zeile zu lang (81 > 80 Zeichen)  (line-length)
  117:81    error    Zeile zu lang (81 > 80 Zeichen)  (line-length)
  126:43    error    nachgestellte Leerzeichen  (trailing-spaces)
  151:4     warning  fehlendes Leerzeichen am Anfang des Kommentars  (comments)
  154:4     warning  fehlendes Leerzeichen am Anfang des Kommentars  (comments)
  155:4     warning  fehlendes Leerzeichen am Anfang des Kommentars  (comments)
  156:4     warning  fehlendes Leerzeichen am Anfang des Kommentars  (comments)
  156:81    error    Zeile zu lang (131 > 80 Zeichen)  (line-length)

Das muss definitiv aufgeräumt werden :wink: