Hi,
i highly appreciate your work for minion and the latest version which 
supports locks.
i really need something like queuing by using the lock mech. Before i used 
file locks via flock.
I have a system which only can process one job by another.
The problem i have is, that $minio->lock return a deadlock situation.

A simple demo job:

$app->minion->add_task(demo_job => sub {
      my $job = shift;
      my $retval = {};

      sleep 1 until $app->minion->lock('demo_job', 7200);

      $job->on(finished => sub {
          my ($job, $result) = @_;
          my $debugger = $app->debug_logger;
          $debugger->debug(sprintf("Job %d with task %s finished\n", $job->
id, $job->task ));
          $app->minion->unlock('demo_job');
      });

      $job->on(failed => sub {
          my ($job, $err) = @_;
          my $debugger = $app->debug_logger;
          $debugger->debug(sprintf("Job %d with task %s failed %s\n", $job->
id, $job->task, $err ));
          $app->minion->unlock('demo_job');
      });

      $retval->{data}->[0]->{demo_job} = int(rand(1000));
      $retval->{success} = Cpanel::JSON::XS::true();
      return $job->finish($retval);
  });

if i enqueue e.g. 8 jobs, some of them fail with:

"result" : "DBD::Pg::st execute failed: ERROR:  deadlock detected\nDETAIL:  
Process 43250 waits for ExclusiveLock on relation 19753 of database 19627; 
blocked by process 43294.\nProcess 43294 waits for ExclusiveLock on 
relation 19753 of database 19627; blocked by process 43250.\nHINT:  See 
server log for query details.\nCONTEXT:  SQL statement \"lock table 
minion_locks in exclusive mode\"\nPL/pgSQL function 
minion_lock(text,integer,integer) line 6 at SQL statement at 
/opt/perl5/perls/perl-5.24.1t/lib/site_perl/5.24.1/Minion/Backend/Pg.pm 
line 90.\n"

I thought when using lock and it's locked than i can wait until the lock is 
free ?
If that's not possible i will return to my working flock mech.
Perhaps anyone can point me in the right direction.

Kind regards.

Hans

-- 
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 mojolicious+unsubscr...@googlegroups.com.
To post to this group, send email to mojolicious@googlegroups.com.
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to