Thu Jan 26 17:29:56 PST 2012
- Previous message: [Slony1-general] Slave can't catch up, postgres error 'stack depth limit exceeded'
- Next message: [Slony1-general] Slave can't catch up, postgres error 'stack depth limit exceeded'
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, 24 Jan 2012, Cédric Villemain wrote: > Le 22 janvier 2012 17:16, Steve Singer <steve at ssinger.info> a écrit : >> On Sun, 22 Jan 2012, Brian Fehrle wrote: > > but ... isn't it slony which should not use more than > default_stack_size ? can't there be an underlining bug ? If slony is leaking memory or if the compression routine for the snapshot id's isn't working properly then it is a bug. I haven't seen any evidence of this (nor have I analyzed the entire contents of his sl_event to figure out if that is the case). If a single SYNC group really had a lot of active xids such that it exceeded the amount of text that can be passed to a function with the default stack size then this isn't a bug. In 2.2 on a failed SYNC slon should now dynamically shrink the SYNC group size until it works (or reaches a size of 1). > >> >> >> >> >> >>> >>> I am having some trouble getting a slon node caught up on events. It's a >>> larger database, 350 or so Gigs, and I added a node to a replication set >>> and while it was doing the initial sync, the server that the slon >>> daemons were running on died. It wasn't until about 5 hours later we got >>> the daemons running on a different node and it restarted (i assume it >>> restarted) the initial sync. >>> >>> From what I can tell, it finished the initial sync, however now it's >>> unable to catch up due to the following error line (reduced in size, >>> don't know how many elements there actually were but the single line had >>> about 18 million characters): >>> 2012-01-22 04:43:07 EST ERROR remoteWorkerThread_1: "declare LOG cursor >>> for select log_origin, log_txid, log_tableid, log_actionseq, >>> log_cmdtype, octet_length(log_cmddata), case when >>> octet_length(log_cmddata) <= 1024 then log_cmddata else null end from >>> "_myslonycluster".sl_log_1 where log_origin = 1 and log_tableid in >>> (2,3,4,5,6,7,1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122) >>> and log_txid >= '34299501' and log_txid < '34311624' and >>> "pg_catalog".txid_visible_in_snapshot(log_txid, '34311624:34311624:') >>> and ( log_actionseq <> '2474682' and log_actionseq <> '2403310' and >>> log_actionseq <> '2427861' and >>> <SNIP, repeated many thousands of times with different numbers> >>> ' and log_actionseq <> '2520797' and log_actionseq <> '2519348' >>> and log_actionseq <> '2485828' and log_actionseq <> '2523367' and >>> log_actionseq <> '2469096' and log_actionseq <> '2520589' and >>> log_actionseq <> '2414071' and log_actionseq <> '2391417' ) order by >>> log_actionseq" PGRES_FATAL_ERROR ERROR: stack depth limit exceeded >>> >>> I found someone with a similar(ish) issue back in the day, and a >>> function called compress_actionseq was mentioned. I turned up debugging >>> to level 4 and see that it is indeed compressing the actionseq, and I >>> looked at the code and it also looks like the above output IS the >>> compressed sequence. >>> >>> Now, this seems to be a tricky setting to tweak on postgres, so I'd >>> rather not unless I had to. So my thoughts were to hopefully just force >>> slony to try to do smaller syncs at a time. I tried reducing (and for >>> the heck of it increasing) the group size, desired_sync_time, >>> sync_max_rowsize, and sync_max_largemem. However nothing has altered the >>> size of this query that is being executed on the database. >>> >>> Any thoughts, suggestions? The initial sync of slony takes about 14 >>> hours, so I'd rather not drop the node and re-attach it. In fact I have >>> two nodes in the same issue, stuck at the same event, so I'd rather just >>> get them both synced up without doing another initial sync. >>> >>> Also, I toyed with the idea of forcing slon daemon to only sync up to a >>> specific event, in hopes to do blocks of say 500 events, however the >>> quit_sync_finalsync parameter is not accepted correctly by slony 2.1.0. >>> (I've submitted a email to this list about this too). >>> >>> Thanks in advance, >>> - Brian F >>> _______________________________________________ >>> Slony1-general mailing list >>> Slony1-general at lists.slony.info >>> http://lists.slony.info/mailman/listinfo/slony1-general >>> >> >> _______________________________________________ >> Slony1-general mailing list >> Slony1-general at lists.slony.info >> http://lists.slony.info/mailman/listinfo/slony1-general > > > > -- > Cédric Villemain +33 (0)6 20 30 22 52 > http://2ndQuadrant.fr/ > PostgreSQL: Support 24x7 - Développement, Expertise et Formation >
- Previous message: [Slony1-general] Slave can't catch up, postgres error 'stack depth limit exceeded'
- Next message: [Slony1-general] Slave can't catch up, postgres error 'stack depth limit exceeded'
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-general mailing list