fix race condition in passive profiling

This commit is contained in:
Graham Knop 2011-08-08 15:41:29 -05:00
parent 3b7dd524db
commit 39049e1c7c

View file

@ -123,26 +123,17 @@ sub summarizeAOI {
where f.fieldId = d.fieldId where f.fieldId = d.fieldId
and d.assetId = ".$session->db->quote($data->{assetId}); and d.assetId = ".$session->db->quote($data->{assetId});
my $sth = $session->db->read($sql); my $sth = $session->db->read($sql);
while (my $field = $sth->hashRef) { while (my $field = $sth->hashRef) {
my $aoi = $session->db->quickHashRef("select * from passiveProfileAOI $session->db->write(
where userId=".$session->db->quote($data->{userId})." "INSERT IGNORE INTO passiveProfileAOI (userId, fieldId, value, count) VALUES (?, ?, ?, ?)",
and fieldId=".$session->db->quote($field->{fieldId})." and [$data->{userId}, $field->{fieldId}, $field->{value}, 0],
value=".$session->db->quote($field->{value})); );
if(not exists $aoi->{userId}) { $session->db->write(
# Add record to DB "UPDATE passiveProfileAOI SET count=count+1 WHERE userId=? AND fieldId=? AND value=?",
$session->db->write("insert into passiveProfileAOI (userId, fieldId, value) [$data->{userId}, $field->{fieldId}, $field->{value}],
values (".$session->db->quote($data->{userId}).",". );
$session->db->quote($field->{fieldId}).",". }
$session->db->quote($field->{value}).")");
}
my $count = $aoi->{count};
$count++;
$session->db->write("update passiveProfileAOI set count=".$session->db->quote($count)."
where userId=".$session->db->quote($data->{userId})."
and fieldId=".$session->db->quote($field->{fieldId})." and
value=".$session->db->quote($field->{value}));
}
$sth->finish; $sth->finish;
} }