Re: Synchronous tx entries unlocking in discovery\exchange threads.
Would someone please review a PR for IGNITE-9290 [1] ? I've add some fixes to PR #4556 [2] and TC looks fine [3]. Now, * Explicit lock unlocking moved to background system pool thread. * Exchange future doesn't care for unlocking at all. * MvccManager discovery listener is responsible for triggering unlocking on certain discovery events * Also, ExchangeFuture.OnLeft() method was called twice in some cases. I've fix this as well. [1] https://issues.apache.org/jira/browse/IGNITE-9290 [2] https://github.com/apache/ignite/pull/4556 [3] https://ci.ignite.apache.org/viewLog.html?buildId=1669225=buildResultsDiv=IgniteTests24Java8_RunAll On Thu, Aug 16, 2018 at 10:31 AM Alexey Goncharuk < alexey.goncha...@gmail.com> wrote: > Andrey, I agree that most likely this can be done in an async way. There > are some nuances, though, because if a node leaves during an ongoing > exchange, we should remove the locks in the context of the ongoing exchange > and not wait for the next exchange event. > > I will take a look at your PR shortly. > > ср, 15 авг. 2018 г. в 15:57, Andrey Mashenkov >: > > > Hi Igniters, > > > > I've found Ignite node tries to unlock tx entries when a node left the > > grid. > > Ignite do this synchronously in > > GridCacheMvccManager.removeExplicitNodeLocks() in discovery and exchange > > threads. > > > > Looks like this can be done in ascync way. > > I've made a PR #4565 and seems there is no new test failures [1]. > > > > I'm not familiar enough with exchange manager code, but looks like we can > > scan locked entries more than once per node left event. > > Also, it looks possible we can scan locked entries once for several > merged > > exchange events. > > > > Thoughts? Any ideas how this can be refactoried? > > > > [1] > > > > > https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8=projectOverview_IgniteTests24Java8=pull%2F4546%2Fhead > > > > -- > > Best regards, > > Andrey V. Mashenkov > > > -- Best regards, Andrey V. Mashenkov
Re: Synchronous tx entries unlocking in discovery\exchange threads.
Andrey, I agree that most likely this can be done in an async way. There are some nuances, though, because if a node leaves during an ongoing exchange, we should remove the locks in the context of the ongoing exchange and not wait for the next exchange event. I will take a look at your PR shortly. ср, 15 авг. 2018 г. в 15:57, Andrey Mashenkov : > Hi Igniters, > > I've found Ignite node tries to unlock tx entries when a node left the > grid. > Ignite do this synchronously in > GridCacheMvccManager.removeExplicitNodeLocks() in discovery and exchange > threads. > > Looks like this can be done in ascync way. > I've made a PR #4565 and seems there is no new test failures [1]. > > I'm not familiar enough with exchange manager code, but looks like we can > scan locked entries more than once per node left event. > Also, it looks possible we can scan locked entries once for several merged > exchange events. > > Thoughts? Any ideas how this can be refactoried? > > [1] > > https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8=projectOverview_IgniteTests24Java8=pull%2F4546%2Fhead > > -- > Best regards, > Andrey V. Mashenkov >
Synchronous tx entries unlocking in discovery\exchange threads.
Hi Igniters, I've found Ignite node tries to unlock tx entries when a node left the grid. Ignite do this synchronously in GridCacheMvccManager.removeExplicitNodeLocks() in discovery and exchange threads. Looks like this can be done in ascync way. I've made a PR #4565 and seems there is no new test failures [1]. I'm not familiar enough with exchange manager code, but looks like we can scan locked entries more than once per node left event. Also, it looks possible we can scan locked entries once for several merged exchange events. Thoughts? Any ideas how this can be refactoried? [1] https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8=projectOverview_IgniteTests24Java8=pull%2F4546%2Fhead -- Best regards, Andrey V. Mashenkov