Re: Synchronous tx entries unlocking in discovery\exchange threads.

2018-08-23 Thread Andrey Mashenkov
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.

2018-08-16 Thread Alexey Goncharuk
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.

2018-08-15 Thread 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