From 2a519d5ae96cf42935465958df604115f6c98a7c Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Mon, 21 Mar 2011 18:49:45 -0500 Subject: [PATCH] change group INSERT to REPLACE to prevent merge problems in multi-master DB clusters --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Group.pm | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index a98175d29..475f5d963 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -8,6 +8,7 @@ - fixed #12050: Thing query caching #1 - added: Let CHI cache request $dbh via an "args" : [ "dbh" ] cache conf - added: lineage increment_step and increment_offset for multi-master DB clusters + - Change Group INSERT to REPLACE to prevent merge problems in multi-master DB clusters 7.10.11 - fixed #12057: WebGUI::Search, assetIds search clause diff --git a/lib/WebGUI/Group.pm b/lib/WebGUI/Group.pm index 94f09b058..bf19fef67 100644 --- a/lib/WebGUI/Group.pm +++ b/lib/WebGUI/Group.pm @@ -137,7 +137,7 @@ sub addGroups { my $group = WebGUI::Group->new($self->session, $gid); my $recursive = isIn($self->getId, @{$group->getGroupsIn(1)}); next GROUP if $recursive; - $self->session->db->write("insert into groupGroupings (groupId,inGroup) values (?,?)",[$gid, $self->getId]); + $self->session->db->write("REPLACE into groupGroupings (groupId,inGroup) values (?,?)",[$gid, $self->getId]); } $self->clearCaches(); return 1; @@ -169,7 +169,7 @@ sub addUsers { foreach my $uid (@{$users}) { my ($isIn) = $self->session->db->quickArray("select count(*) from groupings where groupId=? and userId=?", [$self->getId, $uid]); unless ($isIn) { - $self->session->db->write("insert into groupings (groupId,userId,expireDate) values (?,?,?)", [$self->getId, $uid, (time()+$expireOffset)]); + $self->session->db->write("REPLACE into groupings (groupId,userId,expireDate) values (?,?,?)", [$self->getId, $uid, (time()+$expireOffset)]); $self->session->stow->delete("gotGroupsForUser"); } else { $self->userGroupExpireDate($uid,(time()+$expireOffset));