Enqueue jobs inside a connected_to block
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
Direzione di ricerca
Start by reviewing the database.yml configuration and config/initializers/database.rb, then reproduce SomeJob.perform_later inside the ActiveRecord::Base.connected_to block. Trace how SolidQueue chooses its database connection; done means jobs enqueue through the queue database even when the caller is connected to secondary_shard.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
My rails application connects to multiple databases with the configs below:
database.yml
production:
primary_shard:
...
secondary_shard:
...
queue:
...
config/initializers/database.rb
# This is needed due to us using another gem whose model writes to both primary_shard and secondary_shard and its model inherits from ActiveRecord::Base
ActiveRecord::Base.instance_eval do
connects_to shards: {
primary_shard: {
writing: :primary_shard,
},
secondary_shard: {
writing: :secondary_shard,
},
}
end
SolidQueue has been working well, the only time where we cannot enqueue is if we have a block of code like below:
ActiveRecord::Base.connected_to(role: :writing, shard: :secondary_shard) do
# ...
SomeJob.perform_later(some_argument)
# ...
end
I think it is because SolidQueue is trying to insert the job into secondary_shard instead of the queue database. Is there any way to circumvent this besides rewriting the code to call perform_later outside of the connected_to block? SomeJob.perform_later might be called inside a function with the connected_to block so it's quite a big refactor for us.
- Lingua principale
- Ruby
- Stelle
- 2.5k
- Fork
- 250
- Merge medio
- 8h 31m
- PR unite (30g)
- 5
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di rails/solid_queue
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
rails/solid_queue#804 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
rails/solid_queue#802 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
rails/solid_queue#797 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
rails/solid_queue#792 · 1 reazione ·
-
Let `bin/jobs check` validate a config for an env it isn't running in, and without a database Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
rails/solid_queue#780 ·
Tutte le issue di rails/solid_queue
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
palladius/rails8-app-on-gcp#145 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
rubocop/rubocop-rspec#2236 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
riscv/riscv-unified-db#2624 · 1 reazione ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100