[jira] [Commented] (IGNITE-3464) Possible race between partition exchange and prepare/finish requests
[ https://issues.apache.org/jira/browse/IGNITE-3464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16725033#comment-16725033 ] ASF GitHub Bot commented on IGNITE-3464: Github user BiryukovVA closed the pull request at: https://github.com/apache/ignite/pull/3250 > Possible race between partition exchange and prepare/finish requests > > > Key: IGNITE-3464 > URL: https://issues.apache.org/jira/browse/IGNITE-3464 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: ignite-1.4 >Reporter: Alexey Goncharuk >Assignee: Vitaliy Biryukov >Priority: Major > Fix For: 2.7 > > > Consider the following scenario: > Two nodes A (coordinator), B. Node C is joining the grid. Current topology > version is 2. > - Node A starts a transaction on version 2 and sends a prepare request to > node B > - Discovery event happens on node A. Exchange future is created, captures > the transaction and waits for this transaction to finish. > - Discovery event happens on node B. Exchange future is created, but since > there is no transaction on this node (the request has not been processed > yet), partition release future is completed and exchange waits for an ACK > from coordinator. > - Prepare request is processed on node B > - Node A commits the transaction locally, partition release future is > completed. Both finish request and exchange message are sent to the node B. > - Node B processes the exchange message first and completes exchange. > - Node C starts rebalancing from node B and acquires stale value of the key > which was supposed to be updated in the transaction. > - Node B processes finish request and commits the transaction. > As a result, node B and C have different values stored in the cache. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-3464) Possible race between partition exchange and prepare/finish requests
[ https://issues.apache.org/jira/browse/IGNITE-3464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16430878#comment-16430878 ] Pavel Kovalenko commented on IGNITE-3464: - [~avinogradov] Yes, it should be closed as duplicate. > Possible race between partition exchange and prepare/finish requests > > > Key: IGNITE-3464 > URL: https://issues.apache.org/jira/browse/IGNITE-3464 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: ignite-1.4 >Reporter: Alexey Goncharuk >Assignee: Vitaliy Biryukov >Priority: Major > Fix For: 2.6 > > > Consider the following scenario: > Two nodes A (coordinator), B. Node C is joining the grid. Current topology > version is 2. > - Node A starts a transaction on version 2 and sends a prepare request to > node B > - Discovery event happens on node A. Exchange future is created, captures > the transaction and waits for this transaction to finish. > - Discovery event happens on node B. Exchange future is created, but since > there is no transaction on this node (the request has not been processed > yet), partition release future is completed and exchange waits for an ACK > from coordinator. > - Prepare request is processed on node B > - Node A commits the transaction locally, partition release future is > completed. Both finish request and exchange message are sent to the node B. > - Node B processes the exchange message first and completes exchange. > - Node C starts rebalancing from node B and acquires stale value of the key > which was supposed to be updated in the transaction. > - Node B processes finish request and commits the transaction. > As a result, node B and C have different values stored in the cache. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-3464) Possible race between partition exchange and prepare/finish requests
[ https://issues.apache.org/jira/browse/IGNITE-3464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16430863#comment-16430863 ] Anton Vinogradov commented on IGNITE-3464: -- [~Jokser] We have to close this as duplicate? > Possible race between partition exchange and prepare/finish requests > > > Key: IGNITE-3464 > URL: https://issues.apache.org/jira/browse/IGNITE-3464 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: ignite-1.4 >Reporter: Alexey Goncharuk >Assignee: Vitaliy Biryukov >Priority: Major > Fix For: 2.6 > > > Consider the following scenario: > Two nodes A (coordinator), B. Node C is joining the grid. Current topology > version is 2. > - Node A starts a transaction on version 2 and sends a prepare request to > node B > - Discovery event happens on node A. Exchange future is created, captures > the transaction and waits for this transaction to finish. > - Discovery event happens on node B. Exchange future is created, but since > there is no transaction on this node (the request has not been processed > yet), partition release future is completed and exchange waits for an ACK > from coordinator. > - Prepare request is processed on node B > - Node A commits the transaction locally, partition release future is > completed. Both finish request and exchange message are sent to the node B. > - Node B processes the exchange message first and completes exchange. > - Node C starts rebalancing from node B and acquires stale value of the key > which was supposed to be updated in the transaction. > - Node B processes finish request and commits the transaction. > As a result, node B and C have different values stored in the cache. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-3464) Possible race between partition exchange and prepare/finish requests
[ https://issues.apache.org/jira/browse/IGNITE-3464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16430804#comment-16430804 ] Pavel Kovalenko commented on IGNITE-3464: - [~agoncharuk] This is one of the corner cases that generally solved in IGNITE-7871. In general case node A can be client, while waitPartitionRelease is not invoked on such nodes. Reproducer presented in PR passes in corresponding branch. [~VitaliyB] Thank you for your work! I will add your reproducer to IGNITE-7871 ticket. > Possible race between partition exchange and prepare/finish requests > > > Key: IGNITE-3464 > URL: https://issues.apache.org/jira/browse/IGNITE-3464 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: ignite-1.4 >Reporter: Alexey Goncharuk >Assignee: Vitaliy Biryukov >Priority: Major > Fix For: 2.6 > > > Consider the following scenario: > Two nodes A (coordinator), B. Node C is joining the grid. Current topology > version is 2. > - Node A starts a transaction on version 2 and sends a prepare request to > node B > - Discovery event happens on node A. Exchange future is created, captures > the transaction and waits for this transaction to finish. > - Discovery event happens on node B. Exchange future is created, but since > there is no transaction on this node (the request has not been processed > yet), partition release future is completed and exchange waits for an ACK > from coordinator. > - Prepare request is processed on node B > - Node A commits the transaction locally, partition release future is > completed. Both finish request and exchange message are sent to the node B. > - Node B processes the exchange message first and completes exchange. > - Node C starts rebalancing from node B and acquires stale value of the key > which was supposed to be updated in the transaction. > - Node B processes finish request and commits the transaction. > As a result, node B and C have different values stored in the cache. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-3464) Possible race between partition exchange and prepare/finish requests
[ https://issues.apache.org/jira/browse/IGNITE-3464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16430576#comment-16430576 ] Alexey Goncharuk commented on IGNITE-3464: -- [~Jokser] Can you please take a look at the provided PR, given your expertise in exchange counters validation? > Possible race between partition exchange and prepare/finish requests > > > Key: IGNITE-3464 > URL: https://issues.apache.org/jira/browse/IGNITE-3464 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: ignite-1.4 >Reporter: Alexey Goncharuk >Assignee: Vitaliy Biryukov >Priority: Major > Fix For: 2.6 > > > Consider the following scenario: > Two nodes A (coordinator), B. Node C is joining the grid. Current topology > version is 2. > - Node A starts a transaction on version 2 and sends a prepare request to > node B > - Discovery event happens on node A. Exchange future is created, captures > the transaction and waits for this transaction to finish. > - Discovery event happens on node B. Exchange future is created, but since > there is no transaction on this node (the request has not been processed > yet), partition release future is completed and exchange waits for an ACK > from coordinator. > - Prepare request is processed on node B > - Node A commits the transaction locally, partition release future is > completed. Both finish request and exchange message are sent to the node B. > - Node B processes the exchange message first and completes exchange. > - Node C starts rebalancing from node B and acquires stale value of the key > which was supposed to be updated in the transaction. > - Node B processes finish request and commits the transaction. > As a result, node B and C have different values stored in the cache. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (IGNITE-3464) Possible race between partition exchange and prepare/finish requests
[ https://issues.apache.org/jira/browse/IGNITE-3464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16295826#comment-16295826 ] ASF GitHub Bot commented on IGNITE-3464: GitHub user BiryukovVA opened a pull request: https://github.com/apache/ignite/pull/3250 IGNITE-3464 Fixed bug - race between partition exchange and prepare/finish requests. You can merge this pull request into a Git repository by running: $ git pull https://github.com/BiryukovVA/ignite IGNITE-3464 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/ignite/pull/3250.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #3250 commit a370e2f30008b244f26fcdda0eb0a30e8132f04a Author: Vitaliy BiryukovDate: 2017-12-18T23:15:24Z IGNITE-3464: Fixed bug - race between partition exchange and prepare/finish requests. > Possible race between partition exchange and prepare/finish requests > > > Key: IGNITE-3464 > URL: https://issues.apache.org/jira/browse/IGNITE-3464 > Project: Ignite > Issue Type: Bug > Components: cache >Affects Versions: ignite-1.4 >Reporter: Alexey Goncharuk >Assignee: Vitaliy Biryukov > > Consider the following scenario: > Two nodes A (coordinator), B. Node C is joining the grid. Current topology > version is 2. > - Node A starts a transaction on version 2 and sends a prepare request to > node B > - Discovery event happens on node A. Exchange future is created, captures > the transaction and waits for this transaction to finish. > - Discovery event happens on node B. Exchange future is created, but since > there is no transaction on this node (the request has not been processed > yet), partition release future is completed and exchange waits for an ACK > from coordinator. > - Prepare request is processed on node B > - Node A commits the transaction locally, partition release future is > completed. Both finish request and exchange message are sent to the node B. > - Node B processes the exchange message first and completes exchange. > - Node C starts rebalancing from node B and acquires stale value of the key > which was supposed to be updated in the transaction. > - Node B processes finish request and commits the transaction. > As a result, node B and C have different values stored in the cache. -- This message was sent by Atlassian JIRA (v6.4.14#64029)