You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm loving the progress being made on SolidQueue over the past year or so!
I had a chance to update SolidQueue and start using recurring tasks as it stands now and I had a few questions and observation.
Observation
When using Recurring Tasks on MacOS with PG, you can/will encounter the following error followed by a huge stacktrace when starting the SolidQueue workers (bin/jobs):
/Users/.../.rbenv/versions/3.3.5/gemsets/.../gems/pg-1.5.9/lib/pg/connection.rb:703: [BUG] Segmentation fault at 0x0000000123be0b04
worker | ruby 3.3.5 (2024-09-03 revision ef084cc8f4) +YJIT [arm64-darwin23]
worker |
worker | -- Crash Report log information --------------------------------------------
worker | See Crash Report log file in one of the following locations:
worker | * ~/Library/Logs/DiagnosticReports
worker | * /Library/Logs/DiagnosticReports
worker | for more details.
worker | Don't forget to include the above Crash Report log file in bug reports.
worker |
worker | -- Control frame information -----------------------------------------------
worker | c:0117 p:---- s:0691 e:000690 CFUNC :connect_poll
Weirdly enough, things still work fine after and it seems to happen only upon startup.
After doing some digging, it appears to be a PG bug, see: ged/ruby-pg#538.
The temporary fix is to disable the environment variable "gssencmode", and there was a helpful comment in the above bug that suggests that you add it into your database.yml config.
Mine looks like this:
development:
primary:
<<: *default
<% if RUBY_PLATFORM =~ /darwin/ %>gssencmode: disable<% end %>
database: app-development
queue:
<<: *default
<% if RUBY_PLATFORM =~ /darwin/ %>gssencmode: disable<% end %>
database: app-queue-development
migrations_paths: db/queue_migrate
NOTE! You must have the gssencmode for both the primary and queue configs. I initially only had it under the queue config, and the recurring jobs would fail to run with the following error:
worker | objc[76317]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called.
worker | objc[76317]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
Question:
I noticed that in the recurring.yml file, if you do not specify the queue to the scheduled item, then the thing-to-be-scheduled goes to the "solid_queue_recurring" queue. If you do not have a worker assigned to the "solid_queue_recurring" queue, then nothing will get scheduled/triggered. Is that the way it's supposed to work?
The documentation didn't make that clear and for a while I was trying to figure out why nothing was being scheduled then triggered - this was also due to the fact that I don't have any workers assigned to '*'.
Question:
I have a use case where I would like to schedule recurring jobs but these jobs need to take in ApplicationRecord model objects that change based on the date/time. I don't think we can do queries in the yml file, so instead, I have configured the recurring.yml to execute a command - and this command will run the query and enqueue the job accordingly. Is this the way to go?
Much thanks!
The text was updated successfully, but these errors were encountered:
Hi all (I guess more specifically @rosa ),
I'm loving the progress being made on SolidQueue over the past year or so!
I had a chance to update SolidQueue and start using recurring tasks as it stands now and I had a few questions and observation.
Observation
When using Recurring Tasks on MacOS with PG, you can/will encounter the following error followed by a huge stacktrace when starting the SolidQueue workers (bin/jobs):
Weirdly enough, things still work fine after and it seems to happen only upon startup.
After doing some digging, it appears to be a PG bug, see: ged/ruby-pg#538.
The temporary fix is to disable the environment variable "gssencmode", and there was a helpful comment in the above bug that suggests that you add it into your database.yml config.
Mine looks like this:
NOTE! You must have the gssencmode for both the primary and queue configs. I initially only had it under the queue config, and the recurring jobs would fail to run with the following error:
Question:
I noticed that in the recurring.yml file, if you do not specify the queue to the scheduled item, then the thing-to-be-scheduled goes to the "solid_queue_recurring" queue. If you do not have a worker assigned to the "solid_queue_recurring" queue, then nothing will get scheduled/triggered. Is that the way it's supposed to work?
The documentation didn't make that clear and for a while I was trying to figure out why nothing was being scheduled then triggered - this was also due to the fact that I don't have any workers assigned to '*'.
Question:
I have a use case where I would like to schedule recurring jobs but these jobs need to take in ApplicationRecord model objects that change based on the date/time. I don't think we can do queries in the yml file, so instead, I have configured the recurring.yml to execute a command - and this command will run the query and enqueue the job accordingly. Is this the way to go?
Much thanks!
The text was updated successfully, but these errors were encountered: