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.

Reply via email to