Logical Replication of sequences

Started by Amit Kapilaalmost 2 years ago507 messages
Jump to latest
#1Amit Kapila
amit.kapila16@gmail.com

In the past, we have discussed various approaches to replicate
sequences by decoding the sequence changes from WAL. However, we faced
several challenges to achieve the same, some of which are due to the
non-transactional nature of sequences. The major ones were: (a)
correctness of the decoding part, some of the problems were discussed
at [1]/messages/by-id/e4145f77-6f37-40e0-a770-aba359c50b93@enterprisedb.com[2]/messages/by-id/CAA4eK1Lxt+5a9fA-B7FRzfd1vns=EwZTF5z9_xO9Ms4wsqD88Q@mail.gmail.com[3]/messages/by-id/CAA4eK1KR4=yALKP0pOdVkqUwoUqD_v7oU3HzY-w0R_EBvgHL2w@mail.gmail.com (b) handling of sequences especially adding certain
sequences automatically (e.g. sequences backing SERIAL/BIGSERIAL
columns) for built-in logical replication is not considered in the
proposed work [1]/messages/by-id/e4145f77-6f37-40e0-a770-aba359c50b93@enterprisedb.com (c) there were some performance concerns in not so
frequent scenarios [4]/messages/by-id/12822961-b7de-9d59-dd27-2e3dc3980c7e@enterprisedb.com (see performance issues), we can probably deal
with this by making sequences optional for builtin logical replication

It could be possible that we can deal with these and any other issues
with more work but as the use case for this feature is primarily major
version upgrades it is not clear that we want to make such a big
change to the code or are there better alternatives to achieve the
same.

This time at pgconf.dev (https://2024.pgconf.dev/), we discussed
alternative approaches for this work which I would like to summarize.
The various methods we discussed are as follows:

1. Provide a tool to copy all the sequences from publisher to
subscriber. The major drawback is that users need to perform this as
an additional step during the upgrade which would be inconvenient and
probably not as useful as some built-in mechanism.
2. Provide a command say Alter Subscription ... Replicate Sequences
(or something like that) which users can perform before shutdown of
the publisher node during upgrade. This will allow copying all the
sequences from the publisher node to the subscriber node directly.
Similar to previous approach, this could also be inconvenient for
users.
3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

Any other ideas?

I have added the members I remember that were part of the discussion
in the email. Please feel free to correct me if I have misunderstood
or missed any point we talked about.

Thoughts?

[1]: /messages/by-id/e4145f77-6f37-40e0-a770-aba359c50b93@enterprisedb.com
[2]: /messages/by-id/CAA4eK1Lxt+5a9fA-B7FRzfd1vns=EwZTF5z9_xO9Ms4wsqD88Q@mail.gmail.com
[3]: /messages/by-id/CAA4eK1KR4=yALKP0pOdVkqUwoUqD_v7oU3HzY-w0R_EBvgHL2w@mail.gmail.com
[4]: /messages/by-id/12822961-b7de-9d59-dd27-2e3dc3980c7e@enterprisedb.com

--
With Regards,
Amit Kapila.

#2Bharath Rupireddy
bharath.rupireddyforpostgres@gmail.com
In reply to: Amit Kapila (#1)
Re: Logical Replication of sequences

Hi,

On Tue, Jun 4, 2024 at 4:27 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

Thanks. IIUC, both of the above approaches decode the sequences during
only shutdown. I'm wondering, why not periodically decode and
replicate the published sequences so that the decoding at the shutdown
will not take that longer? I can imagine a case where there are tens
of thousands of sequences in a production server, and surely decoding
and sending them just during the shutdown can take a lot of time
hampering the overall server uptime.

--
Bharath Rupireddy
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

#3Amit Kapila
amit.kapila16@gmail.com
In reply to: Bharath Rupireddy (#2)
Re: Logical Replication of sequences

On Tue, Jun 4, 2024 at 4:53 PM Bharath Rupireddy
<bharath.rupireddyforpostgres@gmail.com> wrote:

On Tue, Jun 4, 2024 at 4:27 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

Thanks. IIUC, both of the above approaches decode the sequences during
only shutdown. I'm wondering, why not periodically decode and
replicate the published sequences so that the decoding at the shutdown
will not take that longer?

Even if we decode it periodically (say each time we decode the
checkpoint record) then also we need to send the entire set of
sequences at shutdown. This is because the sequences may have changed
from the last time we sent them.

I can imagine a case where there are tens
of thousands of sequences in a production server, and surely decoding
and sending them just during the shutdown can take a lot of time
hampering the overall server uptime.

It is possible but we will send only the sequences that belong to
publications for which walsender is supposed to send the required
data. Now, we can also imagine providing option 2 (Alter Subscription
... Replicate Sequences) so that users can replicate sequences before
shutdown and then disable the subscriptions so that there won't be a
corresponding walsender.

--
With Regards,
Amit Kapila.

#4Ashutosh Bapat
ashutosh.bapat@enterprisedb.com
In reply to: Amit Kapila (#1)
Re: Logical Replication of sequences

On Tue, Jun 4, 2024 at 4:27 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

Any other ideas?

In case of primary crash the sequence won't get replicated. That is true
even with the previous approach in case walsender is shut down because of a
crash, but it is more serious with this approach. How about periodically
sending this information?

--
Best Wishes,
Ashutosh Bapat

#5Yogesh Sharma
yogesh.sharma@catprosystems.com
In reply to: Amit Kapila (#1)
Re: Logical Replication of sequences

On 6/4/24 06:57, Amit Kapila wrote:

1. Provide a tool to copy all the sequences from publisher to
subscriber. The major drawback is that users need to perform this as
an additional step during the upgrade which would be inconvenient and
probably not as useful as some built-in mechanism.

Agree, this requires additional steps. Not a preferred approach in my
opinion. When a large set of sequences are present, it will add
additional downtime for upgrade process.

2. Provide a command say Alter Subscription ... Replicate Sequences
(or something like that) which users can perform before shutdown of
the publisher node during upgrade. This will allow copying all the
sequences from the publisher node to the subscriber node directly.
Similar to previous approach, this could also be inconvenient for
users.

This is similar to option 1 except that it is a SQL command now. Still
not a preferred approach in my opinion. When a large set of sequences are
present, it will add additional downtime for upgrade process.

3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

At the time of shutdown a) most logical upgrades don't necessarily call
for shutdown b) it will still add to total downtime with large set of
sequences. Incremental option is better as it will not require a shutdown.

I do see a scenario where sequence of events can lead to loss of sequence
and generate duplicate sequence values, if subscriber starts consuming
sequences while publisher is also consuming them. In such cases, subscriber
shall not be allowed sequence consumption.

--
Kind Regards,
Yogesh Sharma
Open Source Enthusiast and Advocate
PostgreSQL Contributors Team @ RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

#6Amit Kapila
amit.kapila16@gmail.com
In reply to: Ashutosh Bapat (#4)
Re: Logical Replication of sequences

On Tue, Jun 4, 2024 at 7:40 PM Ashutosh Bapat
<ashutosh.bapat.oss@gmail.com> wrote:

On Tue, Jun 4, 2024 at 4:27 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

Any other ideas?

In case of primary crash the sequence won't get replicated. That is true even with the previous approach in case walsender is shut down because of a crash, but it is more serious with this approach.

Right, but if we just want to support a major version upgrade scenario
then this should be fine because upgrades require a clean shutdown.

How about periodically sending this information?

Now, if we want to support some sort of failover then probably this
will help. Do you have that use case in mind? If we want to send
periodically then we can do it when decoding checkpoint
(XLOG_CHECKPOINT_ONLINE) or some other periodic WAL record like
running_xacts (XLOG_RUNNING_XACTS).

--
With Regards,
Amit Kapila.

#7Amit Kapila
amit.kapila16@gmail.com
In reply to: Yogesh Sharma (#5)
Re: Logical Replication of sequences

On Tue, Jun 4, 2024 at 8:56 PM Yogesh Sharma
<yogesh.sharma@catprosystems.com> wrote:

On 6/4/24 06:57, Amit Kapila wrote:

2. Provide a command say Alter Subscription ... Replicate Sequences
(or something like that) which users can perform before shutdown of
the publisher node during upgrade. This will allow copying all the
sequences from the publisher node to the subscriber node directly.
Similar to previous approach, this could also be inconvenient for
users.

This is similar to option 1 except that it is a SQL command now.

Right, but I would still prefer a command as it provides clear steps
for the upgrade. Users need to perform (a) Replicate Sequences for a
particular subscription (b) Disable that subscription (c) Perform (a)
and (b) for all the subscriptions corresponding to the publisher we
want to shut down for upgrade.

I agree there are some manual steps involved here but it is advisable
for users to ensure that they have received the required data on the
subscriber before the upgrade of the publisher node, otherwise, they
may not be able to continue replication after the upgrade. For
example, see the "Prepare for publisher upgrades" step in pg_upgrade
docs [1]https://www.postgresql.org/docs/devel/pgupgrade.html.

3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

At the time of shutdown a) most logical upgrades don't necessarily call
for shutdown

Won't the major version upgrade expect that the node is down? Refer to
step "Stop both servers" in [1]https://www.postgresql.org/docs/devel/pgupgrade.html.

b) it will still add to total downtime with large set of

sequences. Incremental option is better as it will not require a shutdown.

I do see a scenario where sequence of events can lead to loss of sequence
and generate duplicate sequence values, if subscriber starts consuming
sequences while publisher is also consuming them. In such cases, subscriber
shall not be allowed sequence consumption.

It would be fine to not allow subscribers to consume sequences that
are being logically replicated but what about the cases where we
haven't sent the latest values of sequences before the shutdown of the
publisher? In such a case, the publisher would have already consumed
some values that wouldn't have been sent to the subscriber and now
when the publisher is down then even if we re-allow the sequence
values to be consumed from the subscriber, it can lead to duplicate
values.

[1]: https://www.postgresql.org/docs/devel/pgupgrade.html

--
With Regards,
Amit Kapila.

#8Peter Eisentraut
peter_e@gmx.net
In reply to: Amit Kapila (#1)
Re: Logical Replication of sequences

On 04.06.24 12:57, Amit Kapila wrote:

2. Provide a command say Alter Subscription ... Replicate Sequences
(or something like that) which users can perform before shutdown of
the publisher node during upgrade. This will allow copying all the
sequences from the publisher node to the subscriber node directly.
Similar to previous approach, this could also be inconvenient for
users.

I would start with this. In any case, you're going to need to write
code to collect all the sequence values, send them over some protocol,
apply them on the subscriber. The easiest way to start is to trigger
that manually. Then later you can add other ways to trigger it, either
by timer or around shutdown, or whatever other ideas there might be.

#9Amit Kapila
amit.kapila16@gmail.com
In reply to: Amit Kapila (#7)
Re: Logical Replication of sequences

On Wed, Jun 5, 2024 at 9:13 AM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Tue, Jun 4, 2024 at 8:56 PM Yogesh Sharma
<yogesh.sharma@catprosystems.com> wrote:

On 6/4/24 06:57, Amit Kapila wrote:

2. Provide a command say Alter Subscription ... Replicate Sequences
(or something like that) which users can perform before shutdown of
the publisher node during upgrade. This will allow copying all the
sequences from the publisher node to the subscriber node directly.
Similar to previous approach, this could also be inconvenient for
users.

This is similar to option 1 except that it is a SQL command now.

Right, but I would still prefer a command as it provides clear steps
for the upgrade. Users need to perform (a) Replicate Sequences for a
particular subscription (b) Disable that subscription (c) Perform (a)
and (b) for all the subscriptions corresponding to the publisher we
want to shut down for upgrade.

Another advantage of this approach over just a plain tool to copy all
sequences before upgrade is that here we can have the facility to copy
just the required sequences. I mean the set sequences that the user
has specified as part of the publication.

--
With Regards,
Amit Kapila.

#10Bharath Rupireddy
bharath.rupireddyforpostgres@gmail.com
In reply to: Amit Kapila (#3)
Re: Logical Replication of sequences

Hi,

On Tue, Jun 4, 2024 at 5:40 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

Even if we decode it periodically (say each time we decode the
checkpoint record) then also we need to send the entire set of
sequences at shutdown. This is because the sequences may have changed
from the last time we sent them.

Agree. How about decoding and sending only the sequences that are
changed from the last time when they were sent? I know it requires a
bit of tracking and more work, but all I'm looking for is to reduce
the amount of work that walsenders need to do during the shutdown.

Having said that, I like the idea of letting the user sync the
sequences via ALTER SUBSCRIPTION command and not weave the logic into
the shutdown checkpoint path. As Peter Eisentraut said here
/messages/by-id/42e5cb35-4aeb-4f58-8091-90619c7c3ecc@eisentraut.org,
this can be a good starting point to get going.

I can imagine a case where there are tens
of thousands of sequences in a production server, and surely decoding
and sending them just during the shutdown can take a lot of time
hampering the overall server uptime.

It is possible but we will send only the sequences that belong to
publications for which walsender is supposed to send the required
data.

Right, but what if all the publication tables can have tens of
thousands of sequences.

Now, we can also imagine providing option 2 (Alter Subscription
... Replicate Sequences) so that users can replicate sequences before
shutdown and then disable the subscriptions so that there won't be a
corresponding walsender.

As stated above, I like this idea to start with.

--
Bharath Rupireddy
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

#11Amit Kapila
amit.kapila16@gmail.com
In reply to: Peter Eisentraut (#8)
Re: Logical Replication of sequences

On Wed, Jun 5, 2024 at 12:51 PM Peter Eisentraut <peter@eisentraut.org> wrote:

On 04.06.24 12:57, Amit Kapila wrote:

2. Provide a command say Alter Subscription ... Replicate Sequences
(or something like that) which users can perform before shutdown of
the publisher node during upgrade. This will allow copying all the
sequences from the publisher node to the subscriber node directly.
Similar to previous approach, this could also be inconvenient for
users.

I would start with this. In any case, you're going to need to write
code to collect all the sequence values, send them over some protocol,
apply them on the subscriber. The easiest way to start is to trigger
that manually. Then later you can add other ways to trigger it, either
by timer or around shutdown, or whatever other ideas there might be.

Agreed. To achieve this, we can allow sequences to be copied during
the initial CREATE SUBSCRIPTION command similar to what we do for
tables. And then later by new/existing command, we re-copy the already
existing sequences on the subscriber.

The options for the new command could be:
Alter Subscription ... Refresh Sequences
Alter Subscription ... Replicate Sequences

In the second option, we need to introduce a new keyword Replicate.
Can you think of any better option?

In addition to the above, the command Alter Subscription .. Refresh
Publication will fetch any missing sequences similar to what it does
for tables.

Thoughts?

--
With Regards,
Amit Kapila.

#12Ashutosh Bapat
ashutosh.bapat@enterprisedb.com
In reply to: Amit Kapila (#6)
Re: Logical Replication of sequences

On Wed, Jun 5, 2024 at 8:45 AM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Tue, Jun 4, 2024 at 7:40 PM Ashutosh Bapat
<ashutosh.bapat.oss@gmail.com> wrote:

On Tue, Jun 4, 2024 at 4:27 PM Amit Kapila <amit.kapila16@gmail.com>

wrote:

3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

Any other ideas?

In case of primary crash the sequence won't get replicated. That is true

even with the previous approach in case walsender is shut down because of a
crash, but it is more serious with this approach.

Right, but if we just want to support a major version upgrade scenario
then this should be fine because upgrades require a clean shutdown.

How about periodically sending this information?

Now, if we want to support some sort of failover then probably this
will help. Do you have that use case in mind?

Regular failover was a goal for supporting logical replication of
sequences. That might be more common than major upgrade scenario.

If we want to send
periodically then we can do it when decoding checkpoint
(XLOG_CHECKPOINT_ONLINE) or some other periodic WAL record like
running_xacts (XLOG_RUNNING_XACTS).

Yeah. I am thinking along those lines.

It must be noted, however, that none of those optional make sure that the
replicated sequence's states are consistent with the replicated object
state which use those sequences. E.g. table t1 uses sequence s1. By last
sequence replication, as of time T1, let's say t1 had consumed values upto
vl1 from s1. But later, by time T2, it consumed values upto vl2 which were
not replicated but the changes to t1 by T2 were replicated. If failover
happens at that point, INSERTs on t1 would fail because of duplicate keys
(values between vl1 and vl2). Previous attempt to support logical sequence
replication solved this problem by replicating a future state of sequences
(current value +/- log count). Similarly, if the sequence was ALTERed
between T1 and T2, the state of sequence on replica would be inconsistent
with the state of t1. Failing over at this stage, might end t1 in an
inconsistent state.

--
Best Wishes,
Ashutosh Bapat

#13Amit Kapila
amit.kapila16@gmail.com
In reply to: Ashutosh Bapat (#12)
Re: Logical Replication of sequences

On Wed, Jun 5, 2024 at 6:01 PM Ashutosh Bapat
<ashutosh.bapat.oss@gmail.com> wrote:

On Wed, Jun 5, 2024 at 8:45 AM Amit Kapila <amit.kapila16@gmail.com> wrote:

How about periodically sending this information?

Now, if we want to support some sort of failover then probably this
will help. Do you have that use case in mind?

Regular failover was a goal for supporting logical replication of sequences. That might be more common than major upgrade scenario.

We can't support regular failovers to subscribers unless we can
replicate/copy slots because the existing nodes connected to the
current publisher/primary would expect that. It should be primarily
useful for major version upgrades at this stage.

If we want to send
periodically then we can do it when decoding checkpoint
(XLOG_CHECKPOINT_ONLINE) or some other periodic WAL record like
running_xacts (XLOG_RUNNING_XACTS).

Yeah. I am thinking along those lines.

It must be noted, however, that none of those optional make sure that the replicated sequence's states are consistent with the replicated object state which use those sequences.

Right, I feel as others are advocating, it seems better to support it
manually via command and then later we can extend it to do at shutdown
or at some regular intervals. If we do that then we should be able to
support major version upgrades and planned switchover.

--
With Regards,
Amit Kapila.

#14Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#7)
Re: Logical Replication of sequences

On Wed, Jun 5, 2024 at 12:43 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Tue, Jun 4, 2024 at 8:56 PM Yogesh Sharma
<yogesh.sharma@catprosystems.com> wrote:

On 6/4/24 06:57, Amit Kapila wrote:

2. Provide a command say Alter Subscription ... Replicate Sequences
(or something like that) which users can perform before shutdown of
the publisher node during upgrade. This will allow copying all the
sequences from the publisher node to the subscriber node directly.
Similar to previous approach, this could also be inconvenient for
users.

This is similar to option 1 except that it is a SQL command now.

Right, but I would still prefer a command as it provides clear steps
for the upgrade. Users need to perform (a) Replicate Sequences for a
particular subscription (b) Disable that subscription (c) Perform (a)
and (b) for all the subscriptions corresponding to the publisher we
want to shut down for upgrade.

I agree there are some manual steps involved here but it is advisable
for users to ensure that they have received the required data on the
subscriber before the upgrade of the publisher node, otherwise, they
may not be able to continue replication after the upgrade. For
example, see the "Prepare for publisher upgrades" step in pg_upgrade
docs [1].

3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

At the time of shutdown a) most logical upgrades don't necessarily call
for shutdown

Won't the major version upgrade expect that the node is down? Refer to
step "Stop both servers" in [1].

I think the idea is that the publisher is the old version and the
subscriber is the new version, and changes generated on the publisher
are replicated to the subscriber via logical replication. And at some
point, we change the application (or a router) settings so that no
more transactions come to the publisher, do the last upgrade
preparation work (e.g. copying the latest sequence values if
requried), and then change the application so that new transactions
come to the subscriber.

I remember the blog post about Knock doing a similar process to
upgrade the clusters with minimal downtime[1]https://knock.app/blog/zero-downtime-postgres-upgrades.

Regards,

[1]: https://knock.app/blog/zero-downtime-postgres-upgrades

--
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com

#15Amit Kapila
amit.kapila16@gmail.com
In reply to: Bharath Rupireddy (#10)
Re: Logical Replication of sequences

On Wed, Jun 5, 2024 at 3:17 PM Bharath Rupireddy
<bharath.rupireddyforpostgres@gmail.com> wrote:

On Tue, Jun 4, 2024 at 5:40 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

Even if we decode it periodically (say each time we decode the
checkpoint record) then also we need to send the entire set of
sequences at shutdown. This is because the sequences may have changed
from the last time we sent them.

Agree. How about decoding and sending only the sequences that are
changed from the last time when they were sent? I know it requires a
bit of tracking and more work, but all I'm looking for is to reduce
the amount of work that walsenders need to do during the shutdown.

I see your point but going towards tracking the changed sequences
sounds like moving towards what we do for incremental backups unless
we can invent some other smart way.

Having said that, I like the idea of letting the user sync the
sequences via ALTER SUBSCRIPTION command and not weave the logic into
the shutdown checkpoint path. As Peter Eisentraut said here
/messages/by-id/42e5cb35-4aeb-4f58-8091-90619c7c3ecc@eisentraut.org,
this can be a good starting point to get going.

Agreed.

I can imagine a case where there are tens
of thousands of sequences in a production server, and surely decoding
and sending them just during the shutdown can take a lot of time
hampering the overall server uptime.

It is possible but we will send only the sequences that belong to
publications for which walsender is supposed to send the required
data.

Right, but what if all the publication tables can have tens of
thousands of sequences.

In such cases we have no option but to send all the sequences.

Now, we can also imagine providing option 2 (Alter Subscription
... Replicate Sequences) so that users can replicate sequences before
shutdown and then disable the subscriptions so that there won't be a
corresponding walsender.

As stated above, I like this idea to start with.

+1.

--
With Regards,
Amit Kapila.

#16Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#11)
Re: Logical Replication of sequences

On Wed, Jun 5, 2024 at 9:30 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Wed, Jun 5, 2024 at 12:51 PM Peter Eisentraut <peter@eisentraut.org> wrote:

On 04.06.24 12:57, Amit Kapila wrote:

2. Provide a command say Alter Subscription ... Replicate Sequences
(or something like that) which users can perform before shutdown of
the publisher node during upgrade. This will allow copying all the
sequences from the publisher node to the subscriber node directly.
Similar to previous approach, this could also be inconvenient for
users.

I would start with this. In any case, you're going to need to write
code to collect all the sequence values, send them over some protocol,
apply them on the subscriber. The easiest way to start is to trigger
that manually. Then later you can add other ways to trigger it, either
by timer or around shutdown, or whatever other ideas there might be.

Agreed.

+1

To achieve this, we can allow sequences to be copied during
the initial CREATE SUBSCRIPTION command similar to what we do for
tables. And then later by new/existing command, we re-copy the already
existing sequences on the subscriber.

The options for the new command could be:
Alter Subscription ... Refresh Sequences
Alter Subscription ... Replicate Sequences

In the second option, we need to introduce a new keyword Replicate.
Can you think of any better option?

Another idea is doing that using options. For example,

For initial sequences synchronization:

CREATE SUBSCRIPTION ... WITH (copy_sequence = true);

For re-copy (or update) sequences:

ALTER SUBSCRIPTION ... REFRESH PUBLICATION WITH (copy_sequence = true);

In addition to the above, the command Alter Subscription .. Refresh
Publication will fetch any missing sequences similar to what it does
for tables.

On the subscriber side, do we need to track which sequences are
created via CREATE/ALTER SUBSCRIPTION?

Regards,

--
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com

#17Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#14)
Re: Logical Replication of sequences

On Thu, Jun 6, 2024 at 9:32 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote:

On Wed, Jun 5, 2024 at 12:43 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Tue, Jun 4, 2024 at 8:56 PM Yogesh Sharma
<yogesh.sharma@catprosystems.com> wrote:

On 6/4/24 06:57, Amit Kapila wrote:

2. Provide a command say Alter Subscription ... Replicate Sequences
(or something like that) which users can perform before shutdown of
the publisher node during upgrade. This will allow copying all the
sequences from the publisher node to the subscriber node directly.
Similar to previous approach, this could also be inconvenient for
users.

This is similar to option 1 except that it is a SQL command now.

Right, but I would still prefer a command as it provides clear steps
for the upgrade. Users need to perform (a) Replicate Sequences for a
particular subscription (b) Disable that subscription (c) Perform (a)
and (b) for all the subscriptions corresponding to the publisher we
want to shut down for upgrade.

I agree there are some manual steps involved here but it is advisable
for users to ensure that they have received the required data on the
subscriber before the upgrade of the publisher node, otherwise, they
may not be able to continue replication after the upgrade. For
example, see the "Prepare for publisher upgrades" step in pg_upgrade
docs [1].

3. Replicate published sequences via walsender at the time of shutdown
or incrementally while decoding checkpoint record. The two ways to
achieve this are: (a) WAL log a special NOOP record just before
shutting down checkpointer. Then allow the WALsender to read the
sequence data and send it to the subscriber while decoding the new
NOOP record. (b) Similar to the previous idea but instead of WAL
logging a new record directly invokes a decoding callback after
walsender receives a request to shutdown which will allow pgoutput to
read and send required sequences. This approach has a drawback that we
are adding more work at the time of shutdown but note that we already
waits for all the WAL records to be decoded and sent before shutting
down the walsender during shutdown of the node.

At the time of shutdown a) most logical upgrades don't necessarily call
for shutdown

Won't the major version upgrade expect that the node is down? Refer to
step "Stop both servers" in [1].

I think the idea is that the publisher is the old version and the
subscriber is the new version, and changes generated on the publisher
are replicated to the subscriber via logical replication. And at some
point, we change the application (or a router) settings so that no
more transactions come to the publisher, do the last upgrade
preparation work (e.g. copying the latest sequence values if
requried), and then change the application so that new transactions
come to the subscriber.

Okay, thanks for sharing the exact steps. If one has to follow that
path then sending incrementally (at checkpoint WAL or other times)
won't work because we want to ensure that the sequences are up-to-date
before the application starts using the new database. To do that in a
bullet-proof way, one has to copy/replicate sequences during the
requests to the new database are paused (Reference from the blog you
shared: For the first second after flipping the flag, our application
artificially paused any new database requests for one second.).
Currently, they are using some guesswork to replicate sequences that
require manual verification and more manual work for each sequence.
The new command (Alter Subscription ... Replicate Sequence) should
ease their procedure and can do things where they would require no or
very less verification.

I remember the blog post about Knock doing a similar process to
upgrade the clusters with minimal downtime[1].

Thanks for sharing the blog post.

--
With Regards,
Amit Kapila.

#18Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#16)
Re: Logical Replication of sequences

On Thu, Jun 6, 2024 at 11:10 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote:

On Wed, Jun 5, 2024 at 9:30 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

To achieve this, we can allow sequences to be copied during
the initial CREATE SUBSCRIPTION command similar to what we do for
tables. And then later by new/existing command, we re-copy the already
existing sequences on the subscriber.

The options for the new command could be:
Alter Subscription ... Refresh Sequences
Alter Subscription ... Replicate Sequences

In the second option, we need to introduce a new keyword Replicate.
Can you think of any better option?

Another idea is doing that using options. For example,

For initial sequences synchronization:

CREATE SUBSCRIPTION ... WITH (copy_sequence = true);

How will it interact with the existing copy_data option? So copy_data
will become equivalent to copy_table_data, right?

For re-copy (or update) sequences:

ALTER SUBSCRIPTION ... REFRESH PUBLICATION WITH (copy_sequence = true);

Similar to the previous point it can be slightly confusing w.r.t
copy_data. And would copy_sequence here mean that it would copy
sequence values of both pre-existing and newly added sequences, if so,
that would make it behave differently than copy_data? The other
possibility in this direction would be to introduce an option like
replicate_all_sequences/copy_all_sequences which indicates a copy of
both pre-existing and new sequences, if any.

If we want to go in the direction of having an option such as
copy_(all)_sequences then do you think specifying that copy_data is
just for tables in the docs would be sufficient? I am afraid that it
would be confusing for users.

In addition to the above, the command Alter Subscription .. Refresh
Publication will fetch any missing sequences similar to what it does
for tables.

On the subscriber side, do we need to track which sequences are
created via CREATE/ALTER SUBSCRIPTION?

I think so unless we find some other way to know at refresh
publication time which all new sequences need to be part of the
subscription. What should be the behavior w.r.t sequences when the
user performs ALTER SUBSCRIPTION ... REFRESH PUBLICATION? I was
thinking similar to tables, it should fetch any missing sequence
information from the publisher.

--
With Regards,
Amit Kapila.

#19Ashutosh Bapat
ashutosh.bapat@enterprisedb.com
In reply to: Amit Kapila (#13)
Re: Logical Replication of sequences

On Thu, Jun 6, 2024 at 9:22 AM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Wed, Jun 5, 2024 at 6:01 PM Ashutosh Bapat
<ashutosh.bapat.oss@gmail.com> wrote:

On Wed, Jun 5, 2024 at 8:45 AM Amit Kapila <amit.kapila16@gmail.com>

wrote:

How about periodically sending this information?

Now, if we want to support some sort of failover then probably this
will help. Do you have that use case in mind?

Regular failover was a goal for supporting logical replication of

sequences. That might be more common than major upgrade scenario.

We can't support regular failovers to subscribers unless we can
replicate/copy slots because the existing nodes connected to the
current publisher/primary would expect that. It should be primarily
useful for major version upgrades at this stage.

We don't want to design it in a way that requires major rework when we are
able to copy slots and then support regular failovers. That's when the
consistency between a sequence and the table using it would be a must. So
it's better that we take that into consideration now.

--
Best Wishes,
Ashutosh Bapat

#20Amit Kapila
amit.kapila16@gmail.com
In reply to: Ashutosh Bapat (#19)
Re: Logical Replication of sequences

On Thu, Jun 6, 2024 at 3:44 PM Ashutosh Bapat
<ashutosh.bapat.oss@gmail.com> wrote:

On Thu, Jun 6, 2024 at 9:22 AM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Wed, Jun 5, 2024 at 6:01 PM Ashutosh Bapat
<ashutosh.bapat.oss@gmail.com> wrote:

On Wed, Jun 5, 2024 at 8:45 AM Amit Kapila <amit.kapila16@gmail.com> wrote:

How about periodically sending this information?

Now, if we want to support some sort of failover then probably this
will help. Do you have that use case in mind?

Regular failover was a goal for supporting logical replication of sequences. That might be more common than major upgrade scenario.

We can't support regular failovers to subscribers unless we can
replicate/copy slots because the existing nodes connected to the
current publisher/primary would expect that. It should be primarily
useful for major version upgrades at this stage.

We don't want to design it in a way that requires major rework when we are able to copy slots and then support regular failover.

I don't think we can just copy slots like we do for standbys. The
slots would require WAL locations to continue, so not sure if we can
make it work for failover for subscribers.

That's when the consistency between a sequence and the table using it
would be a must. So it's better that we take that into consideration
now.

With the ideas being discussed here, I could only see the use case of
a major version upgrade or planned switchover to work. If we come up
with any other agreeable way that is better than this then we can
consider the same.

--
With Regards,
Amit Kapila.

#21Dilip Kumar
dilipbalaut@gmail.com
In reply to: Amit Kapila (#15)
#22Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#18)
#23Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#22)
#24vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#9)
#25Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#23)
#26Amul Sul
sulamul@gmail.com
In reply to: vignesh C (#24)
#27Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Masahiko Sawada (#25)
#28Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#27)
#29vignesh C
vignesh21@gmail.com
In reply to: Amul Sul (#26)
#30vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#28)
#31Amul Sul
sulamul@gmail.com
In reply to: vignesh C (#29)
#32vignesh C
vignesh21@gmail.com
In reply to: Amul Sul (#31)
#33Masahiko Sawada
sawada.mshk@gmail.com
In reply to: vignesh C (#30)
#34vignesh C
vignesh21@gmail.com
In reply to: Masahiko Sawada (#33)
#35Masahiko Sawada
sawada.mshk@gmail.com
In reply to: vignesh C (#34)
#36Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#34)
#37Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#35)
#38vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#36)
#39Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#38)
#40vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#39)
#41Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#40)
#42vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#41)
#43Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#42)
#44Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#37)
#45Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#44)
#46Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#45)
#47Michael Paquier
michael@paquier.xyz
In reply to: Amit Kapila (#45)
#48Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#46)
#49Amit Kapila
amit.kapila16@gmail.com
In reply to: Michael Paquier (#47)
#50Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#48)
#51Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#50)
#52vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#51)
#53vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#52)
#54Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#52)
#55vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#54)
#56Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: vignesh C (#53)
#57vignesh C
vignesh21@gmail.com
In reply to: Shlok Kyal (#56)
#58Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#57)
#59Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#57)
#60vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#58)
#61Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#60)
#62vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#59)
#63vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#61)
#64Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#62)
#65vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#64)
#66Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#62)
#67Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#65)
#68Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#65)
#69vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#66)
#70vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#68)
#71Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#69)
#72Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#69)
#73Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#69)
#74Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#69)
#75vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#71)
#76vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#72)
#77vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#73)
#78Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#75)
#79vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#74)
#80Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#75)
#81shveta malik
shveta.malik@gmail.com
In reply to: Peter Smith (#80)
#82vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#80)
#83vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#78)
#84shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#81)
#85vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#81)
#86shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#85)
#87Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#75)
#88shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#86)
#89Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#85)
#90Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#85)
#91vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#87)
#92vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#89)
#93vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#90)
#94vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#86)
#95vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#88)
#96Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#94)
#97shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#29)
#98vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#77)
#99Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#94)
#100Peter Smith
smithpb2250@gmail.com
In reply to: Peter Smith (#99)
#101shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#1)
#102shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#101)
#103vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#96)
#104vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#1)
#105vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#100)
#106vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#97)
#107vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#1)
#108vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#101)
#109vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#102)
#110Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#108)
#111shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#106)
#112shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#110)
#113shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#112)
#114Amit Kapila
amit.kapila16@gmail.com
In reply to: shveta malik (#112)
#115shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#114)
#116vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#115)
#117Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#107)
#118vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#111)
#119Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#118)
#120Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#79)
#121shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#105)
#122vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#117)
#123vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#113)
#124vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#110)
#125vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#119)
#126Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#122)
#127Amit Kapila
amit.kapila16@gmail.com
In reply to: Peter Smith (#120)
#128Peter Smith
smithpb2250@gmail.com
In reply to: Amit Kapila (#127)
#129shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#122)
#130Amit Kapila
amit.kapila16@gmail.com
In reply to: Peter Smith (#128)
#131vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#126)
#132vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#121)
#133Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#131)
#134shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#125)
#135Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#131)
#136vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#129)
#137vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#134)
#138vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#133)
#139vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#135)
#140Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#136)
#141Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#136)
#142Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#136)
#143vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#140)
#144vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#142)
#145vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#141)
#146Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#143)
#147Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#144)
#148Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#143)
#149vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#146)
#150vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#148)
#151Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#149)
#152Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#149)
#153vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#152)
#154Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#153)
#155vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#154)
#156Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#155)
#157vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#156)
#158vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#157)
#159Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#158)
#160vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#159)
#161Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#160)
#162vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#161)
#163Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#162)
#164vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#163)
#165vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#164)
#166shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#165)
#167vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#166)
#168shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#167)
#169vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#168)
#170Masahiko Sawada
sawada.mshk@gmail.com
In reply to: vignesh C (#169)
#171vignesh C
vignesh21@gmail.com
In reply to: Masahiko Sawada (#170)
#172vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#171)
#173vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#172)
#174vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#173)
#175Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#174)
#176Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#174)
#177Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#174)
#178Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#174)
#179Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#174)
#180vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#176)
#181vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#177)
#182vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#178)
#183vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#179)
#184Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: vignesh C (#182)
#185vignesh C
vignesh21@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#184)
#186Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#185)
#187Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#185)
#188vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#186)
#189vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#187)
#190Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#188)
#191vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#190)
#192vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#191)
#193vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#192)
#194vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#193)
#195vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#193)
#196Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#195)
#197Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#195)
#198Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#195)
#199vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#197)
#200Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#195)
#201Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#195)
#202vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#200)
#203Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#202)
#204Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#202)
#205vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#203)
#206Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#205)
#207Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#205)
#208Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#205)
#209vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#207)
#210Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#209)
#211Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#209)
#212vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#211)
#213Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#212)
#214vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#213)
#215vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#214)
#216shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#215)
#217Nisha Moond
nisha.moond412@gmail.com
In reply to: vignesh C (#215)
#218vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#216)
#219vignesh C
vignesh21@gmail.com
In reply to: Nisha Moond (#217)
#220Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#218)
#221vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#220)
#222Nisha Moond
nisha.moond412@gmail.com
In reply to: vignesh C (#221)
#223shveta malik
shveta.malik@gmail.com
In reply to: Nisha Moond (#222)
#224Peter Smith
smithpb2250@gmail.com
In reply to: shveta malik (#223)
#225Nisha Moond
nisha.moond412@gmail.com
In reply to: Nisha Moond (#222)
#226shveta malik
shveta.malik@gmail.com
In reply to: Peter Smith (#224)
#227vignesh C
vignesh21@gmail.com
In reply to: Nisha Moond (#222)
#228vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#223)
#229vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#226)
#230Nisha Moond
nisha.moond412@gmail.com
In reply to: vignesh C (#229)
#231Ajin Cherian
itsajin@gmail.com
In reply to: vignesh C (#229)
#232vignesh C
vignesh21@gmail.com
In reply to: Nisha Moond (#230)
#233vignesh C
vignesh21@gmail.com
In reply to: Ajin Cherian (#231)
#234shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#232)
#235Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#232)
#236Nisha Moond
nisha.moond412@gmail.com
In reply to: Amit Kapila (#235)
#237Nisha Moond
nisha.moond412@gmail.com
In reply to: Nisha Moond (#236)
#238vignesh C
vignesh21@gmail.com
In reply to: Nisha Moond (#237)
#239shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#238)
#240Nisha Moond
nisha.moond412@gmail.com
In reply to: vignesh C (#238)
#241Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: vignesh C (#238)
#242Nisha Moond
nisha.moond412@gmail.com
In reply to: Nisha Moond (#240)
#243shveta malik
shveta.malik@gmail.com
In reply to: Shlok Kyal (#241)
#244Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: vignesh C (#238)
#245Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: vignesh C (#238)
#246shveta malik
shveta.malik@gmail.com
In reply to: Shlok Kyal (#245)
#247Nisha Moond
nisha.moond412@gmail.com
In reply to: shveta malik (#246)
#248Nisha Moond
nisha.moond412@gmail.com
In reply to: shveta malik (#239)
#249Nisha Moond
nisha.moond412@gmail.com
In reply to: shveta malik (#243)
#250Nisha Moond
nisha.moond412@gmail.com
In reply to: Shlok Kyal (#244)
#251shveta malik
shveta.malik@gmail.com
In reply to: Nisha Moond (#248)
#252shveta malik
shveta.malik@gmail.com
In reply to: Nisha Moond (#248)
#253shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#252)
#254vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#252)
#255shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#254)
#256shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#255)
#257shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#256)
#258vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#255)
#259Nisha Moond
nisha.moond412@gmail.com
In reply to: vignesh C (#258)
#260shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#258)
#261vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#257)
#262vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#260)
#263shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#262)
#264Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#262)
#265vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#263)
#266vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#264)
#267Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#266)
#268Dilip Kumar
dilipbalaut@gmail.com
In reply to: Dilip Kumar (#267)
#269Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#266)
#270vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#269)
#271vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#268)
#272Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#271)
#273Dilip Kumar
dilipbalaut@gmail.com
In reply to: Dilip Kumar (#272)
#274shveta malik
shveta.malik@gmail.com
In reply to: Dilip Kumar (#273)
#275vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#272)
#276vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#273)
#277Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#276)
#278Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#275)
#279Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#276)
#280shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#277)
#281vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#279)
#282Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: vignesh C (#281)
#283vignesh C
vignesh21@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#282)
#284Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: Hayato Kuroda (Fujitsu) (#282)
#285vignesh C
vignesh21@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#284)
#286shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#285)
#287shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#286)
#288vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#286)
#289Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: vignesh C (#288)
#290vignesh C
vignesh21@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#289)
#291shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#290)
#292Nisha Moond
nisha.moond412@gmail.com
In reply to: vignesh C (#290)
#293shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#291)
#294vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#291)
#295Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: vignesh C (#294)
#296Masahiko Sawada
sawada.mshk@gmail.com
In reply to: vignesh C (#294)
#297vignesh C
vignesh21@gmail.com
In reply to: Masahiko Sawada (#296)
#298vignesh C
vignesh21@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#295)
#299Masahiko Sawada
sawada.mshk@gmail.com
In reply to: vignesh C (#297)
#300Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Masahiko Sawada (#299)
#301vignesh C
vignesh21@gmail.com
In reply to: Masahiko Sawada (#300)
#302Masahiko Sawada
sawada.mshk@gmail.com
In reply to: vignesh C (#301)
#303Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#302)
#304vignesh C
vignesh21@gmail.com
In reply to: Masahiko Sawada (#302)
#305Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#298)
#306Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#303)
#307Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#306)
#308shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#304)
#309vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#308)
#310Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#307)
#311Amit Kapila
amit.kapila16@gmail.com
In reply to: Masahiko Sawada (#310)
#312shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#309)
#313Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: shveta malik (#312)
#314Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: vignesh C (#309)
#315vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#312)
#316vignesh C
vignesh21@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#314)
#317Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: vignesh C (#316)
#318vignesh C
vignesh21@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#317)
#319Masahiko Sawada
sawada.mshk@gmail.com
In reply to: vignesh C (#318)
#320Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Amit Kapila (#305)
#321vignesh C
vignesh21@gmail.com
In reply to: Masahiko Sawada (#319)
#322Chao Li
li.evan.chao@gmail.com
In reply to: vignesh C (#321)
#323vignesh C
vignesh21@gmail.com
In reply to: Masahiko Sawada (#320)
#324Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#323)
#325vignesh C
vignesh21@gmail.com
In reply to: Chao Li (#322)
#326Chao Li
li.evan.chao@gmail.com
In reply to: vignesh C (#325)
#327vignesh C
vignesh21@gmail.com
In reply to: Chao Li (#326)
#328vignesh C
vignesh21@gmail.com
In reply to: Chao Li (#326)
#329shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#328)
#330Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: vignesh C (#328)
#331shveta malik
shveta.malik@gmail.com
In reply to: Shlok Kyal (#330)
#332Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: vignesh C (#328)
#333vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#331)
#334vignesh C
vignesh21@gmail.com
In reply to: Shlok Kyal (#332)
#335shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#334)
#336shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#335)
#337vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#335)
#338shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#337)
#339vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#338)
#340shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#339)
#341vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#340)
#342Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#341)
#343Michael Paquier
michael@paquier.xyz
In reply to: Amit Kapila (#342)
#344Amit Kapila
amit.kapila16@gmail.com
In reply to: Michael Paquier (#343)
#345vignesh C
vignesh21@gmail.com
In reply to: Michael Paquier (#343)
#346vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#342)
#347vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#346)
#348shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#347)
#349Amit Kapila
amit.kapila16@gmail.com
In reply to: shveta malik (#348)
#350Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#347)
#351Amit Kapila
amit.kapila16@gmail.com
In reply to: Dilip Kumar (#350)
#352vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#349)
#353Dilip Kumar
dilipbalaut@gmail.com
In reply to: Amit Kapila (#351)
#354vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#348)
#355Amit Kapila
amit.kapila16@gmail.com
In reply to: Dilip Kumar (#353)
#356Dilip Kumar
dilipbalaut@gmail.com
In reply to: Amit Kapila (#355)
#357Amit Kapila
amit.kapila16@gmail.com
In reply to: Dilip Kumar (#356)
#358shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#354)
#359Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#352)
#360Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#352)
#361Amit Kapila
amit.kapila16@gmail.com
In reply to: Dilip Kumar (#360)
#362Dilip Kumar
dilipbalaut@gmail.com
In reply to: Amit Kapila (#361)
#363vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#362)
#364shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#363)
#365Amit Kapila
amit.kapila16@gmail.com
In reply to: Dilip Kumar (#356)
#366Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: Amit Kapila (#365)
#367Peter Smith
smithpb2250@gmail.com
In reply to: shveta malik (#364)
#368Dilip Kumar
dilipbalaut@gmail.com
In reply to: Amit Kapila (#365)
#369Amit Kapila
amit.kapila16@gmail.com
In reply to: Dilip Kumar (#368)
#370Amit Kapila
amit.kapila16@gmail.com
In reply to: Peter Smith (#367)
#371shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#369)
#372Peter Smith
smithpb2250@gmail.com
In reply to: shveta malik (#371)
#373Dilip Kumar
dilipbalaut@gmail.com
In reply to: Peter Smith (#372)
#374Amit Kapila
amit.kapila16@gmail.com
In reply to: Peter Smith (#372)
#375vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#372)
#376Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#375)
#377vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#376)
#378Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#377)
#379Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#377)
#380shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#379)
#381Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: vignesh C (#377)
#382shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#380)
#383Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Hayato Kuroda (Fujitsu) (#381)
#384Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: shveta malik (#380)
#385Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Amit Kapila (#379)
#386Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Peter Smith (#378)
#387Amit Kapila
amit.kapila16@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#383)
#388Dilip Kumar
dilipbalaut@gmail.com
In reply to: Amit Kapila (#387)
#389Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: Zhijie Hou (Fujitsu) (#383)
#390shveta malik
shveta.malik@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#389)
#391shveta malik
shveta.malik@gmail.com
In reply to: shveta malik (#390)
#392Amit Kapila
amit.kapila16@gmail.com
In reply to: Dilip Kumar (#388)
#393Chao Li
li.evan.chao@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#383)
#394Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Amit Kapila (#392)
#395Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: shveta malik (#390)
#396Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Hayato Kuroda (Fujitsu) (#389)
#397Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Chao Li (#393)
#398Amit Kapila
amit.kapila16@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#394)
#399Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Amit Kapila (#398)
#400Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Amit Kapila (#387)
#401Amit Kapila
amit.kapila16@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#400)
#402Amit Kapila
amit.kapila16@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#399)
#403shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#402)
#404Amit Kapila
amit.kapila16@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#399)
#405Chao Li
li.evan.chao@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#399)
#406Dilip Kumar
dilipbalaut@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#399)
#407Masahiko Sawada
sawada.mshk@gmail.com
In reply to: shveta malik (#403)
#408Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Masahiko Sawada (#407)
#409Chao Li
li.evan.chao@gmail.com
In reply to: Chao Li (#405)
#410Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Amit Kapila (#404)
#411Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Masahiko Sawada (#407)
#412Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: Chao Li (#409)
#413Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: Zhijie Hou (Fujitsu) (#410)
#414Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#413)
#415shveta malik
shveta.malik@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#413)
#416Amit Kapila
amit.kapila16@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#413)
#417shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#416)
#418vignesh C
vignesh21@gmail.com
In reply to: Masahiko Sawada (#414)
#419Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#418)
#420Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#418)
#421Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#418)
#422shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#420)
#423Amit Kapila
amit.kapila16@gmail.com
In reply to: Peter Smith (#421)
#424Amit Kapila
amit.kapila16@gmail.com
In reply to: Peter Smith (#419)
#425vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#420)
#426Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#425)
#427Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: vignesh C (#425)
#428shveta malik
shveta.malik@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#427)
#429vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#426)
#430Amit Kapila
amit.kapila16@gmail.com
In reply to: shveta malik (#428)
#431Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#429)
#432Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: vignesh C (#429)
#433Dilip Kumar
dilipbalaut@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#432)
#434Dilip Kumar
dilipbalaut@gmail.com
In reply to: Dilip Kumar (#433)
#435vignesh C
vignesh21@gmail.com
In reply to: Dilip Kumar (#433)
#436shveta malik
shveta.malik@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#432)
#437shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#430)
#438Chao Li
li.evan.chao@gmail.com
In reply to: vignesh C (#429)
#439Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#435)
#440vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#431)
#441Chao Li
li.evan.chao@gmail.com
In reply to: Chao Li (#438)
#442Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#440)
#443Amit Kapila
amit.kapila16@gmail.com
In reply to: Amit Kapila (#439)
#444Amit Kapila
amit.kapila16@gmail.com
In reply to: Zhijie Hou (Fujitsu) (#432)
#445vignesh C
vignesh21@gmail.com
In reply to: Chao Li (#438)
#446vignesh C
vignesh21@gmail.com
In reply to: Chao Li (#441)
#447Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#445)
#448Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#445)
#449shveta malik
shveta.malik@gmail.com
In reply to: Peter Smith (#448)
#450Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: vignesh C (#445)
#451Dilip Kumar
dilipbalaut@gmail.com
In reply to: vignesh C (#445)
#452vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#447)
#453vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#448)
#454Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#452)
#455Amit Kapila
amit.kapila16@gmail.com
In reply to: Peter Smith (#454)
#456vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#455)
#457Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#456)
#458Amit Kapila
amit.kapila16@gmail.com
In reply to: Peter Smith (#457)
#459Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#456)
#460vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#457)
#461vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#459)
#462Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#461)
#463vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#462)
#464Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#463)
#465shveta malik
shveta.malik@gmail.com
In reply to: Amit Kapila (#464)
#466vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#464)
#467Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#466)
#468vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#467)
#469vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#465)
#470Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#469)
#471Shinya Kato
shinya11.kato@gmail.com
In reply to: Amit Kapila (#464)
#472Amit Kapila
amit.kapila16@gmail.com
In reply to: Shinya Kato (#471)
#473vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#472)
#474Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#473)
#475vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#474)
#476shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#475)
#477Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#475)
#478vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#476)
#479Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: vignesh C (#478)
#480vignesh C
vignesh21@gmail.com
In reply to: Shlok Kyal (#479)
#481Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#480)
#482Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: Amit Kapila (#481)
#483vignesh C
vignesh21@gmail.com
In reply to: Shlok Kyal (#482)
#484Chao Li
li.evan.chao@gmail.com
In reply to: vignesh C (#478)
#485vignesh C
vignesh21@gmail.com
In reply to: Chao Li (#484)
#486Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: vignesh C (#485)
#487vignesh C
vignesh21@gmail.com
In reply to: Shlok Kyal (#486)
#488shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#487)
#489vignesh C
vignesh21@gmail.com
In reply to: shveta malik (#488)
#490shveta malik
shveta.malik@gmail.com
In reply to: vignesh C (#489)
#491Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#487)
#492vignesh C
vignesh21@gmail.com
In reply to: Peter Smith (#491)
#493Peter Smith
smithpb2250@gmail.com
In reply to: vignesh C (#492)
#494shveta malik
shveta.malik@gmail.com
In reply to: Peter Smith (#493)
#495Amit Kapila
amit.kapila16@gmail.com
In reply to: Shlok Kyal (#486)
#496Shlok Kyal
shlok.kyal.oss@gmail.com
In reply to: Amit Kapila (#495)
#497vignesh C
vignesh21@gmail.com
In reply to: Shlok Kyal (#496)
#498vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#497)
#499Alexander Lakhin
exclusion@gmail.com
In reply to: vignesh C (#498)
#500Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: Alexander Lakhin (#499)
#501Amit Kapila
amit.kapila16@gmail.com
In reply to: Hayato Kuroda (Fujitsu) (#500)
#502Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#498)
#503vignesh C
vignesh21@gmail.com
In reply to: Amit Kapila (#502)
#504vignesh C
vignesh21@gmail.com
In reply to: vignesh C (#503)
#505Hayato Kuroda (Fujitsu)
kuroda.hayato@fujitsu.com
In reply to: vignesh C (#504)
#506Amit Kapila
amit.kapila16@gmail.com
In reply to: vignesh C (#504)
#507Nathan Bossart
nathandbossart@gmail.com
In reply to: Amit Kapila (#506)