Support for N synchronous standby servers - take 2

Started by Beena Emersonalmost 11 years ago377 messageshackers
Jump to latest
#1Beena Emerson
memissemerson@gmail.com

There was a discussion on support for N synchronous standby servers started
by Michael. Refer
http://archives.postgresql.org/message-id/CAB7nPqR9c84ig0ZUvhMQAMq53VQsD4rC82vYci4Dr27PVOFf9w@mail.gmail.com
. The use of hooks and dedicated language was suggested, however, it seemed
to be an overkill for the scenario and there was no consensus on this.
Exploring GUC-land was preferred.

Please find attached a patch, built on Michael's patch from above
mentioned thread, which supports choosing different number of nodes from
each set i.e. k nodes from set 1, l nodes from set 2, so on.
The format of synchronous_standby_names has been updated to standby name
followed by the required count separated by hyphen. Ex: 'aa-1, bb-3'. The
transaction waits for all the specified number of standby in each group.
Any extra nodes with the same name will be considered potential. The
special entry * for the standby name is also supported.

Thanks,

Beena Emerson

Attachments:

20150515_multiple_sync_rep.patchapplication/octet-stream; name=20150515_multiple_sync_rep.patchDownload+298-86
#2Michael Paquier
michael@paquier.xyz
In reply to: Beena Emerson (#1)
Re: Support for N synchronous standby servers - take 2

On Fri, May 15, 2015 at 8:55 PM, Beena Emerson <memissemerson@gmail.com> wrote:

There was a discussion on support for N synchronous standby servers started
by Michael. Refer
http://archives.postgresql.org/message-id/CAB7nPqR9c84ig0ZUvhMQAMq53VQsD4rC82vYci4Dr27PVOFf9w@mail.gmail.com
. The use of hooks and dedicated language was suggested, however, it seemed
to be an overkill for the scenario and there was no consensus on this.
Exploring GUC-land was preferred.

Cool.

Please find attached a patch, built on Michael's patch from above mentioned
thread, which supports choosing different number of nodes from each set i.e.
k nodes from set 1, l nodes from set 2, so on.
The format of synchronous_standby_names has been updated to standby name
followed by the required count separated by hyphen. Ex: 'aa-1, bb-3'. The
transaction waits for all the specified number of standby in each group. Any
extra nodes with the same name will be considered potential. The special
entry * for the standby name is also supported.

I don't think that this is going in the good direction, what was
suggested mainly by Robert was to use a micro-language that would
allow far more extensibility that what you are proposing. See for
example CA+TgmobPWoeNMMEpfx0jWRvQufxVbqRv26Ezq_XHk21GxrXo9w@mail.gmail.com
for some ideas. IMO, before writing any patch in this area we should
find a clear consensus on what we want to do. Also, unrelated to this
patch, we should really get first the patch implementing the... Hum...
infrastructure for regression tests regarding replication and
archiving to be able to have actual tests for this feature (working on
it for next CF).

+        if (!SplitIdentifierString(standby_detail, '-', &elemlist2))
+        {
+            /* syntax error in list */
+            pfree(rawstring);
+            list_free(elemlist1);
+            return 0;
+        }
At quick glance, this looks problematic to me if application_name has an hyphen.

Regards,
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#3Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#2)
Re: Support for N synchronous standby servers - take 2

On Fri, May 15, 2015 at 9:18 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:

On Fri, May 15, 2015 at 8:55 PM, Beena Emerson <memissemerson@gmail.com> wrote:

There was a discussion on support for N synchronous standby servers started
by Michael. Refer
http://archives.postgresql.org/message-id/CAB7nPqR9c84ig0ZUvhMQAMq53VQsD4rC82vYci4Dr27PVOFf9w@mail.gmail.com
. The use of hooks and dedicated language was suggested, however, it seemed
to be an overkill for the scenario and there was no consensus on this.
Exploring GUC-land was preferred.

Cool.

Please find attached a patch, built on Michael's patch from above mentioned
thread, which supports choosing different number of nodes from each set i.e.
k nodes from set 1, l nodes from set 2, so on.
The format of synchronous_standby_names has been updated to standby name
followed by the required count separated by hyphen. Ex: 'aa-1, bb-3'. The
transaction waits for all the specified number of standby in each group. Any
extra nodes with the same name will be considered potential. The special
entry * for the standby name is also supported.

I don't think that this is going in the good direction, what was
suggested mainly by Robert was to use a micro-language that would
allow far more extensibility that what you are proposing. See for
example CA+TgmobPWoeNMMEpfx0jWRvQufxVbqRv26Ezq_XHk21GxrXo9w@mail.gmail.com
for some ideas. IMO, before writing any patch in this area we should
find a clear consensus on what we want to do. Also, unrelated to this
patch, we should really get first the patch implementing the... Hum...
infrastructure for regression tests regarding replication and
archiving to be able to have actual tests for this feature (working on
it for next CF).

The dedicated language for multiple sync replication would be more
extensibility as you said, but I think there are not a lot of user who
want to or should use this.
IMHO such a dedicated extensible feature could be extension module,
i.g. contrib. And we could implement more simpler feature into
PostgreSQL core with some restriction.

Regards,

-------
Sawada Masahiko

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#4Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#3)
Re: Support for N synchronous standby servers - take 2

On Sat, May 16, 2015 at 5:58 PM, Sawada Masahiko wrote:

The dedicated language for multiple sync replication would be more
extensibility as you said, but I think there are not a lot of user who
want to or should use this.
IMHO such a dedicated extensible feature could be extension module,
i.g. contrib. And we could implement more simpler feature into
PostgreSQL core with some restriction.

As proposed, this feature does not bring us really closer to quorum
commit, and AFAIK this is what we are more or less aiming at recalling
previous discussions. Particularly with the syntax proposed above, it
is not possible to do some OR conditions on subgroups of nodes, the
list of nodes is forcibly using AND because it is necessary to wait
for all the subgroups. Also, users may want to track nodes from the
same group with different application_name.
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#5Beena Emerson
memissemerson@gmail.com
In reply to: Michael Paquier (#2)
Re: Support for N synchronous standby servers - take 2

Hello,

I don't think that this is going in the good direction, what was
suggested mainly by Robert was to use a micro-language that would
allow far more extensibility that what you are proposing.

I agree, the micro-language would give far more extensibility. However, as
stated ibefore, the previous discussions concluded that GUC was a preferred
way because it is more user-friendly.

See for
example [hidden email]
for some ideas. IMO, before writing any patch in this area we should
find a clear consensus on what we want to do. Also, unrelated to this
patch, we should really get first the patch implementing the... Hum...
infrastructure for regression tests regarding replication and
archiving to be able to have actual tests for this feature (working on
it for next CF).

We could decide and work on patch for n-sync along with setting up
regression test infrastructure.

At quick glance, this looks problematic to me if application_name has an
hyphen.

Yes, I overlooked the fact that application name could have a hyphen. This
can be modified.

Regards,

Beena Emerson

-----

--

Beena Emerson

--
View this message in context: http://postgresql.nabble.com/Support-for-N-synchronous-standby-servers-take-2-tp5849384p5849711.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#6Beena Emerson
memissemerson@gmail.com
In reply to: Michael Paquier (#4)
Re: Support for N synchronous standby servers - take 2

As proposed, this feature does not bring us really closer to quorum
commit, and AFAIK this is what we are more or less aiming at recalling
previous discussions. Particularly with the syntax proposed above, it
is not possible to do some OR conditions on subgroups of nodes, the
list of nodes is forcibly using AND because it is necessary to wait
for all the subgroups. Also, users may want to track nodes from the
same group with different application_name.

The patch assumes that all standbys of a group share a name and so the "OR"
condition would be taken care of that way.
Also, since uniqueness of standby_name cannot be enforced, the same name
could be repeated across groups!.

Regards,

Beena

-----

--

Beena Emerson

--
View this message in context: http://postgresql.nabble.com/Support-for-N-synchronous-standby-servers-take-2-tp5849384p5849712.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#7Michael Paquier
michael@paquier.xyz
In reply to: Beena Emerson (#5)
Re: Support for N synchronous standby servers - take 2

On Mon, May 18, 2015 at 8:42 PM, Beena Emerson <memissemerson@gmail.com> wrote:

Hello,

I don't think that this is going in the good direction, what was
suggested mainly by Robert was to use a micro-language that would
allow far more extensibility that what you are proposing.

I agree, the micro-language would give far more extensibility. However, as
stated before, the previous discussions concluded that GUC was a preferred
way because it is more user-friendly.

Er, I am not sure I follow here. The idea proposed was to define a
string formatted with some infra-language within the existing GUC
s_s_names.
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#8Beena Emerson
memissemerson@gmail.com
In reply to: Michael Paquier (#7)
Re: Support for N synchronous standby servers - take 2

Hello,

Er, I am not sure I follow here. The idea proposed was to define a
string formatted with some infra-language within the existing GUC
s_s_names.

I am sorry, I misunderstood. I thought the "language" approach meant use of
hooks and module.
As you mentioned the first step would be to reach the consensus on the
method.

If I understand correctly, s_s_names should be able to define:
- a count of sync rep from a given group of names ex : 2 from A,B,C.
- AND condition: Multiple groups and count can be defined. Ex: 1 from X,Y
AND 2 from A,B,C.

In this case, we can give the same priority to all the names specified in a
group. The standby_names cannot be repeated across groups.

Robert had also talked about a little more complex scenarios of choosing
either A or both B and C.
Additionally, preference for a standby could also be specified. Ex: among
A,B and C, A can have higher priority and would be selected if an standby
with name A is connected.
This can make the language very complicated.

Should all these scenarios be covered in the n-sync selection or can we
start with the basic 2 and then update later?

Thanks & Regards,

Beena Emerson

-----

--

Beena Emerson

--
View this message in context: http://postgresql.nabble.com/Support-for-N-synchronous-standby-servers-take-2-tp5849384p5849736.html
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#9Robert Haas
robertmhaas@gmail.com
In reply to: Beena Emerson (#8)
Re: Support for N synchronous standby servers - take 2

On Mon, May 18, 2015 at 9:40 AM, Beena Emerson <memissemerson@gmail.com> wrote:

Er, I am not sure I follow here. The idea proposed was to define a
string formatted with some infra-language within the existing GUC
s_s_names.

I am sorry, I misunderstood. I thought the "language" approach meant use of
hooks and module.
As you mentioned the first step would be to reach the consensus on the
method.

If I understand correctly, s_s_names should be able to define:
- a count of sync rep from a given group of names ex : 2 from A,B,C.
- AND condition: Multiple groups and count can be defined. Ex: 1 from X,Y
AND 2 from A,B,C.

In this case, we can give the same priority to all the names specified in a
group. The standby_names cannot be repeated across groups.

Robert had also talked about a little more complex scenarios of choosing
either A or both B and C.
Additionally, preference for a standby could also be specified. Ex: among
A,B and C, A can have higher priority and would be selected if an standby
with name A is connected.
This can make the language very complicated.

Should all these scenarios be covered in the n-sync selection or can we
start with the basic 2 and then update later?

If it were me, I'd just go implement a scanner using flex and a parser
using bison and use that to parse the format I suggested before, or
some similar one. This may sound hard, but it's really not: I put
together the patch that became commit
878fdcb843e087cc1cdeadc987d6ef55202ddd04 in just a few hours. I don't
see why this would be particularly harder. Then instead of arguing
about whether some stop-gap implementation is good enough until we do
the real thing, we can just have the real thing.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#10Fujii Masao
masao.fujii@gmail.com
In reply to: Michael Paquier (#2)
Re: Support for N synchronous standby servers - take 2

On Fri, May 15, 2015 at 9:18 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:

On Fri, May 15, 2015 at 8:55 PM, Beena Emerson <memissemerson@gmail.com> wrote:

There was a discussion on support for N synchronous standby servers started
by Michael. Refer
http://archives.postgresql.org/message-id/CAB7nPqR9c84ig0ZUvhMQAMq53VQsD4rC82vYci4Dr27PVOFf9w@mail.gmail.com
. The use of hooks and dedicated language was suggested, however, it seemed
to be an overkill for the scenario and there was no consensus on this.
Exploring GUC-land was preferred.

Cool.

Please find attached a patch, built on Michael's patch from above mentioned
thread, which supports choosing different number of nodes from each set i.e.
k nodes from set 1, l nodes from set 2, so on.
The format of synchronous_standby_names has been updated to standby name
followed by the required count separated by hyphen. Ex: 'aa-1, bb-3'. The
transaction waits for all the specified number of standby in each group. Any
extra nodes with the same name will be considered potential. The special
entry * for the standby name is also supported.

I don't think that this is going in the good direction, what was
suggested mainly by Robert was to use a micro-language that would
allow far more extensibility that what you are proposing. See for
example CA+TgmobPWoeNMMEpfx0jWRvQufxVbqRv26Ezq_XHk21GxrXo9w@mail.gmail.com
for some ideas.

Doesn't this approach prevent us from specifying the "potential" synchronous
standby server? For example, imagine the case where you want to treat
the server AAA as synchronous standby. You also want to use the server BBB
as synchronous standby only if the server AAA goes down. IOW, you want to
prefer to the server AAA as synchronous standby rather than BBB.
Currently we can easily set up that case by just setting
synchronous_standby_names as follows.

synchronous_standby_names = 'AAA, BBB'

However, after we adopt the quorum commit feature with the proposed
macro-language, how can we set up that case? It seems impossible...
I'm afraid that this might be a backward compatibility issue.

Or we should extend the proposed micro-language so that it also can handle
the priority of each standby servers? Not sure that's possible, though.

Regards,

--
Fujii Masao

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#11Michael Paquier
michael@paquier.xyz
In reply to: Fujii Masao (#10)
Re: Support for N synchronous standby servers - take 2

On Wed, Jun 24, 2015 at 11:30 PM, Fujii Masao <masao.fujii@gmail.com> wrote:

On Fri, May 15, 2015 at 9:18 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:

On Fri, May 15, 2015 at 8:55 PM, Beena Emerson <memissemerson@gmail.com> wrote:

There was a discussion on support for N synchronous standby servers started
by Michael. Refer
http://archives.postgresql.org/message-id/CAB7nPqR9c84ig0ZUvhMQAMq53VQsD4rC82vYci4Dr27PVOFf9w@mail.gmail.com
. The use of hooks and dedicated language was suggested, however, it seemed
to be an overkill for the scenario and there was no consensus on this.
Exploring GUC-land was preferred.

Cool.

Please find attached a patch, built on Michael's patch from above mentioned
thread, which supports choosing different number of nodes from each set i.e.
k nodes from set 1, l nodes from set 2, so on.
The format of synchronous_standby_names has been updated to standby name
followed by the required count separated by hyphen. Ex: 'aa-1, bb-3'. The
transaction waits for all the specified number of standby in each group. Any
extra nodes with the same name will be considered potential. The special
entry * for the standby name is also supported.

I don't think that this is going in the good direction, what was
suggested mainly by Robert was to use a micro-language that would
allow far more extensibility that what you are proposing. See for
example CA+TgmobPWoeNMMEpfx0jWRvQufxVbqRv26Ezq_XHk21GxrXo9w@mail.gmail.com
for some ideas.

Doesn't this approach prevent us from specifying the "potential" synchronous
standby server? For example, imagine the case where you want to treat
the server AAA as synchronous standby. You also want to use the server BBB
as synchronous standby only if the server AAA goes down. IOW, you want to
prefer to the server AAA as synchronous standby rather than BBB.
Currently we can easily set up that case by just setting
synchronous_standby_names as follows.

synchronous_standby_names = 'AAA, BBB'

However, after we adopt the quorum commit feature with the proposed
macro-language, how can we set up that case? It seems impossible...
I'm afraid that this might be a backward compatibility issue.

Like that:
synchronous_standby_names = 'AAA, BBB'
The thing is that we need to support the old grammar as well to be
fully backward compatible, and that's actually equivalent to that in
the grammar: 1(AAA,BBB,CCC). This is something I understood was
included in Robert's draft proposal.

Or we should extend the proposed micro-language so that it also can handle
the priority of each standby servers? Not sure that's possible, though.

I am not sure that's really necessary, we need only to be able to
manage priorities within each subgroup. Putting it in a shape that
user can understand easily in pg_stat_replication looks more
challenging though. We are going to need a new view like
pg_stat_replication group that shows up the priority status of each
group, with one record for each group, taking into account that a
group can be included in another one.
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#12Fujii Masao
masao.fujii@gmail.com
In reply to: Michael Paquier (#11)
Re: Support for N synchronous standby servers - take 2

On Thu, Jun 25, 2015 at 12:15 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:

On Wed, Jun 24, 2015 at 11:30 PM, Fujii Masao <masao.fujii@gmail.com> wrote:

On Fri, May 15, 2015 at 9:18 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:

On Fri, May 15, 2015 at 8:55 PM, Beena Emerson <memissemerson@gmail.com> wrote:

There was a discussion on support for N synchronous standby servers started
by Michael. Refer
http://archives.postgresql.org/message-id/CAB7nPqR9c84ig0ZUvhMQAMq53VQsD4rC82vYci4Dr27PVOFf9w@mail.gmail.com
. The use of hooks and dedicated language was suggested, however, it seemed
to be an overkill for the scenario and there was no consensus on this.
Exploring GUC-land was preferred.

Cool.

Please find attached a patch, built on Michael's patch from above mentioned
thread, which supports choosing different number of nodes from each set i.e.
k nodes from set 1, l nodes from set 2, so on.
The format of synchronous_standby_names has been updated to standby name
followed by the required count separated by hyphen. Ex: 'aa-1, bb-3'. The
transaction waits for all the specified number of standby in each group. Any
extra nodes with the same name will be considered potential. The special
entry * for the standby name is also supported.

I don't think that this is going in the good direction, what was
suggested mainly by Robert was to use a micro-language that would
allow far more extensibility that what you are proposing. See for
example CA+TgmobPWoeNMMEpfx0jWRvQufxVbqRv26Ezq_XHk21GxrXo9w@mail.gmail.com
for some ideas.

Doesn't this approach prevent us from specifying the "potential" synchronous
standby server? For example, imagine the case where you want to treat
the server AAA as synchronous standby. You also want to use the server BBB
as synchronous standby only if the server AAA goes down. IOW, you want to
prefer to the server AAA as synchronous standby rather than BBB.
Currently we can easily set up that case by just setting
synchronous_standby_names as follows.

synchronous_standby_names = 'AAA, BBB'

However, after we adopt the quorum commit feature with the proposed
macro-language, how can we set up that case? It seems impossible...
I'm afraid that this might be a backward compatibility issue.

Like that:
synchronous_standby_names = 'AAA, BBB'
The thing is that we need to support the old grammar as well to be
fully backward compatible,

Yep, that's an idea. Supporting two different grammars is a bit messy, though...
If we merge the "priority" concept to the quorum commit,
that's better. But for now I have no idea about how we can do that.

and that's actually equivalent to that in
the grammar: 1(AAA,BBB,CCC).

I don't think that they are the same. In the case of 1(AAA,BBB,CCC), while
two servers AAA and BBB are running, the master server may return a success
of the transaction to the client just after it receives the ACK from BBB.
OTOH, in the case of AAA,BBB, that never happens. The master must wait for
the ACK from AAA to arrive before completing the transaction. And then,
if AAA goes down, BBB should become synchronous standby.

Regards,

--
Fujii Masao

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#13Michael Paquier
michael@paquier.xyz
In reply to: Fujii Masao (#12)
Re: Support for N synchronous standby servers - take 2

On Thu, Jun 25, 2015 at 12:57 PM, Fujii Masao wrote:

On Thu, Jun 25, 2015 at 12:15 PM, Michael Paquier wrote:

and that's actually equivalent to that in
the grammar: 1(AAA,BBB,CCC).

I don't think that they are the same. In the case of 1(AAA,BBB,CCC), while
two servers AAA and BBB are running, the master server may return a success
of the transaction to the client just after it receives the ACK from BBB.
OTOH, in the case of AAA,BBB, that never happens. The master must wait for
the ACK from AAA to arrive before completing the transaction. And then,
if AAA goes down, BBB should become synchronous standby.

Ah. Right. I missed your point, that's a bad day... We could have
multiple separators to define group types then:
- "()" where the order of acknowledgement does not matter
- "[]" where it does not.
You would find the old grammar with:
1[AAA,BBB,CCC]
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#14Simon Riggs
simon@2ndQuadrant.com
In reply to: Michael Paquier (#13)
Re: Support for N synchronous standby servers - take 2

On 25 June 2015 at 05:01, Michael Paquier <michael.paquier@gmail.com> wrote:

On Thu, Jun 25, 2015 at 12:57 PM, Fujii Masao wrote:

On Thu, Jun 25, 2015 at 12:15 PM, Michael Paquier wrote:

and that's actually equivalent to that in
the grammar: 1(AAA,BBB,CCC).

I don't think that they are the same. In the case of 1(AAA,BBB,CCC),

while

two servers AAA and BBB are running, the master server may return a

success

of the transaction to the client just after it receives the ACK from BBB.
OTOH, in the case of AAA,BBB, that never happens. The master must wait

for

the ACK from AAA to arrive before completing the transaction. And then,
if AAA goes down, BBB should become synchronous standby.

Ah. Right. I missed your point, that's a bad day... We could have
multiple separators to define group types then:
- "()" where the order of acknowledgement does not matter
- "[]" where it does not.
You would find the old grammar with:
1[AAA,BBB,CCC]

Let's start with a complex, fully described use case then work out how to
specify what we want.

I'm nervous of "it would be good ifs" because we do a ton of work only to
find a design flaw.

--
Simon Riggs http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/&gt;
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

#15Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Simon Riggs (#14)
Re: Support for N synchronous standby servers - take 2

On Thu, Jun 25, 2015 at 7:32 AM, Simon Riggs <simon@2ndquadrant.com> wrote:

On 25 June 2015 at 05:01, Michael Paquier <michael.paquier@gmail.com> wrote:

On Thu, Jun 25, 2015 at 12:57 PM, Fujii Masao wrote:

On Thu, Jun 25, 2015 at 12:15 PM, Michael Paquier wrote:

and that's actually equivalent to that in
the grammar: 1(AAA,BBB,CCC).

I don't think that they are the same. In the case of 1(AAA,BBB,CCC),
while
two servers AAA and BBB are running, the master server may return a
success
of the transaction to the client just after it receives the ACK from
BBB.
OTOH, in the case of AAA,BBB, that never happens. The master must wait
for
the ACK from AAA to arrive before completing the transaction. And then,
if AAA goes down, BBB should become synchronous standby.

Ah. Right. I missed your point, that's a bad day... We could have
multiple separators to define group types then:
- "()" where the order of acknowledgement does not matter
- "[]" where it does not.
You would find the old grammar with:
1[AAA,BBB,CCC]

Let's start with a complex, fully described use case then work out how to
specify what we want.

I'm nervous of "it would be good ifs" because we do a ton of work only to
find a design flaw.

I'm not sure specific implementation yet, but I came up with solution
for this case.

For example,
- s_s_name = '1(a, b), c, d'
The priority of both 'a' and 'b' are 1, and 'c' is 2, 'd' is 3.
i.g, 'b' and 'c' are potential sync node, and the quorum commit is
enable only between 'a' and 'b'.

- s_s_name = 'a, 1(b,c), d'
priority of 'a' is 1, 'b' and 'c' are 2, 'd' is 3.
So the quorum commit with 'b' and 'c' will be enabled after 'a' down.

With this idea, I think that we could use conventional syntax as in the past.
Though?

Regards,

--
Sawada Masahiko

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#16Michael Paquier
michael@paquier.xyz
In reply to: Simon Riggs (#14)
Re: Support for N synchronous standby servers - take 2

On Thu, Jun 25, 2015 at 8:32 PM, Simon Riggs wrote:

Let's start with a complex, fully described use case then work out how to
specify what we want.

Well, one of the most simple cases where quorum commit and this
feature would be useful for is that, with 2 data centers:
- on center 1, master A and standby B
- on center 2, standby C and standby D
With the current synchronous_standby_names, what we can do now is
ensuring that one node has acknowledged the commit of master. For
example synchronous_standby_names = 'B,C,D'. But you know that :)
What this feature would allow use to do is for example being able to
ensure that a node on the data center 2 has acknowledged the commit of
master, meaning that even if data center 1 completely lost for a
reason or another we have at least one node on center 2 that has lost
no data at transaction commit.

Now, regarding the way to express that, we need to use a concept of
node group for each element of synchronous_standby_names. A group
contains a set of elements, each element being a group or a single
node. And for each group we need to know three things when a commit
needs to be acknowledged:
- Does my group need to acknowledge the commit?
- If yes, how many elements in my group need to acknowledge it?
- Does the order of my elements matter?

That's where the micro-language idea makes sense to use. For example,
we can define a group using separators and like (elt1,...eltN) or
[elt1,elt2,eltN]. Appending a number in front of a group is essential
as well for quorum commits. Hence for example, assuming that '()' is
used for a group whose element order does not matter, if we use that:
- k(elt1,elt2,eltN) means that we need for the k elements in the set
to return true (aka commit confirmation).
- k[elt1,elt2,eltN] means that we need for the first k elements in the
set to return true.

When k is not defined for a group, k = 1. Using only elements
separated by commas for the upper group means that we wait for the
first element in the set (for backward compatibility), hence:
1(elt1,elt2,eltN) <=> elt1,elt2,eltN

We could as well mix each behavior, aka being able to define for a
group to wait for the first k elements and a total of j elements in
the whole set, but I don't think that we need to go that far. I
suspect that in most cases users will be satisfied with only cases
where there is a group of data centers, and they want to be sure that
one or two in each center has acknowledged a commit to master
(performance is not the matter here if centers are not close). Hence
in the case above, you could get the behavior wanted with this
definition:
2(B,(C,D))
With more data centers, like 3 (wait for two nodes in the 3rd set):
3(B,(C,D),2(E,F,G))
Users could define more levels of group, like that:
2(A,(B,(C,D)))
But that's actually something few people would do in real cases.

I'm nervous of "it would be good ifs" because we do a ton of work only to
find a design flaw.

That makes sense. Let's continue arguing on it then.
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#17Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Masahiko Sawada (#15)
Re: Support for N synchronous standby servers - take 2

Hi,

On 2015-06-26 AM 12:49, Sawada Masahiko wrote:

On Thu, Jun 25, 2015 at 7:32 AM, Simon Riggs <simon@2ndquadrant.com> wrote:

Let's start with a complex, fully described use case then work out how to
specify what we want.

I'm nervous of "it would be good ifs" because we do a ton of work only to
find a design flaw.

I'm not sure specific implementation yet, but I came up with solution
for this case.

For example,
- s_s_name = '1(a, b), c, d'
The priority of both 'a' and 'b' are 1, and 'c' is 2, 'd' is 3.
i.g, 'b' and 'c' are potential sync node, and the quorum commit is
enable only between 'a' and 'b'.

- s_s_name = 'a, 1(b,c), d'
priority of 'a' is 1, 'b' and 'c' are 2, 'd' is 3.
So the quorum commit with 'b' and 'c' will be enabled after 'a' down.

Do we really need to add a number like '1' in '1(a, b), c, d'?

The order of writing names already implies priorities like 2 & 3 for c & d,
respectively, like in your example. Having to write '1' for the group '(a, b)'
seems unnecessary, IMHO. Sorry if I have missed any previous discussion where
its necessity was discussed.

So, the order of writing standby names in the list should declare their
relative priorities and parentheses (possibly nested) should help inform about
the grouping (for quorum?)

Thanks,
Amit

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#18Michael Paquier
michael@paquier.xyz
In reply to: Amit Langote (#17)
Re: Support for N synchronous standby servers - take 2

On Fri, Jun 26, 2015 at 2:59 PM, Amit Langote wrote:

Do we really need to add a number like '1' in '1(a, b), c, d'?
The order of writing names already implies priorities like 2 & 3 for c & d,
respectively, like in your example. Having to write '1' for the group '(a, b)'
seems unnecessary, IMHO. Sorry if I have missed any previous discussion where
its necessity was discussed.

'1' is implied if no number is specified. That's the idea as written
here, not something decided of course :)

So, the order of writing standby names in the list should declare their
relative priorities and parentheses (possibly nested) should help inform about
the grouping (for quorum?)

Yes.
--
Michael

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#19Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#17)
Re: Support for N synchronous standby servers - take 2

On 2015-06-26 PM 02:59, Amit Langote wrote:

On 2015-06-26 AM 12:49, Sawada Masahiko wrote:

For example,
- s_s_name = '1(a, b), c, d'
The priority of both 'a' and 'b' are 1, and 'c' is 2, 'd' is 3.
i.g, 'b' and 'c' are potential sync node, and the quorum commit is
enable only between 'a' and 'b'.

- s_s_name = 'a, 1(b,c), d'
priority of 'a' is 1, 'b' and 'c' are 2, 'd' is 3.
So the quorum commit with 'b' and 'c' will be enabled after 'a' down.

Do we really need to add a number like '1' in '1(a, b), c, d'?

The order of writing names already implies priorities like 2 & 3 for c & d,
respectively, like in your example. Having to write '1' for the group '(a, b)'
seems unnecessary, IMHO. Sorry if I have missed any previous discussion where
its necessity was discussed.

So, the order of writing standby names in the list should declare their
relative priorities and parentheses (possibly nested) should help inform about
the grouping (for quorum?)

Oh, I missed Michael's latest message that describes its necessity. So, the
number is essentially the quorum for a group.

Sorry about the noise.

Thanks,
Amit

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#20Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Michael Paquier (#13)
Re: Support for N synchronous standby servers - take 2

Hi,

On 2015-06-25 PM 01:01, Michael Paquier wrote:

On Thu, Jun 25, 2015 at 12:57 PM, Fujii Masao wrote:

On Thu, Jun 25, 2015 at 12:15 PM, Michael Paquier wrote:

and that's actually equivalent to that in
the grammar: 1(AAA,BBB,CCC).

I don't think that they are the same. In the case of 1(AAA,BBB,CCC), while
two servers AAA and BBB are running, the master server may return a success
of the transaction to the client just after it receives the ACK from BBB.
OTOH, in the case of AAA,BBB, that never happens. The master must wait for
the ACK from AAA to arrive before completing the transaction. And then,
if AAA goes down, BBB should become synchronous standby.

Ah. Right. I missed your point, that's a bad day... We could have
multiple separators to define group types then:
- "()" where the order of acknowledgement does not matter
- "[]" where it does not.

For '[]', I guess you meant "where it does."

You would find the old grammar with:
1[AAA,BBB,CCC]

Thanks,
Amit

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#21Michael Paquier
michael@paquier.xyz
In reply to: Amit Langote (#20)
#22Robert Haas
robertmhaas@gmail.com
In reply to: Michael Paquier (#16)
#23Josh Berkus
josh@agliodbs.com
In reply to: Beena Emerson (#1)
#24Robert Haas
robertmhaas@gmail.com
In reply to: Josh Berkus (#23)
#25Josh Berkus
josh@agliodbs.com
In reply to: Michael Paquier (#2)
#26Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#16)
#27Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#26)
#28Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Josh Berkus (#25)
#29Michael Paquier
michael@paquier.xyz
In reply to: Josh Berkus (#23)
#30Josh Berkus
josh@agliodbs.com
In reply to: Fujii Masao (#12)
#31Michael Paquier
michael@paquier.xyz
In reply to: Josh Berkus (#30)
#32Josh Berkus
josh@agliodbs.com
In reply to: Michael Paquier (#16)
#33Fujii Masao
masao.fujii@gmail.com
In reply to: Josh Berkus (#32)
#34Peter Eisentraut
peter_e@gmx.net
In reply to: Michael Paquier (#16)
#35Peter Eisentraut
peter_e@gmx.net
In reply to: Josh Berkus (#25)
#36Peter Eisentraut
peter_e@gmx.net
In reply to: Fujii Masao (#33)
#37Peter Eisentraut
peter_e@gmx.net
In reply to: Josh Berkus (#23)
#38Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Josh Berkus (#32)
#39Josh Berkus
josh@agliodbs.com
In reply to: Josh Berkus (#23)
#40Michael Paquier
michael@paquier.xyz
In reply to: Peter Eisentraut (#34)
#41Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#38)
#42Fujii Masao
masao.fujii@gmail.com
In reply to: Josh Berkus (#39)
#43Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Fujii Masao (#42)
#44Beena Emerson
memissemerson@gmail.com
In reply to: Amit Langote (#43)
#45Michael Paquier
michael@paquier.xyz
In reply to: Amit Langote (#43)
#46Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Michael Paquier (#45)
#47Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Beena Emerson (#44)
#48Beena Emerson
memissemerson@gmail.com
In reply to: Fujii Masao (#42)
#49Fujii Masao
masao.fujii@gmail.com
In reply to: Beena Emerson (#48)
#50Simon Riggs
simon@2ndQuadrant.com
In reply to: Beena Emerson (#48)
#51Josh Berkus
josh@agliodbs.com
In reply to: Josh Berkus (#25)
#52Andres Freund
andres@anarazel.de
In reply to: Josh Berkus (#51)
#53Josh Berkus
josh@agliodbs.com
In reply to: Josh Berkus (#30)
#54Andres Freund
andres@anarazel.de
In reply to: Josh Berkus (#53)
#55Josh Berkus
josh@agliodbs.com
In reply to: Josh Berkus (#32)
#56Fujii Masao
masao.fujii@gmail.com
In reply to: Josh Berkus (#55)
#57Beena Emerson
memissemerson@gmail.com
In reply to: Josh Berkus (#53)
#58Beena Emerson
memissemerson@gmail.com
In reply to: Beena Emerson (#57)
#59Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#56)
#60Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#59)
#61Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#60)
#62Beena Emerson
memissemerson@gmail.com
In reply to: Masahiko Sawada (#61)
#63Andres Freund
andres@anarazel.de
In reply to: Josh Berkus (#55)
#64Josh Berkus
josh@agliodbs.com
In reply to: Josh Berkus (#32)
#65Andres Freund
andres@anarazel.de
In reply to: Josh Berkus (#64)
#66Michael Paquier
michael@paquier.xyz
In reply to: Andres Freund (#65)
#67Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#49)
#68Josh Berkus
josh@agliodbs.com
In reply to: Josh Berkus (#23)
#69Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Josh Berkus (#68)
#70Michael Paquier
michael@paquier.xyz
In reply to: Josh Berkus (#68)
#71Josh Berkus
josh@agliodbs.com
In reply to: Josh Berkus (#23)
#72Michael Paquier
michael@paquier.xyz
In reply to: Josh Berkus (#71)
#73Josh Berkus
josh@agliodbs.com
In reply to: Josh Berkus (#23)
#74Beena Emerson
memissemerson@gmail.com
In reply to: Josh Berkus (#68)
#75Beena Emerson
memissemerson@gmail.com
In reply to: Amit Langote (#69)
#76Michael Paquier
michael@paquier.xyz
In reply to: Josh Berkus (#73)
#77Beena Emerson
memissemerson@gmail.com
In reply to: Michael Paquier (#76)
#78Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Beena Emerson (#77)
#79Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#78)
#80Fujii Masao
masao.fujii@gmail.com
In reply to: Beena Emerson (#77)
#81Michael Paquier
michael@paquier.xyz
In reply to: Fujii Masao (#80)
#82Fujii Masao
masao.fujii@gmail.com
In reply to: Michael Paquier (#81)
#83Beena Emerson
memissemerson@gmail.com
In reply to: Fujii Masao (#82)
#84Amit Kapila
amit.kapila16@gmail.com
In reply to: Michael Paquier (#16)
#85Simon Riggs
simon@2ndQuadrant.com
In reply to: Michael Paquier (#76)
#86Simon Riggs
simon@2ndQuadrant.com
In reply to: Josh Berkus (#53)
#87Simon Riggs
simon@2ndQuadrant.com
In reply to: Josh Berkus (#32)
#88Michael Paquier
michael@paquier.xyz
In reply to: Simon Riggs (#85)
#89Simon Riggs
simon@2ndQuadrant.com
In reply to: Michael Paquier (#88)
#90Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Simon Riggs (#85)
#91Simon Riggs
simon@2ndQuadrant.com
In reply to: Alvaro Herrera (#90)
#92Robert Haas
robertmhaas@gmail.com
In reply to: Michael Paquier (#88)
#93Simon Riggs
simon@2ndQuadrant.com
In reply to: Robert Haas (#92)
#94Robert Haas
robertmhaas@gmail.com
In reply to: Simon Riggs (#93)
#95Amit Kapila
amit.kapila16@gmail.com
In reply to: Robert Haas (#94)
#96Beena Emerson
memissemerson@gmail.com
In reply to: Robert Haas (#94)
#97Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Robert Haas (#94)
#98Josh Berkus
josh@agliodbs.com
In reply to: Josh Berkus (#23)
#99Tom Lane
tgl@sss.pgh.pa.us
In reply to: Josh Berkus (#98)
#100Simon Riggs
simon@2ndQuadrant.com
In reply to: Tom Lane (#99)
#101Beena Emerson
memissemerson@gmail.com
In reply to: Simon Riggs (#100)
#102Simon Riggs
simon@2ndQuadrant.com
In reply to: Beena Emerson (#101)
#103Beena Emerson
memissemerson@gmail.com
In reply to: Simon Riggs (#102)
#104Michael Paquier
michael@paquier.xyz
In reply to: Beena Emerson (#103)
#105Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#104)
#106Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#105)
#107Beena Emerson
memissemerson@gmail.com
In reply to: Michael Paquier (#106)
#108Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#99)
#109Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Beena Emerson (#107)
#110Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#109)
#111Beena Emerson
memissemerson@gmail.com
In reply to: Michael Paquier (#110)
#112Michael Paquier
michael@paquier.xyz
In reply to: Beena Emerson (#111)
#113Beena Emerson
memissemerson@gmail.com
In reply to: Robert Haas (#108)
#114Michael Paquier
michael@paquier.xyz
In reply to: Beena Emerson (#113)
#115Bruce Momjian
bruce@momjian.us
In reply to: Josh Berkus (#39)
#116Jim Nasby
Jim.Nasby@BlueTreble.com
In reply to: Michael Paquier (#114)
#117Beena Emerson
memissemerson@gmail.com
In reply to: Michael Paquier (#114)
#118Michael Paquier
michael@paquier.xyz
In reply to: Beena Emerson (#117)
#119Thakur, Sameer
Sameer.Thakur@nttdata.com
In reply to: Beena Emerson (#117)
#120Thomas Munro
thomas.munro@gmail.com
In reply to: Beena Emerson (#117)
#121Thakur, Sameer
Sameer.Thakur@nttdata.com
In reply to: Beena Emerson (#117)
#122Beena Emerson
memissemerson@gmail.com
In reply to: Thomas Munro (#120)
#123Thomas Munro
thomas.munro@gmail.com
In reply to: Thomas Munro (#120)
#124Amir Rohan
amir.rohan@mail.com
In reply to: Thomas Munro (#123)
#125Robert Haas
robertmhaas@gmail.com
In reply to: Amir Rohan (#124)
#126Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#125)
#127Amir Rohan
amir.rohan@mail.com
In reply to: Tom Lane (#126)
#128Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#118)
#129Beena Emerson
memissemerson@gmail.com
In reply to: Amir Rohan (#127)
#130Beena Emerson
memissemerson@gmail.com
In reply to: Beena Emerson (#129)
#131Beena Emerson
memissemerson@gmail.com
In reply to: Masahiko Sawada (#128)
#132Amit Kapila
amit.kapila16@gmail.com
In reply to: Beena Emerson (#130)
#133Robert Haas
robertmhaas@gmail.com
In reply to: Amit Kapila (#132)
#134Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Robert Haas (#133)
#135Josh Berkus
josh@agliodbs.com
In reply to: Beena Emerson (#1)
#136Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Josh Berkus (#135)
#137Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#136)
#138Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#134)
#139Beena Emerson
memissemerson@gmail.com
In reply to: Michael Paquier (#138)
#140Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Beena Emerson (#139)
#141Michael Paquier
michael@paquier.xyz
In reply to: Beena Emerson (#139)
#142Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Josh Berkus (#135)
#143Beena Emerson
memissemerson@gmail.com
In reply to: Masahiko Sawada (#142)
#144Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Beena Emerson (#143)
#145Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#144)
#146Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#145)
#147Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#146)
#148Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#147)
#149Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#148)
#150Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#149)
#151Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#150)
#152Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Kyotaro Horiguchi (#151)
#153Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#152)
#154Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Masahiko Sawada (#153)
#155Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Masahiko Sawada (#154)
#156Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#154)
#157Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#156)
#158Thomas Munro
thomas.munro@gmail.com
In reply to: Masahiko Sawada (#157)
#159Thomas Munro
thomas.munro@gmail.com
In reply to: Thomas Munro (#158)
#160Michael Paquier
michael@paquier.xyz
In reply to: Thomas Munro (#159)
#161Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Thomas Munro (#159)
#162Thomas Munro
thomas.munro@gmail.com
In reply to: Masahiko Sawada (#161)
#163Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Thomas Munro (#162)
#164Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#163)
#165Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#164)
#166Michael Paquier
michael@paquier.xyz
In reply to: Kyotaro Horiguchi (#165)
#167Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Michael Paquier (#166)
#168Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Alvaro Herrera (#167)
#169Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#168)
#170Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#169)
#171Thom Brown
thom@linux.com
In reply to: Masahiko Sawada (#163)
#172Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#170)
#173Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Thom Brown (#171)
#174Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#172)
#175Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#173)
#176Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#175)
#177Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#176)
#178Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#177)
#179Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#178)
#180Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#179)
#181Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#180)
#182Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#181)
#183Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#182)
#184Michael Paquier
michael@paquier.xyz
In reply to: Fujii Masao (#183)
#185Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#183)
#186Robert Haas
robertmhaas@gmail.com
In reply to: Fujii Masao (#183)
#187Fujii Masao
masao.fujii@gmail.com
In reply to: Robert Haas (#186)
#188Robert Haas
robertmhaas@gmail.com
In reply to: Fujii Masao (#187)
#189Fujii Masao
masao.fujii@gmail.com
In reply to: Robert Haas (#188)
#190Thom Brown
thom@linux.com
In reply to: Fujii Masao (#189)
#191Robert Haas
robertmhaas@gmail.com
In reply to: Fujii Masao (#189)
#192Michael Paquier
michael@paquier.xyz
In reply to: Robert Haas (#191)
#193Robert Haas
robertmhaas@gmail.com
In reply to: Michael Paquier (#192)
#194Michael Paquier
michael@paquier.xyz
In reply to: Robert Haas (#193)
#195Robert Haas
robertmhaas@gmail.com
In reply to: Michael Paquier (#194)
#196Michael Paquier
michael@paquier.xyz
In reply to: Michael Paquier (#194)
#197Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#196)
#198Michael Paquier
michael@paquier.xyz
In reply to: Michael Paquier (#196)
#199Josh Berkus
josh@agliodbs.com
In reply to: Kyotaro Horiguchi (#152)
#200Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#198)
#201Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#200)
#202kharagesuraj
suraj.kharage@nttdata.com
In reply to: Masahiko Sawada (#185)
#203Fujii Masao
masao.fujii@gmail.com
In reply to: Michael Paquier (#198)
#204kharagesuraj
suraj.kharage@nttdata.com
In reply to: kharagesuraj (#202)
#205Michael Paquier
michael@paquier.xyz
In reply to: kharagesuraj (#204)
#206Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#203)
#207Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: kharagesuraj (#204)
#208Michael Paquier
michael@paquier.xyz
In reply to: Kyotaro Horiguchi (#206)
#209Michael Paquier
michael@paquier.xyz
In reply to: Robert Haas (#186)
#210Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#209)
#211Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#210)
#212Michael Paquier
michael@paquier.xyz
In reply to: Fujii Masao (#211)
#213Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#208)
#214Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#212)
#215Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#211)
#216Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#214)
#217Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#214)
#218Michael Paquier
michael@paquier.xyz
In reply to: Michael Paquier (#217)
#219Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#218)
#220Michael Paquier
michael@paquier.xyz
In reply to: Kyotaro Horiguchi (#219)
#221Robert Haas
robertmhaas@gmail.com
In reply to: Michael Paquier (#198)
#222Michael Paquier
michael@paquier.xyz
In reply to: Robert Haas (#221)
#223Robert Haas
robertmhaas@gmail.com
In reply to: Michael Paquier (#222)
#224Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#220)
#225Michael Paquier
michael@paquier.xyz
In reply to: Kyotaro Horiguchi (#224)
#226Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#225)
#227kharagesuraj
suraj.kharage@nttdata.com
In reply to: Masahiko Sawada (#226)
#228Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#226)
#229Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#228)
#230Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Kyotaro Horiguchi (#229)
#231Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#230)
#232Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#231)
#233Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#232)
#234Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Masahiko Sawada (#233)
#235Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#234)
#236Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Kyotaro Horiguchi (#235)
#237Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#236)
#238Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#237)
#239Thomas Munro
thomas.munro@gmail.com
In reply to: Masahiko Sawada (#237)
#240Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Thomas Munro (#239)
#241Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Masahiko Sawada (#240)
#242Thomas Munro
thomas.munro@gmail.com
In reply to: Masahiko Sawada (#241)
#243Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#240)
#244Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#243)
#245Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#241)
#246Thomas Munro
thomas.munro@gmail.com
In reply to: Fujii Masao (#245)
#247Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Thomas Munro (#246)
#248Fujii Masao
masao.fujii@gmail.com
In reply to: Fujii Masao (#245)
#249Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#248)
#250Fujii Masao
masao.fujii@gmail.com
In reply to: Kyotaro Horiguchi (#249)
#251Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#250)
#252Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#251)
#253Michael Paquier
michael@paquier.xyz
In reply to: Fujii Masao (#252)
#254Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#250)
#255Fujii Masao
masao.fujii@gmail.com
In reply to: Kyotaro Horiguchi (#254)
#256Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#255)
#257Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#256)
#258Fujii Masao
masao.fujii@gmail.com
In reply to: Kyotaro Horiguchi (#257)
#259Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#257)
#260Robert Haas
robertmhaas@gmail.com
In reply to: Masahiko Sawada (#259)
#261Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Robert Haas (#260)
#262Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#259)
#263Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Kyotaro Horiguchi (#262)
#264Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#262)
#265Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#264)
#266Fujii Masao
masao.fujii@gmail.com
In reply to: Kyotaro Horiguchi (#265)
#267Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#266)
#268Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#267)
#269Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Masahiko Sawada (#268)
#270Thomas Munro
thomas.munro@gmail.com
In reply to: Masahiko Sawada (#269)
#271Thomas Munro
thomas.munro@gmail.com
In reply to: Thomas Munro (#270)
#272Fujii Masao
masao.fujii@gmail.com
In reply to: Thomas Munro (#271)
#273Abhijit Menon-Sen
ams@2ndQuadrant.com
In reply to: Fujii Masao (#272)
#274Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Thomas Munro (#271)
#275Simon Riggs
simon@2ndQuadrant.com
In reply to: Fujii Masao (#272)
#276Andres Freund
andres@anarazel.de
In reply to: Simon Riggs (#275)
#277Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#274)
#278Simon Riggs
simon@2ndQuadrant.com
In reply to: Andres Freund (#276)
#279Amit Kapila
amit.kapila16@gmail.com
In reply to: Fujii Masao (#272)
#280Simon Riggs
simon@2ndQuadrant.com
In reply to: Simon Riggs (#275)
#281Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Simon Riggs (#280)
#282Fujii Masao
masao.fujii@gmail.com
In reply to: Abhijit Menon-Sen (#273)
#283Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#277)
#284Simon Riggs
simon@2ndQuadrant.com
In reply to: Amit Langote (#281)
#285Fujii Masao
masao.fujii@gmail.com
In reply to: Andres Freund (#276)
#286Simon Riggs
simon@2ndQuadrant.com
In reply to: Fujii Masao (#285)
#287Andres Freund
andres@anarazel.de
In reply to: Simon Riggs (#286)
#288Fujii Masao
masao.fujii@gmail.com
In reply to: Amit Kapila (#279)
#289Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#283)
#290Fujii Masao
masao.fujii@gmail.com
In reply to: Simon Riggs (#280)
#291Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#277)
#292Fujii Masao
masao.fujii@gmail.com
In reply to: Simon Riggs (#284)
#293Simon Riggs
simon@2ndQuadrant.com
In reply to: Fujii Masao (#290)
#294Fujii Masao
masao.fujii@gmail.com
In reply to: Kyotaro Horiguchi (#289)
#295Simon Riggs
simon@2ndQuadrant.com
In reply to: Fujii Masao (#292)
#296Fujii Masao
masao.fujii@gmail.com
In reply to: Simon Riggs (#293)
#297Simon Riggs
simon@2ndQuadrant.com
In reply to: Fujii Masao (#296)
#298Amit Kapila
amit.kapila16@gmail.com
In reply to: Fujii Masao (#288)
#299Robert Haas
robertmhaas@gmail.com
In reply to: Fujii Masao (#272)
#300Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#291)
#301Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#294)
#302Fujii Masao
masao.fujii@gmail.com
In reply to: Simon Riggs (#297)
#303Fujii Masao
masao.fujii@gmail.com
In reply to: Amit Kapila (#298)
#304Fujii Masao
masao.fujii@gmail.com
In reply to: Robert Haas (#299)
#305Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#302)
#306Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#305)
#307Fujii Masao
masao.fujii@gmail.com
In reply to: Kyotaro Horiguchi (#301)
#308Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#305)
#309Michael Paquier
michael@paquier.xyz
In reply to: Fujii Masao (#307)
#310Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#307)
#311Michael Paquier
michael@paquier.xyz
In reply to: Michael Paquier (#309)
#312Fujii Masao
masao.fujii@gmail.com
In reply to: Michael Paquier (#309)
#313Fujii Masao
masao.fujii@gmail.com
In reply to: Kyotaro Horiguchi (#310)
#314Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Kyotaro Horiguchi (#310)
#315Fujii Masao
masao.fujii@gmail.com
In reply to: Fujii Masao (#312)
#316Michael Paquier
michael@paquier.xyz
In reply to: Fujii Masao (#315)
#317Simon Riggs
simon@2ndQuadrant.com
In reply to: Fujii Masao (#315)
#318Amit Kapila
amit.kapila16@gmail.com
In reply to: Fujii Masao (#303)
#319Fujii Masao
masao.fujii@gmail.com
In reply to: Amit Kapila (#318)
#320Amit Kapila
amit.kapila16@gmail.com
In reply to: Fujii Masao (#319)
#321Fujii Masao
masao.fujii@gmail.com
In reply to: Amit Kapila (#320)
#322Amit Kapila
amit.kapila16@gmail.com
In reply to: Fujii Masao (#321)
#323Fujii Masao
masao.fujii@gmail.com
In reply to: Amit Kapila (#322)
#324Amit Kapila
amit.kapila16@gmail.com
In reply to: Fujii Masao (#323)
#325Fujii Masao
masao.fujii@gmail.com
In reply to: Amit Kapila (#324)
#326Amit Kapila
amit.kapila16@gmail.com
In reply to: Fujii Masao (#325)
#327Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Fujii Masao (#325)
#328Amit Kapila
amit.kapila16@gmail.com
In reply to: Amit Langote (#327)
#329Fujii Masao
masao.fujii@gmail.com
In reply to: Amit Kapila (#328)
#330Fujii Masao
masao.fujii@gmail.com
In reply to: Michael Paquier (#311)
#331Thomas Munro
thomas.munro@gmail.com
In reply to: Fujii Masao (#315)
#332Fujii Masao
masao.fujii@gmail.com
In reply to: Thomas Munro (#331)
#333Michael Paquier
michael@paquier.xyz
In reply to: Fujii Masao (#330)
#334Fujii Masao
masao.fujii@gmail.com
In reply to: Michael Paquier (#333)
#335Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#334)
#336Amit Kapila
amit.kapila16@gmail.com
In reply to: Fujii Masao (#329)
#337Jeff Janes
jeff.janes@gmail.com
In reply to: Fujii Masao (#315)
#338Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jeff Janes (#337)
#339Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Tom Lane (#338)
#340Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#339)
#341Fujii Masao
masao.fujii@gmail.com
In reply to: Tom Lane (#338)
#342Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#340)
#343Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#342)
#344Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Fujii Masao (#343)
#345Fujii Masao
masao.fujii@gmail.com
In reply to: Masahiko Sawada (#344)
#346Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#345)
#347Amit Kapila
amit.kapila16@gmail.com
In reply to: Kyotaro Horiguchi (#346)
#348Fujii Masao
masao.fujii@gmail.com
In reply to: Amit Kapila (#347)
#349Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Fujii Masao (#348)
#350Michael Paquier
michael@paquier.xyz
In reply to: Amit Kapila (#347)
#351Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#349)
#352Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#350)
#353Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Kyotaro Horiguchi (#352)
#354Michael Paquier
michael@paquier.xyz
In reply to: Kyotaro Horiguchi (#352)
#355Michael Paquier
michael@paquier.xyz
In reply to: Kyotaro Horiguchi (#353)
#356Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#351)
#357Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#355)
#358Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Kapila (#356)
#359Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#358)
#360Amit Kapila
amit.kapila16@gmail.com
In reply to: Kyotaro Horiguchi (#358)
#361Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Kapila (#360)
#362Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#359)
#363Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Kyotaro Horiguchi (#362)
#364Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Masahiko Sawada (#363)
#365Amit Kapila
amit.kapila16@gmail.com
In reply to: Kyotaro Horiguchi (#364)
#366Michael Paquier
michael@paquier.xyz
In reply to: Amit Kapila (#365)
#367Amit Kapila
amit.kapila16@gmail.com
In reply to: Michael Paquier (#366)
#368Tom Lane
tgl@sss.pgh.pa.us
In reply to: Amit Kapila (#367)
#369Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Tom Lane (#368)
#370Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Kyotaro Horiguchi (#369)
#371Amit Kapila
amit.kapila16@gmail.com
In reply to: Kyotaro Horiguchi (#370)
#372Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Amit Kapila (#371)
#373Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Kyotaro Horiguchi (#372)
#374Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kyotaro Horiguchi (#373)
#375Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kyotaro Horiguchi (#373)
#376Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Tom Lane (#375)
#377Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kyotaro Horiguchi (#376)