fix race condition in passive profiling
This commit is contained in:
parent
3b7dd524db
commit
39049e1c7c
1 changed files with 11 additions and 20 deletions
|
|
@ -123,26 +123,17 @@ sub summarizeAOI {
|
|||
where f.fieldId = d.fieldId
|
||||
and d.assetId = ".$session->db->quote($data->{assetId});
|
||||
|
||||
my $sth = $session->db->read($sql);
|
||||
while (my $field = $sth->hashRef) {
|
||||
my $aoi = $session->db->quickHashRef("select * from passiveProfileAOI
|
||||
where userId=".$session->db->quote($data->{userId})."
|
||||
and fieldId=".$session->db->quote($field->{fieldId})." and
|
||||
value=".$session->db->quote($field->{value}));
|
||||
if(not exists $aoi->{userId}) {
|
||||
# Add record to DB
|
||||
$session->db->write("insert into passiveProfileAOI (userId, fieldId, 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}));
|
||||
}
|
||||
my $sth = $session->db->read($sql);
|
||||
while (my $field = $sth->hashRef) {
|
||||
$session->db->write(
|
||||
"INSERT IGNORE INTO passiveProfileAOI (userId, fieldId, value, count) VALUES (?, ?, ?, ?)",
|
||||
[$data->{userId}, $field->{fieldId}, $field->{value}, 0],
|
||||
);
|
||||
$session->db->write(
|
||||
"UPDATE passiveProfileAOI SET count=count+1 WHERE userId=? AND fieldId=? AND value=?",
|
||||
[$data->{userId}, $field->{fieldId}, $field->{value}],
|
||||
);
|
||||
}
|
||||
$sth->finish;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue