Re: Speedup twophase transactions

Поиск
Список
Период
Сортировка
От Jesper Pedersen
Тема Re: Speedup twophase transactions
Дата
Msg-id 56FC1605.80607@redhat.com
обсуждение исходный текст
Ответ на Re: Speedup twophase transactions  (Stas Kelvich <s.kelvich@postgrespro.ru>)
Список pgsql-hackers
On 03/30/2016 09:19 AM, Stas Kelvich wrote:
>> > +++ b/src/test/recovery/t/006_twophase.pl
>> > @@ -0,0 +1,226 @@
>> > +# Checks for recovery_min_apply_delay
>> > +use strict;
>> > This description is wrong, this file has been copied from 005.
>>
>> Yep, done.
>>
>> >
>> > +my $node_master = get_new_node("Candie");
>> > +my $node_slave = get_new_node('Django');
>> > Please let's use a node names that are more descriptive.
>>
>> Hm, it’s hard to create descriptive names because test changes master/slave
>> roles for that nodes several times during test. It’s possible to call them
>> “node1” and “node2” but I’m not sure that improves something. But anyway I’m not
>> insisting on that particular names and will agree with any reasonable suggestion.
>>
>> >
>> > +# Switch to synchronous replication
>> > +$node_master->append_conf('postgresql.conf', qq(
>> > +synchronous_standby_names = '*'
>> > +));
>> > +$node_master->restart;
>> > Reloading would be fine.
>>
>> Good catch, done.
>>
>> >
>> > +   /* During replay that lock isn't really necessary, but let's take
>> > it anyway */
>> > +   LWLockAcquire(TwoPhaseStateLock, LW_EXCLUSIVE);
>> > +   for (i = 0; i < TwoPhaseState->numPrepXacts; i++)
>> > +   {
>> > +       gxact = TwoPhaseState->prepXacts[i];
>> > +       proc = &ProcGlobal->allProcs[gxact->pgprocno];
>> > +       pgxact = &ProcGlobal->allPgXact[gxact->pgprocno];
>> > +
>> > +       if (TransactionIdEquals(xid, pgxact->xid))
>> > +       {
>> > +           gxact->locking_backend = MyBackendId;
>> > +           MyLockedGxact = gxact;
>> > +           break;
>> > +       }
>> > +   }
>> > +   LWLockRelease(TwoPhaseStateLock);
>> > Not taking ProcArrayLock here?
>>
>> All accesses to 2pc dummies in ProcArray are covered with TwoPhaseStateLock, so
>> I thick that’s safe. Also I’ve deleted comment above that block, probably it’s
>> more confusing than descriptive.
>>
>> >
>> > The comment at the top of XlogReadTwoPhaseData is incorrect.
>>
>> Yep, fixed.
>>
>> >
>> > RecoverPreparedFromXLOG and RecoverPreparedFromFiles have a lot of
>> > code in common, having this duplication is not good, and you could
>> > simplify your patch.
>>
>> I reworked patch to avoid duplicated code between
>> RecoverPreparedFromXLOG/RecoverPreparedFromFiles and also
>> between FinishPreparedTransaction/XlogRedoFinishPrepared.
>>
>>

Patch applies with hunks, and test cases are passing.

Best regards, Jesper




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: pg_dump dump catalog ACLs
Следующее
От: Kevin Grittner
Дата:
Сообщение: Re: snapshot too old, configured by time