Herbouw fout door hiredis

I, [2025-07-23T07:29:09.853446 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
TypeError: wrong argument type Integer (expected String) (TypeError)

        _write(command)
               ^^^^^^^
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/hiredis-client-0.25.1/lib/redis_client/hiredis_connection.rb:121:in `_write'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/hiredis-client-0.25.1/lib/redis_client/hiredis_connection.rb:121:in `block in write_multi'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/hiredis-client-0.25.1/lib/redis_client/hiredis_connection.rb:120:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/hiredis-client-0.25.1/lib/redis_client/hiredis_connection.rb:120:in `write_multi'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client/connection_mixin.rb:48:in `call_pipelined'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:798:in `block in connect'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client/middlewares.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:797:in `connect'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:759:in `raw_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:719:in `ensure_connected'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-client-0.25.1/lib/redis_client.rb:314:in `call_v'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/client.rb:90:in `call_v'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:152:in `block in send_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:151:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis.rb:151:in `send_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/redis-5.4.0/lib/redis/commands/server.rb:90:in `info'
/var/www/discourse/lib/discourse_redis.rb:38:in `public_send'
/var/www/discourse/lib/discourse_redis.rb:38:in `block in method_missing'
/var/www/discourse/lib/discourse_redis.rb:29:in `ignore_readonly'
/var/www/discourse/lib/discourse_redis.rb:38:in `method_missing'
/var/www/discourse/config/initializers/001-redis.rb:9:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:693:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:693:in `block in load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2/lib/active_support/notifications.rb:212:in `instrument'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:692:in `load_config_initializer'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:646:in `block (2 levels) in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:645:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/engine.rb:645:in `block in <class:Engine>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:32:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:32:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:61:in `block in run_initializers'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:50:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:50:in `tsort_each_child'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:60:in `run_initializers'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/application.rb:440:in `initialize!'
/var/www/discourse/config/environment.rb:7:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34:in `require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/application.rb:416:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-8.0.2/lib/rails/application.rb:567:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.3.0/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
I, [2025-07-23T07:29:12.543604 #1]  INFO -- : gem install aws-sdk-translate -v 1.35.0 -i /var/www/discourse/plugins/discourse-translator/gems/3.3.8 --no-document --ignore-dependencies --no-user-install
Successfully installed aws-sdk-translate-1.35.0
1 gem installed



FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 883 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1



Possible causes: PERF: switch redis driver to hiredis by SamSaffron · Pull Request #33773 · discourse/discourse · GitHub

1 like

Bedankt voor je melding, ik zal voorlopig terugkomen, maar kun je ons iets meer vertellen over hoe Redis is geconfigureerd in je omgeving? Is dit een multi-container setup?

ja, multi-container-setup. redis is een aparte container.

welke versie is het? Ik vermoed dat het een oude versie van redis is die hiredis niet ondersteunt.

redis:7.4.3

1 like

Any chance you can help out and report this to GitHub · Where software is built ?

Ideally a repro would be something that:

  1. Runs the docker container for your redis. (and share with byroot for easy debugging)
  2. Runs something like this against your config:
require 'hiredis-client'
require 'redis-client'
require 'redis'
Redis.new(... <- your IP etc..).info 

.info should explode that is what we were running.

Ik raad aan om geen env toe te voegen, want je vergeet het uiteindelijk
Bouw in plaats daarvan gewoon opnieuw, dit is voorlopig teruggedraaid