OK. i managed to replicate the issue in dev. So it was actually caused by
using hypnotoad in production. I was using morbo in dev which probably only
had 1 thread and production might have 4 thread.
I'm open for suggestions to tackle this issue though. This is my first time
using IOLoop and any advice is highly appreciated.
On Wednesday, November 22, 2017 at 12:49:37 PM UTC+11, Nancy Li wrote:
>
> * Mojolicious version: 7.39
> * Perl version: v5.24.9
> * Operating system: Linux AND 2.6.32-504.23.4.el6.x86_64
>
> ### Steps to reproduce the behavior
> I'm using Mojo::IOLoop->recurring to schedule a HTTP get request every
> 10s. However, from the log file, it seems the IOLoop is starting more than
> 1 job at the same time. Sometimes, there are 2 or 3 or 4 jobs running at
> the same time.
>
> Code:
> ```
> Mojo::IOLoop->recurring(
> 10 => sub {
> my $task = 'pull_reservation';
> my $backend = $self->minion->backend;
>
> my $inactive_batch
> = $backend->list_jobs( 0, -1, { state => 'inactive', task
> => $task, queue => 'default' } );
> my $active_batch = $backend->list_jobs( 0, -1, { state =>
> 'active', task => $task, queue => 'default' } );
>
> if ( ( !@$inactive_batch ) && ( !@$active_batch ) ) {
> $self->minion->enqueue( $task => [], { priority => 1 } );
> }
>
> }
> );
> ```
>
> ### Expected behavior
> IOLoop should only be starting one job at the time.
>
> ### Actual behavior
> IOLoop somestimes start more than 1 job. From the log file, it is starting
> 2 -4 jobs.
>
> ###Content from log file:
> ```
> [Wed Nov 22 11:02:35 2017] [info] job completed with 0 reservations with
> job_id 244828 .
> [Wed Nov 22 11:02:35 2017] [info] job completed with 0 reservations with
> job_id 244827 .
> [Wed Nov 22 11:02:35 2017] [info] job completed with 0 reservations with
> job_id 244829 .
> [Wed Nov 22 11:02:42 2017] [info] job completed with 0 reservations with
> job_id 244833 .
> [Wed Nov 22 11:02:42 2017] [info] job completed with 0 reservations with
> job_id 244832 .
> [Wed Nov 22 11:02:42 2017] [info] job completed with 0 reservations with
> job_id 244831 .
> [Wed Nov 22 11:02:42 2017] [info] job completed with 0 reservations with
> job_id 244830 .
> [Wed Nov 22 11:02:54 2017] [info] job completed with 0 reservations with
> job_id 244836 .
> [Wed Nov 22 11:02:54 2017] [info] job completed with 0 reservations with
> job_id 244834 .
> ```
>
> I've also checked the details of each parallel job, they have exactly the
> same create time.
>
> ```
> ./script/app.pl minion job 285950
> {
> "args" => [],
> "attempts" => 1,
> "children" => [],
> "created" => "2017-11-22T01:25:39Z",
> "delayed" => "2017-11-22T01:25:39Z",
> "finished" => "2017-11-22T01:25:44Z",
> "id" => 285950,
> "notes" => {},
> "parents" => [],
> "priority" => 1,
> "queue" => "default",
> "result" => {
> "uuid" => 246109
> },
> "retried" => undef,
> "retries" => 0,
> "started" => "2017-11-22T01:25:43Z",
> "state" => "finished",
> "task" => "pull_reservation",
> "worker" => 157
> }
> ./script/app.pl minion job 285951
> {
> "args" => [],
> "attempts" => 1,
> "children" => [],
> "created" => "2017-11-22T01:25:39Z",
> "delayed" => "2017-11-22T01:25:39Z",
> "finished" => "2017-11-22T01:25:44Z",
> "id" => 285951,
> "notes" => {},
> "parents" => [],
> "priority" => 1,
> "queue" => "default",
> "result" => {
> "uuid" => 246112
> },
> "retried" => undef,
> "retries" => 0,
> "started" => "2017-11-22T01:25:43Z",
> "state" => "finished",
> "task" => "pull_reservation",
> "worker" => 157
> }
>
> ```
> While doing trouble shooting, I started using IOLoop->singleton, but it
> didn't solve this problem :(
>
> Any pointers are highly appreciated.
>
--
You received this message because you are subscribed to the Google Groups
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.