We are using sequel 4.49.0 with delayed_job 4.1.9.
Ubuntu 20.04
Ruby 2.6.4
Rvm 1.29.12
When we include a logger in the delayed_job startup script the job
succeeds. When we do not include a logger in the delayed_job startup
script we get the error (full stack attached):
Mysql2::Error: Got packets out of order
The mysql2 team wrote back with:
You may be sharing a single connection between multiple threads or child
processes; this can be OK as long as you manage locking. Each database
connection is stateful, so you have to make sure that it goes through a
complete login-query-fetchresults-freeresults cycle before another thread
can use it.
The mysql2 gem does not have a database connection pool manager built-in,
usually people use ActiveRecord for this purpose. I'm not as familiar with
Sequel, but it should have something to help manage a connection pool.
When a delayed_job worker is launched I see two threads start and go away
when the job is completed.
Below is a snippet of the delayed_job startup script with the logger.
Sequel.connect(db_config)
logger = Logger.new('/var/log/adhearsion/test.log')
Delayed::Worker.backend = :sequel
Delayed::Worker.destroy_failed_jobs = false
Delayed::Worker.sleep_delay = 10
Delayed::Worker.max_attempts = 15
Delayed::Worker.max_run_time = 1.hour
arguments = ['--pid-dir=/var/run/adhearsion', '--log-dir=/tmp',
"--queue=#{this_host}"]
arguments.concat(ARGV)
Delayed::Command.new(arguments).daemonize
I'm perplexed as to why the inclusion of a logger allows the delayed_job to
succeed. Also, I'm not sure whether this is a sequel or delayed_job
issue. Any information you can provide would be greatly appreciated.
Thanks
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sequel-talk/b3278b3d-2432-48f7-beef-7c26c2a72305n%40googlegroups.com.
Mysql2::Error: Got packets out of order
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in
`_query'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in
`block in query'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in
`handle_interrupt'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in
`query'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/database/logging.rb:76:in
`block in log_connection_execute'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/database/logging.rb:45:in
`log_connection_yield'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/database/logging.rb:76:in
`log_connection_execute'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/adapters/shared/mysql.rb:390:in
`begin_new_transaction'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/database/transactions.rb:320:in
`begin_transaction'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/adapters/shared/mysql.rb:399:in
`begin_transaction'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/database/transactions.rb:214:in
`_transaction'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/database/transactions.rb:199:in
`block in transaction'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/database/connecting.rb:301:in
`block in synchronize'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/connection_pool/threaded.rb:107:in
`hold'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/database/connecting.rb:301:in
`synchronize'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/database/transactions.rb:165:in
`transaction'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/model/base.rb:2372:in
`checked_transaction'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/model/base.rb:1543:in
`block in destroy'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/model/base.rb:2360:in
`checked_save_failure'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/sequel-4.49.0/lib/sequel/model/base.rb:1543:in
`destroy'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:231:in
`block in run'
/usr/local/rvm/rubies/ruby-2.6.4/lib/ruby/2.6.0/benchmark.rb:308:in `realtime'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:229:in
`run'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:312:in
`block in reserve_and_run_one_job'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:61:in
`block in initialize'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:66:in
`execute'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:40:in
`run_callbacks'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:312:in
`reserve_and_run_one_job'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:213:in
`block in work_off'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:212:in
`times'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:212:in
`work_off'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:175:in
`block (4 levels) in start'
/usr/local/rvm/rubies/ruby-2.6.4/lib/ruby/2.6.0/benchmark.rb:308:in `realtime'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:174:in
`block (3 levels) in start'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:61:in
`block in initialize'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:66:in
`execute'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:40:in
`run_callbacks'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:173:in
`block (2 levels) in start'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:172:in
`loop'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:172:in
`block in start'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/plugins/clear_locks.rb:7:in
`block (2 levels) in <class:ClearLocks>'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:79:in
`block (2 levels) in add'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:61:in
`block in initialize'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:79:in
`block in add'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:66:in
`execute'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/lifecycle.rb:40:in
`run_callbacks'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/worker.rb:171:in
`start'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/command.rb:137:in
`run'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/command.rb:125:in
`block in run_process'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/daemons-1.3.1/lib/daemons/application.rb:275:in
`block in start_proc'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/daemons-1.3.1/lib/daemons/daemonize.rb:84:in
`call_as_daemon'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/daemons-1.3.1/lib/daemons/application.rb:279:in
`start_proc'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/daemons-1.3.1/lib/daemons/application.rb:305:in
`start'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/daemons-1.3.1/lib/daemons/controller.rb:56:in
`run'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/daemons-1.3.1/lib/daemons.rb:199:in
`block in run_proc'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/daemons-1.3.1/lib/daemons/cmdline.rb:121:in
`catch_exceptions'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/daemons-1.3.1/lib/daemons.rb:198:in
`run_proc'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/command.rb:123:in
`run_process'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/command.rb:104:in
`block in daemonize'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/command.rb:102:in
`times'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/delayed_job-4.1.9/lib/delayed/command.rb:102:in
`daemonize'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/ravon-adhearsion_models-1.12.0/exe/dj_workers_asterisk_user.rb:38:in
`<class:CLI>'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/ravon-adhearsion_models-1.12.0/exe/dj_workers_asterisk_user.rb:23:in
`<module:DelayedJob>'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/ravon-adhearsion_models-1.12.0/exe/dj_workers_asterisk_user.rb:22:in
`<module:AdhearsionModels>'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/ravon-adhearsion_models-1.12.0/exe/dj_workers_asterisk_user.rb:21:in
`<module:Ravon>'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/gems/ravon-adhearsion_models-1.12.0/exe/dj_workers_asterisk_user.rb:20:in
`<top (required)>'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/bin/dj_workers_asterisk_user.rb:23:in
`load'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/bin/dj_workers_asterisk_user.rb:23:in
`<main>'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in
`eval'
/ravon/deploy/adhearsion/shared/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in
`<main>'