On Jan 21, 2016, at 11:50 AM, Steve Singer <st...@ssinger.info> wrote:
>  
> On 01/21/2016 10:42 AM, Frank McGeough wrote:
>> I’m having intermittent issues that result in the message "duplicate key 
>> value violates unique constraint” in the slony logs. Here is my 
>> configuration :
>> 
>> 1 master
>> 2 slaves
>> postgresql 9.3.5 on all servers
>> slony2.2.2
>> 
>> All the servers are in the same network and running the same Linux o/s with 
>> the same file system. The issues just seem to happen randomly. They happen 
>> primarily on one table but have occurred on two different tables up to this 
>> point (the tables are logically related in the database - one is populated 
>> by events on the other one, the one that has most of the issues is the one 
>> with the trigger on it that populates the other table). When the error 
>> occurs it may occur on one slave or the other. Once on both.
>> 
>> These incidents have happened 6 times in the past week. Prior to this issue 
>> we’ve been running the same setup for many months without incident.
>> 
>> What I do to correct this is to actually remove the entry that is causing 
>> the duplicate key issue from the sl_log table. Replication picks back up 
>> again. When I compare the rows on all servers I see that they are the same. 
>> In all cases when the servers are back in sync the row is actually gone from 
>> all servers.
>> 
>> There is no obvious corruption issue on the slave boxes. I’m not sure what 
>> else to check at this point. Are there suggestions from the slony developers 
>> on how to investigate what is actually going on to cause these issues? Any 
>> help is appreciated at this point.
> 
> Above you say 'the one with the trigger on it that populates the other table'
> 
> You sort of imply you have triggers on tables but don't provide any details.
> 
> Do these triggers fire on replicas, the origin, everywhere?
> 
> Do the triggers insert data into a replicated table?
> 
> The conflicting row, you see the second insert for it in sl_log but do you 
> know where the first instance comes from?  Is the row recently added? (if so 
> you do you see the first insert in sl_log also) or has the row been there a 
> long time.
> 
> Is the conflicting row otherwise identical to the existing row or is it only 
> identical with respet to the primary key (ie the last_updated times, do they 
> match?)
> 
> 

the triggers only fire on the origin. The two tables in our system are : 
device_properties and device_graph. device_properties has a slew of triggers :

device_properties_change_tg AFTER INSERT OR DELETE OR UPDATE ON 
device.device_properties FOR EACH ROW EXECUTE PROCEDURE 
device.device_properties_change()
device_properties_graph_tg AFTER INSERT OR DELETE OR UPDATE ON 
device.device_properties FOR EACH ROW EXECUTE PROCEDURE device.update_graph()
device_properties_location_id_change_tg AFTER INSERT OR DELETE OR UPDATE ON 
device.device_properties FOR EACH ROW EXECUTE PROCEDURE 
device.device_properties_change_location_id()
device_properties_tg AFTER INSERT OR DELETE OR UPDATE ON 
device.device_properties FOR EACH ROW EXECUTE PROCEDURE 
device.delete_cached_device_properties()
device_properties_ids_ondelete AFTER DELETE ON device.device_properties FOR 
EACH ROW EXECUTE PROCEDURE device.process_delete_device_ids()
fax_email_history_tg AFTER DELETE ON device.device_properties FOR EACH ROW 
EXECUTE PROCEDURE device.fax_email_history()
    t_dirty_device_property_sip_credentials AFTER INSERT OR DELETE OR UPDATE ON 
device.device_properties FOR EACH ROW EXECUTE PROCEDURE 
device.fn_t_dirty_device_property_sip_credentials()

all of these triggers are potentially writing data into other tables that are 
also replicated from origin. 

the conflicting row is identical to the existing row. 

> 
> 
>> 
>> sample error :
>> 
>> 2016-01-21 01:19:01 UTC ERROR  remoteWorkerThread_1_1: error at end of COPY 
>> IN: ERROR:  duplicate key value violates unique constraint 
>> "device_properties_pkey"
>> DETAIL:  Key (device_guid, property_guid, data_index)=(26464008, 39, 0) 
>> already exists.
>> CONTEXT:  SQL statement "INSERT INTO "device"."device_properties" 
>> ("device_guid", "property_guid", "data_index", "property_value", "tran_id", 
>> "dt_last_updated", "last_updated_by_userid", "version_id") VALUES ($1, $2, 
>> $3, $4, $5, $6, $7, $8);"
>> COPY sl_log_1, line 36: "1      6117236903      298     7797340846      
>> device  device_properties       I       0       
>> {device_guid,26464008,property_guid,39,data…"
>> 
>> thanks,
>> Frank
>> 
>> 
>> _______________________________________________
>> Slony1-general mailing list
>> Slony1-general@lists.slony.info <mailto:Slony1-general@lists.slony.info>
>> http://lists.slony.info/mailman/listinfo/slony1-general 
>> <http://lists.slony.info/mailman/listinfo/slony1-general>
_______________________________________________
Slony1-general mailing list
Slony1-general@lists.slony.info
http://lists.slony.info/mailman/listinfo/slony1-general

Reply via email to