Hi All,


I am writing a small application with


 Mojolicious 

 DBIx::Class  

 Hypnotoad

 MySQL

 

 In my application I need to do the following;


 1) Do some complex processing ( takes a minute of so to complete )

 2) insert resulting data from above processing into tables

 3) obtain the last auto increment of some tables, do some more processing.

 4) use the values from (3) as part of an insert into another table ( a 
junction table )



Here is some sample code starting at step 2



#step 2

my $device = $device_rs->create(

    {

      devicename      => $deviceName,

      objects         => \@objects

      object_groups   => \@objectgroups,


    }

  );


#step 3


my $lastogid  = 
$db->resultset('ObjectGroup')->get_column('objectgroupid')->max;

my $lastobid  = $db->resultset('Object')->get_column('objectid')->max;


my $obgcount = scalar(@objectgroups);

 my $objcount = scalar(@objects);


my $ogoffset = $lastogid - $obgcount;

my $oboffset = $lastobid - $objcount;


#now increment the object/group ids by the offset which will be inserted 
into the many-many table

  foreach my $hash (@childobjects) {

    $hash->{'objectgroup_objectgroupid'} += $ogoffset;

    $hash->{'object_objectid'}           += $oboffset;

  }


#step 4  - populate the junction table

  $db->resultset('ObjectGroupHasObjects’)->populate(\@childobjects);


Now due to having multiple threads going a once the values obtained from 
step 3 may not be correct ( for the current ‘device’ ).  


I’m trying to find a way around this issue. The only thing I can think of 
at the moment is putting a lock on the database tables before step 2) and 
unlocking after step 4). 


This might be more of a DBIx Issue but I thought I'd ask here as possibly 
others have ran into similar issues when using Hypnotoad?


Many thanks

-- 
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 http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to