[TeamCIty] Issues with the disc space

2019-12-03 Thread Николай Ижиков
Hello, Igniters.

Looks like we have an issues with the TC agents disc space [1]
Can someone take a look?

[1] 
https://ci.ignite.apache.org/viewLog.html?buildId=4809938=buildResultsDiv=IgniteTests24Java8_PlatformCPPLinuxClang

Re: [DISCUSS] Links to commercial version resources in community wiki

2019-12-03 Thread Dmitriy Pavlov
Hi Igniters,

It is not good if we'll made a tradition of linking to company websites
from the community website / wiki / lists. But if it makes sense to mention
something useful for users, why not.

And in this particular case it may be ok, if it is relevant. Just remember,
community resources are not Nascar cars.

See also https://www.apache.org/foundation/marks/linking

Sincerely,
Dmitriy Pavlov

вт, 3 дек. 2019 г. в 19:50, Denis Magda :

> Hi Ivan,
>
> If an author of an article believes that there is a 3rd party resource that
> is handy and helpful for his/her work then there is nothing wrong to refer
> to it. Based on Alexey's response in another thread, that GridGain page
> brings more clarity to the topic, thus, don't see any issue with that.
>
>
> -
> Denis
>
>
> On Tue, Dec 3, 2019 at 6:41 AM Ivan Pavlukhin  wrote:
>
> > Folks,
> >
> > In a thread about a document describing data consistency [1] in Ignite
> > it was identified that there is a link to GridGain documentation.
> >
> > I do not have strong arguments against having such links in community
> > wiki. But it interesting to me to discuss the subject with community.
> > Might be there is some common practice in ASF communities about the
> > subject.
> >
> > Please, share your thoughts.
> >
> > [1] https://cwiki.apache.org/confluence/display/IGNITE/Data+consistency
> > --
> > Best regards,
> > Ivan Pavlukhin
> >
>


Re: [DISCUSS] Links to commercial version resources in community wiki

2019-12-03 Thread Denis Magda
Hi Ivan,

If an author of an article believes that there is a 3rd party resource that
is handy and helpful for his/her work then there is nothing wrong to refer
to it. Based on Alexey's response in another thread, that GridGain page
brings more clarity to the topic, thus, don't see any issue with that.


-
Denis


On Tue, Dec 3, 2019 at 6:41 AM Ivan Pavlukhin  wrote:

> Folks,
>
> In a thread about a document describing data consistency [1] in Ignite
> it was identified that there is a link to GridGain documentation.
>
> I do not have strong arguments against having such links in community
> wiki. But it interesting to me to discuss the subject with community.
> Might be there is some common practice in ASF communities about the
> subject.
>
> Please, share your thoughts.
>
> [1] https://cwiki.apache.org/confluence/display/IGNITE/Data+consistency
> --
> Best regards,
> Ivan Pavlukhin
>


Re: Full-text queries in Thin Client protocol

2019-12-03 Thread Igor Sapego
Pavel,

I'm against adding this feature, as there were talks recently, that we
should stop supporting TextQuery altogether. No sense in adding
something, that we will need to depreciate and remove soon.

Best Regards,
Igor


On Tue, Dec 3, 2019 at 5:46 PM Pavel Tupitsyn  wrote:

> Oh wow, the next thread actually discusses this very issue about
> discontinuation:
>
> http://apache-ignite-developers.2346864.n4.nabble.com/Text-queries-indexes-GridLuceneIndex-QueryTextFiled-td43335.html
>
> But the question stands - add to Thin Clients or not?
>
> On Tue, Dec 3, 2019 at 5:43 PM Pavel Tupitsyn 
> wrote:
>
> > Igniters,
> >
> > I'd like to discuss adding full-text queries (TextQuery, our Lucene-based
> > engine) to the Thin Client protocol.
> >
> > In my opinion, this is a good addition, and rather easy to implement.
> > However, I vaguely remember in-person discussions with some community
> > members along the lines of
> > "Ignite full-text search capabilities may be deprecated or reworked soon,
> > let's not add to thin clients".
> >
> > Any insights on this? Thoughts, objections?
> >
> > Thanks,
> > Pavel
> >
> >
> >
> >
>


Re: Full-text queries in Thin Client protocol

2019-12-03 Thread Pavel Tupitsyn
Oh wow, the next thread actually discusses this very issue about
discontinuation:
http://apache-ignite-developers.2346864.n4.nabble.com/Text-queries-indexes-GridLuceneIndex-QueryTextFiled-td43335.html

But the question stands - add to Thin Clients or not?

On Tue, Dec 3, 2019 at 5:43 PM Pavel Tupitsyn  wrote:

> Igniters,
>
> I'd like to discuss adding full-text queries (TextQuery, our Lucene-based
> engine) to the Thin Client protocol.
>
> In my opinion, this is a good addition, and rather easy to implement.
> However, I vaguely remember in-person discussions with some community
> members along the lines of
> "Ignite full-text search capabilities may be deprecated or reworked soon,
> let's not add to thin clients".
>
> Any insights on this? Thoughts, objections?
>
> Thanks,
> Pavel
>
>
>
>


Full-text queries in Thin Client protocol

2019-12-03 Thread Pavel Tupitsyn
Igniters,

I'd like to discuss adding full-text queries (TextQuery, our Lucene-based
engine) to the Thin Client protocol.

In my opinion, this is a good addition, and rather easy to implement.
However, I vaguely remember in-person discussions with some community
members along the lines of
"Ignite full-text search capabilities may be deprecated or reworked soon,
let's not add to thin clients".

Any insights on this? Thoughts, objections?

Thanks,
Pavel


[DISCUSS] Links to commercial version resources in community wiki

2019-12-03 Thread Ivan Pavlukhin
Folks,

In a thread about a document describing data consistency [1] in Ignite
it was identified that there is a link to GridGain documentation.

I do not have strong arguments against having such links in community
wiki. But it interesting to me to discuss the subject with community.
Might be there is some common practice in ASF communities about the
subject.

Please, share your thoughts.

[1] https://cwiki.apache.org/confluence/display/IGNITE/Data+consistency
-- 
Best regards,
Ivan Pavlukhin


Re: Re[4]: Text queries/indexes (GridLuceneIndex, @QueryTextFiled)

2019-12-03 Thread Ivan Pavlukhin
*on topologies

вт, 3 дек. 2019 г. в 17:15, Ivan Pavlukhin :
>
> Ilya, Yuriy,
>
> It seems that text queries can return incorrect results on tologies
> with MOVING partitions. I left a comment in JIRA [1].
>
> [1] https://issues.apache.org/jira/browse/IGNITE-12401
>
> пн, 2 дек. 2019 г. в 15:00, Ivan Pavlukhin :
> >
> > Ilya,
> >
> > I checked your test on a revision before "limit" and it fails there as
> > well. Could you please double check?
> >
> > пн, 2 дек. 2019 г. в 13:21, Ilya Kasnacheev :
> > >
> > > Hello!
> > >
> > > The problem is NOT specific to range queries. Range queries were broken
> > > previously and they are broken now, but now even a simple "token in field
> > > with limit" returns duplicates.
> > >
> > > Before limits were introduced, any tested use cases were unaffected by
> > > duplicates, but now they are.
> > >
> > > Regards,
> > > --
> > > Ilya Kasnacheev
> > >
> > >
> > > пн, 2 дек. 2019 г. в 12:23, Ivan Pavlukhin :
> > >
> > > > And is the problem specific to range queries or not?
> > > >
> > > > пн, 2 дек. 2019 г. в 11:12, Ivan Pavlukhin :
> > > > >
> > > > > Yuriy,
> > > > >
> > > > > Thank you for investigating the problem [1]. Still cannot realize how
> > > > > the problem relates to introduced "limit"? Is it right that there were
> > > > > no duplicates before "limit" support? After that support is introduced
> > > > > are only limited queries contain duplicates, or unlimited, or both?
> > > > >
> > > > > [1] https://issues.apache.org/jira/browse/IGNITE-12401
> > > > >
> > > > > чт, 28 нояб. 2019 г. в 18:30, Ilya Kasnacheev 
> > > > >  > > > >:
> > > > > >
> > > > > > Hello!
> > > > > >
> > > > > > I have just found what I consider a major regression in Text 
> > > > > > Queries:
> > > > it
> > > > > > seems to me that text queries with limits will return same key-value
> > > > > > entries multiple times.
> > > > > >
> > > > > > Please check the issue
> > > > https://issues.apache.org/jira/browse/IGNITE-12401
> > > > > > and corresponding build
> > > > > > https://ci.ignite.apache.org/viewQueued.html?itemId=4799634
> > > > > >
> > > > > > Regards,
> > > > > > --
> > > > > > Ilya Kasnacheev
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Best regards,
> > > > > Ivan Pavlukhin
> > > >
> > > >
> > > >
> > > > --
> > > > Best regards,
> > > > Ivan Pavlukhin
> > > >
> >
> >
> >
> > --
> > Best regards,
> > Ivan Pavlukhin
>
>
>
> --
> Best regards,
> Ivan Pavlukhin



-- 
Best regards,
Ivan Pavlukhin


Re: Re[4]: Text queries/indexes (GridLuceneIndex, @QueryTextFiled)

2019-12-03 Thread Ivan Pavlukhin
Ilya, Yuriy,

It seems that text queries can return incorrect results on tologies
with MOVING partitions. I left a comment in JIRA [1].

[1] https://issues.apache.org/jira/browse/IGNITE-12401

пн, 2 дек. 2019 г. в 15:00, Ivan Pavlukhin :
>
> Ilya,
>
> I checked your test on a revision before "limit" and it fails there as
> well. Could you please double check?
>
> пн, 2 дек. 2019 г. в 13:21, Ilya Kasnacheev :
> >
> > Hello!
> >
> > The problem is NOT specific to range queries. Range queries were broken
> > previously and they are broken now, but now even a simple "token in field
> > with limit" returns duplicates.
> >
> > Before limits were introduced, any tested use cases were unaffected by
> > duplicates, but now they are.
> >
> > Regards,
> > --
> > Ilya Kasnacheev
> >
> >
> > пн, 2 дек. 2019 г. в 12:23, Ivan Pavlukhin :
> >
> > > And is the problem specific to range queries or not?
> > >
> > > пн, 2 дек. 2019 г. в 11:12, Ivan Pavlukhin :
> > > >
> > > > Yuriy,
> > > >
> > > > Thank you for investigating the problem [1]. Still cannot realize how
> > > > the problem relates to introduced "limit"? Is it right that there were
> > > > no duplicates before "limit" support? After that support is introduced
> > > > are only limited queries contain duplicates, or unlimited, or both?
> > > >
> > > > [1] https://issues.apache.org/jira/browse/IGNITE-12401
> > > >
> > > > чт, 28 нояб. 2019 г. в 18:30, Ilya Kasnacheev  > > >:
> > > > >
> > > > > Hello!
> > > > >
> > > > > I have just found what I consider a major regression in Text Queries:
> > > it
> > > > > seems to me that text queries with limits will return same key-value
> > > > > entries multiple times.
> > > > >
> > > > > Please check the issue
> > > https://issues.apache.org/jira/browse/IGNITE-12401
> > > > > and corresponding build
> > > > > https://ci.ignite.apache.org/viewQueued.html?itemId=4799634
> > > > >
> > > > > Regards,
> > > > > --
> > > > > Ilya Kasnacheev
> > > >
> > > >
> > > >
> > > > --
> > > > Best regards,
> > > > Ivan Pavlukhin
> > >
> > >
> > >
> > > --
> > > Best regards,
> > > Ivan Pavlukhin
> > >
>
>
>
> --
> Best regards,
> Ivan Pavlukhin



-- 
Best regards,
Ivan Pavlukhin


[jira] [Created] (IGNITE-12414) .NET: Performance: review CopyOnWriteConcurrentDictionary.GetOrAdd usage and locking

2019-12-03 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-12414:
---

 Summary: .NET: Performance: review 
CopyOnWriteConcurrentDictionary.GetOrAdd usage and locking
 Key: IGNITE-12414
 URL: https://issues.apache.org/jira/browse/IGNITE-12414
 Project: Ignite
  Issue Type: Improvement
  Components: platforms
Reporter: Pavel Tupitsyn
Assignee: Pavel Tupitsyn
 Fix For: 3.0, 2.9


CopyOnWriteConcurrentDictionary.GetOrAdd uses lock right away, while the class 
assumes frequent reads and infrequent writes. It can be beneficial to check for 
the key outside of the lock.

In particular, this often causes contention because of 
BinarySystemHandlers.GetWriteHandler call.

Review other usages of this method.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


Re: Apache Ignite 2.8 RELEASE [Time, Scope, Manager]

2019-12-03 Thread Alexei Scherbakov
No objections.

вт, 3 дек. 2019 г. в 15:02, Maxim Muzafarov :

> Alexey,
>
>
> Yet another issue [1] with corrupted B+Tree exception on the master branch.
> My suggestion is to revert the IGNITE-11704 [3] issue from the master
> branch and rework the patch.
>
> Any objections?
>
> Configuration:
> [1] persistence = false
> [2] persistence = true
>
> class
> org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
> B+Tree is corrupted [pages(groupId, pageId)=[IgniteBiTuple
> [val1=1544803905, val2=844420635196573]], msg=Runtime failure on
> cursor iteration]
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.corruptedTreeException(BPlusTree.java:5927)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.nextPage(BPlusTree.java:5438)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$ForwardCursor.next(BPlusTree.java:5661)
> at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl$1.next(IgniteCacheOffheapManagerImpl.java:3020)
> at
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition$2.hasNextX(GridDhtLocalPartition.java:1226)
> at
> org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
> at
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.doClear(GridDhtLocalPartition.java:1295)
> at
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.clearTombstones(GridDhtLocalPartition.java:1242)
> at
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.PartitionsEvictManager$ClearTombstonesTask.run0(PartitionsEvictManager.java:673)
> at
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.PartitionsEvictManager$AbstractEvictionTask.run(PartitionsEvictManager.java:587)
> at
> org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7061)
> at
> org.apache.ignite.internal.processors.closure.GridClosureProcessor$1.body(GridClosureProcessor.java:827)
> at
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
>
> Caused by: java.lang.AssertionError: Key is not ready:
> CacheDataRowAdapter [key=null, val=null, expireTime=-1, ver=null,
> cacheId=0, link=0001003c77d8]
> at
> org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.key(CacheDataRowAdapter.java:837)
> at
> org.apache.ignite.internal.processors.cache.tree.CacheDataTree.compare(CacheDataTree.java:382)
> at
> org.apache.ignite.internal.processors.cache.tree.CacheDataTree.compare(CacheDataTree.java:63)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.compare(BPlusTree.java:5200)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.findLowerBound(BPlusTree.java:5317)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$ForwardCursor.fillFromBuffer0(BPlusTree.java:5588)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.fillFromBuffer(BPlusTree.java:5376)
> at
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.nextPage(BPlusTree.java:5428)
>
>
> [1]
> https://ci.ignite.apache.org/viewLog.html?buildId=4807946=buildResultsDiv=IgniteTests24Java8_Cache9#testNameId1910487508546147692
> [2]
> https://ci.ignite.apache.org/viewLog.html?buildId=4796925=buildResultsDiv=IgniteTests24Java8_Cache9#testNameId7609674190425495190
> [3] https://issues.apache.org/jira/browse/IGNITE-11704
>
>
>
>
> On Tue, 3 Dec 2019 at 13:39, Alexei Scherbakov
>  wrote:
> >
> > Maxim,
> >
> > I'm not sure this is purely a "tombstone" problem, could be a tree
> > concurrency issue.
> > Looks like the investigation is required.
> > For example, tombstone logic can be reverted but test logic is kept.
> >
> > It seems Ivan Rakov already suggested to revert a commit from master
> branch
> > in another thread.
> >
> > пн, 2 дек. 2019 г. в 17:17, Maxim Muzafarov :
> >
> > > Igniters,
> > >
> > >
> > > I've found a scary error [1] with `CorruptedTreeException: B+Tree is
> > > corrupted` on TC in the master branch. It seems that the issue is
> > > related to a [2] tombstone implementation (probably not).
> > >
> > > Can anyone confirm that the problem is still actual?
> > > If it is true, do we have time for resolving the problem?
> > > Will it be better to revert this commit from the release branch?
> > >
> > > [1]
> > >
> https://ci.ignite.apache.org/viewLog.html?buildId=4796925=buildResultsDiv=IgniteTests24Java8_Cache9#testNameId7609674190425495190
> > > [2] 

Re: Joining node validation failure event.

2019-12-03 Thread Ivan Pavlukhin
Mikhail,

Yep, I see IgniteNodeValidationResult in new event in PR [1].

> Discovery events such as (join/left/failed) are connected with a
> topology version change. In my case that not happens and may be
> misleading. That's why the new event type was chosen.

I did not mean that one of those events should be used. I meant that
it sounds natural to me to have an additional "unsuccessful node join"
event (like is done in PR[1]).

https://github.com/apache/ignite/pull/7057/files

вт, 3 дек. 2019 г. в 14:32, Mikhail Petrov :
>
> Nikolay, Ivan,
>
> I understood the possible problem. It seems that it can be solved using
> EventStorageSpi which starts before DiscoveryManager.
>
> As for me, ClusterNode is enough. It contains all info about joining
> node including its attributes.
>
> Discovery events such as (join/left/failed) are connected with a
> topology version change. In my case that not happens and may be
> misleading. That's why the new event type was chosen.
>
> The cause of the failure is also presented in the event.
>
> Regards,
> Mikhail.
>
> On 03.12.2019 13:19, Николай Ижиков wrote:
> > Exception(s) from component(s) that don’t want node joined.
> >
> >> 3 дек. 2019 г., в 12:39, Ivan Pavlukhin  написал(а):
> >>
> >> How that reason will look like? Actually, I mostly thinking about
> >> general API here. What I would like to avoid is exposing something not
> >> general but needed only for a particular extension (plugin).
> >>
> >> вт, 3 дек. 2019 г. в 12:31, Николай Ижиков :
> >>> I think we also should provide the reason why join failed.
> >>>
>  3 дек. 2019 г., в 12:22, Ivan Pavlukhin  написал(а):
> 
>  Mikhail,
> 
>  So, I suppose there should be ordering guarantees that listener is
>  registered before first validation failure can occur. Hope
>  GridComponent#onKernalStart is the right place. Is it enough to pass
>  only problematic node id (or ClusterNode) with an event? Actually such
>  event seems to fit naturally node join/left/failed events.
> 
>  вт, 3 дек. 2019 г. в 10:38, Mikhail Petrov :
> > Hi Ivan.
> >
> > No other lifecycle events are needed in my case.
> >
> > We can register a listener in the security component's
> > GridComponent#onKernalStart method and listen locally to every failed
> > joining attempt. Am I missing something?
> >
> > Regards,
> > Mikhail.
> >
> > On 03.12.2019 8:48, Ivan Pavlukhin wrote:
> >> Mikhail,
> >>
> >> Do you need some ordering guarantees among node lifecycle events and
> >> listener notifications. For example, I can imagine that it is good to
> >> notify security component about every node failed validation. How can
> >> we achieve it with events (I assume dynamic listener registration)?
> >>
> >> пн, 2 дек. 2019 г. в 18:09, Mikhail Petrov :
> >>> Hi, Andrey.
> >>>
> >>> It doesn't influence on authentication or authorization process. There
> >>> is a security requirement that demands to notify some outer security
> >>> subsystems in a specific way when joining node validation failed in 
> >>> any
> >>> Ignite component (e.g. GridCacheProcessor) not only in
> >>> IgniteSecurityProcessor. So PluginProvider#validateNewNode is not
> >>> acceptable for me.
> >>>
> >>> Regards,
> >>> Mikhail.
> >>>
> >>> On 02.12.2019 16:35, Andrey Gura wrote:
>  Mikhail,
> 
>  I don't understand how node validation on join affects security. But
>  it seems that you can use
>  PluginProvider#validateNewNode(org.apache.ignite.cluster.ClusterNode,
>  java.io.Serializable) method. Does it fit for your needs?
> 
>  On Mon, Dec 2, 2019 at 12:54 PM Mikhail Petrov 
>   wrote:
> > Hi, Ivan.
> >
> >
> > Unfortunately, we came to no decision yet. As I mentioned above this
> > event is disabled by default and no node will receive this event 
> > without
> > an explicit subscription. In my case, that event is assumed to be 
> > used
> > on node locally to share joining node info between security and
> > discovery components. I have no idea how to solve this problem 
> > without
> > publishing a new event too. But I'm concerned about the acceptance 
> > of
> > that solution. Maybe it can be solved some other way? I will 
> > appreciate
> > any suggestion or review PR [1] with event implementation.
> >
> >
> > [1] https://github.com/apache/ignite/pull/7057
> >
> >
> > Regards,
> >
> > Mikhail.
> >
> > On 02.12.2019 10:38, Ivan Pavlukhin wrote:
> >> Mikhail, Andrey,
> >>
> >> Have you come to a common decision here? As for me, it sounds 
> >> useful
> >> to expose node join failure details 

Re: Apache Ignite 2.8 RELEASE [Time, Scope, Manager]

2019-12-03 Thread Maxim Muzafarov
Alexey,


Yet another issue [1] with corrupted B+Tree exception on the master branch.
My suggestion is to revert the IGNITE-11704 [3] issue from the master
branch and rework the patch.

Any objections?

Configuration:
[1] persistence = false
[2] persistence = true

class 
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
B+Tree is corrupted [pages(groupId, pageId)=[IgniteBiTuple
[val1=1544803905, val2=844420635196573]], msg=Runtime failure on
cursor iteration]
at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.corruptedTreeException(BPlusTree.java:5927)
at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.nextPage(BPlusTree.java:5438)
at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$ForwardCursor.next(BPlusTree.java:5661)
at 
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl$1.next(IgniteCacheOffheapManagerImpl.java:3020)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition$2.hasNextX(GridDhtLocalPartition.java:1226)
at 
org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.doClear(GridDhtLocalPartition.java:1295)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.clearTombstones(GridDhtLocalPartition.java:1242)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.PartitionsEvictManager$ClearTombstonesTask.run0(PartitionsEvictManager.java:673)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.PartitionsEvictManager$AbstractEvictionTask.run(PartitionsEvictManager.java:587)
at 
org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:7061)
at 
org.apache.ignite.internal.processors.closure.GridClosureProcessor$1.body(GridClosureProcessor.java:827)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Caused by: java.lang.AssertionError: Key is not ready:
CacheDataRowAdapter [key=null, val=null, expireTime=-1, ver=null,
cacheId=0, link=0001003c77d8]
at 
org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.key(CacheDataRowAdapter.java:837)
at 
org.apache.ignite.internal.processors.cache.tree.CacheDataTree.compare(CacheDataTree.java:382)
at 
org.apache.ignite.internal.processors.cache.tree.CacheDataTree.compare(CacheDataTree.java:63)
at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.compare(BPlusTree.java:5200)
at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.findLowerBound(BPlusTree.java:5317)
at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$ForwardCursor.fillFromBuffer0(BPlusTree.java:5588)
at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.fillFromBuffer(BPlusTree.java:5376)
at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.nextPage(BPlusTree.java:5428)


[1] 
https://ci.ignite.apache.org/viewLog.html?buildId=4807946=buildResultsDiv=IgniteTests24Java8_Cache9#testNameId1910487508546147692
[2] 
https://ci.ignite.apache.org/viewLog.html?buildId=4796925=buildResultsDiv=IgniteTests24Java8_Cache9#testNameId7609674190425495190
[3] https://issues.apache.org/jira/browse/IGNITE-11704




On Tue, 3 Dec 2019 at 13:39, Alexei Scherbakov
 wrote:
>
> Maxim,
>
> I'm not sure this is purely a "tombstone" problem, could be a tree
> concurrency issue.
> Looks like the investigation is required.
> For example, tombstone logic can be reverted but test logic is kept.
>
> It seems Ivan Rakov already suggested to revert a commit from master branch
> in another thread.
>
> пн, 2 дек. 2019 г. в 17:17, Maxim Muzafarov :
>
> > Igniters,
> >
> >
> > I've found a scary error [1] with `CorruptedTreeException: B+Tree is
> > corrupted` on TC in the master branch. It seems that the issue is
> > related to a [2] tombstone implementation (probably not).
> >
> > Can anyone confirm that the problem is still actual?
> > If it is true, do we have time for resolving the problem?
> > Will it be better to revert this commit from the release branch?
> >
> > [1]
> > https://ci.ignite.apache.org/viewLog.html?buildId=4796925=buildResultsDiv=IgniteTests24Java8_Cache9#testNameId7609674190425495190
> > [2] https://issues.apache.org/jira/browse/IGNITE-11704
> >
> > On Wed, 13 Nov 2019 at 16:50, Maxim Muzafarov  wrote:
> > >
> > > Igniters,
> > >
> > >
> > > I've had conversations with Nikolay and Alexey about working progress
> > > [1] on ML, Spark, Monitoring 

Re: Joining node validation failure event.

2019-12-03 Thread Mikhail Petrov

Nikolay, Ivan,

I understood the possible problem. It seems that it can be solved using 
EventStorageSpi which starts before DiscoveryManager.


As for me, ClusterNode is enough. It contains all info about joining 
node including its attributes.


Discovery events such as (join/left/failed) are connected with a 
topology version change. In my case that not happens and may be 
misleading. That's why the new event type was chosen.


The cause of the failure is also presented in the event.

Regards,
Mikhail.

On 03.12.2019 13:19, Николай Ижиков wrote:

Exception(s) from component(s) that don’t want node joined.


3 дек. 2019 г., в 12:39, Ivan Pavlukhin  написал(а):

How that reason will look like? Actually, I mostly thinking about
general API here. What I would like to avoid is exposing something not
general but needed only for a particular extension (plugin).

вт, 3 дек. 2019 г. в 12:31, Николай Ижиков :

I think we also should provide the reason why join failed.


3 дек. 2019 г., в 12:22, Ivan Pavlukhin  написал(а):

Mikhail,

So, I suppose there should be ordering guarantees that listener is
registered before first validation failure can occur. Hope
GridComponent#onKernalStart is the right place. Is it enough to pass
only problematic node id (or ClusterNode) with an event? Actually such
event seems to fit naturally node join/left/failed events.

вт, 3 дек. 2019 г. в 10:38, Mikhail Petrov :

Hi Ivan.

No other lifecycle events are needed in my case.

We can register a listener in the security component's
GridComponent#onKernalStart method and listen locally to every failed
joining attempt. Am I missing something?

Regards,
Mikhail.

On 03.12.2019 8:48, Ivan Pavlukhin wrote:

Mikhail,

Do you need some ordering guarantees among node lifecycle events and
listener notifications. For example, I can imagine that it is good to
notify security component about every node failed validation. How can
we achieve it with events (I assume dynamic listener registration)?

пн, 2 дек. 2019 г. в 18:09, Mikhail Petrov :

Hi, Andrey.

It doesn't influence on authentication or authorization process. There
is a security requirement that demands to notify some outer security
subsystems in a specific way when joining node validation failed in any
Ignite component (e.g. GridCacheProcessor) not only in
IgniteSecurityProcessor. So PluginProvider#validateNewNode is not
acceptable for me.

Regards,
Mikhail.

On 02.12.2019 16:35, Andrey Gura wrote:

Mikhail,

I don't understand how node validation on join affects security. But
it seems that you can use
PluginProvider#validateNewNode(org.apache.ignite.cluster.ClusterNode,
java.io.Serializable) method. Does it fit for your needs?

On Mon, Dec 2, 2019 at 12:54 PM Mikhail Petrov  wrote:

Hi, Ivan.


Unfortunately, we came to no decision yet. As I mentioned above this
event is disabled by default and no node will receive this event without
an explicit subscription. In my case, that event is assumed to be used
on node locally to share joining node info between security and
discovery components. I have no idea how to solve this problem without
publishing a new event too. But I'm concerned about the acceptance of
that solution. Maybe it can be solved some other way? I will appreciate
any suggestion or review PR [1] with event implementation.


[1] https://github.com/apache/ignite/pull/7057


Regards,

Mikhail.

On 02.12.2019 10:38, Ivan Pavlukhin wrote:

Mikhail, Andrey,

Have you come to a common decision here? As for me, it sounds useful
to expose node join failure details somehow. The thing to decide on is
a mechanism to expose it. Unfortunately, immediately have no idea
better than using events.


What is purpose of the special cluster wide event? Node is not joined
to the topology. Why topology nodes should know something about this
node?

Was this question answered? I suppose that at least coordinator will
receive the event, will not it?

чт, 28 нояб. 2019 г. в 10:10, Mikhail Petrov :

Hi, Ivan.

I'm sorry that the discussion was moved in private channel. The problem
I'm trying to solve is described below in the thread. The security
plugin in my case stores and analyzesinfo about a node that failed to join.


Regards,

Mikhail.



 Forwarded Message 
Subject:Re: Joining node validation failure event.
Date:   Thu, 21 Nov 2019 21:43:33 +0300
From:   Mikhail Petrov 
To: Andrey Gura 



Hi, Andrey.

In my task security plugin running on the coordinator must locally
handle the situation when some node is trying to join the topology with
the invalid configuration. I can't handle the response on a node that
failed to connect because it's untrusted.

Actually I'm only concerned about one validation -- when all Ignite
components validate new node.

In my case plugin must be able to obtain general and security subject
information from joining TcpDiscoveryNode attributes. But I have no idea
how to share information between the security and discovery components
without 

Re: Apache Ignite 2.8 RELEASE [Time, Scope, Manager]

2019-12-03 Thread Alexei Scherbakov
Maxim,

I'm not sure this is purely a "tombstone" problem, could be a tree
concurrency issue.
Looks like the investigation is required.
For example, tombstone logic can be reverted but test logic is kept.

It seems Ivan Rakov already suggested to revert a commit from master branch
in another thread.

пн, 2 дек. 2019 г. в 17:17, Maxim Muzafarov :

> Igniters,
>
>
> I've found a scary error [1] with `CorruptedTreeException: B+Tree is
> corrupted` on TC in the master branch. It seems that the issue is
> related to a [2] tombstone implementation (probably not).
>
> Can anyone confirm that the problem is still actual?
> If it is true, do we have time for resolving the problem?
> Will it be better to revert this commit from the release branch?
>
> [1]
> https://ci.ignite.apache.org/viewLog.html?buildId=4796925=buildResultsDiv=IgniteTests24Java8_Cache9#testNameId7609674190425495190
> [2] https://issues.apache.org/jira/browse/IGNITE-11704
>
> On Wed, 13 Nov 2019 at 16:50, Maxim Muzafarov  wrote:
> >
> > Igniters,
> >
> >
> > I've had conversations with Nikolay and Alexey about working progress
> > [1] on ML, Spark, Monitoring features which we are waiting for. It
> > seems the progress dates is a bit slower than we expected earlier. I'd
> > suggest the following dates:
> >
> > 2 December - the release branch cutting.
> > 30 December - code freeze of the release branch (only blocker issues
> allowed)
> > 27 January 2020 - the voting date (2+ weeks of stabilization period)
> >
> > Any objections?
> >
> > [1]
> https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+2.8#ApacheIgnite2.8-Awatingfeaturescompletion
> >
> > On Thu, 7 Nov 2019 at 18:01, Maxim Muzafarov  wrote:
> > >
> > > Alexey,
> > >
> > >
> > > Not yet. I will announce the release branch cutting stage with a
> > > separate post, probably, for a one week before the cut. No one will
> > > not miss it for sure.
> > >
> > > Currently, all issues can safely be pinned to 2.8 release, but for
> > > huge issues\features (e.g. `baseline topology`, `persistence`) which
> > > are going to be included into the release, it's better to have a
> > > separate thread discussion. Do you have such issues in mind?
> > >
> > > I'm trying to estimate new release dates due to not all features which
> > > we are waiting for [1] will be completed by the due dates discussed
> > > before.
> > > I'll back soon.
> > >
> > > [1]
> https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+2.8#ApacheIgnite2.8-Awatingfeaturescompletion
> > >
> > > On Thu, 7 Nov 2019 at 17:46, Alexey Goncharuk
> > >  wrote:
> > > >
> > > > Maxim,
> > > >
> > > > A side note - we did not cut the 2.8 branch yet, did we?
> > > >
> > > > This information is not reflected on the release page and I just
> realized
> > > > that it is hard to choose a fix version for a ticket that is being
> merged
> > > > to master when release scope is being finalized. This moment is
> covered
> > > > neither in the release process nor in the development process
> (unless I am
> > > > missing something).
> > > >
> > > > ср, 6 нояб. 2019 г. в 13:55, Maxim Muzafarov :
> > > >
> > > > > Igniters,
> > > > > Ivan,
> > > > >
> > > > > Yes, it's true that currently, all resolved issues with 2.8
> fixVersion
> > > > > will get into 2.8 release.
> > > > > Moreover, I've marked all issues with empty fixVersion filed closed
> > > > > since 2.7 major release with 2.8 labels.
> > > > >
> > > > > On Tue, 5 Nov 2019 at 15:03, Ivan Pavlukhin 
> wrote:
> > > > > >
> > > > > > Maxim,
> > > > > >
> > > > > > Could you please elaborate about a question from Akash. What
> tickets
> > > > > > do we consider for release? All with 2.8 fix version in Jira or
> there
> > > > > > is a different criteria?
> > > > > >
> > > > > > вт, 5 нояб. 2019 г. в 15:01, Ivan Pavlukhin  >:
> > > > > > >
> > > > > > > Alexey,
> > > > > > >
> > > > > > > True. It is definitely to early for Calcite.
> > > > > > >
> > > > > > > вт, 5 нояб. 2019 г. в 14:46, Alexey Zinoviev <
> zaleslaw@gmail.com>:
> > > > > > > >
> > > > > > > > I have no ideas, I think it's enough for this release.
> > > > > > > >
> > > > > > > > As I understand it's not the proper time for Calcite
> integration and
> > > > > so on,
> > > > > > > > isn't it @Igor Seliverstov?
> > > > > > > >
> > > > > > > > вт, 5 нояб. 2019 г. в 14:41, Maxim Muzafarov <
> mmu...@apache.org>:
> > > > > > > >
> > > > > > > > > Igniters,
> > > > > > > > >
> > > > > > > > > Do we want to discuss something?
> > > > > > > > > What else features do we want to include?
> > > > > > > > >
> > > > > > > > > If not, I propose to exclude any other major features
> (except
> > > > > already
> > > > > > > > > discussed - ML, Monitoring, Spark) and focus on bug fixing
> and the
> > > > > > > > > master branch stabilization.
> > > > > > > > >
> > > > > > > > > On Wed, 30 Oct 2019 at 17:57, Akash Shinde <
> akashshi...@gmail.com>
> > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > Because I didn't see it in this 

Re: Joining node validation failure event.

2019-12-03 Thread Николай Ижиков
Exception(s) from component(s) that don’t want node joined.

> 3 дек. 2019 г., в 12:39, Ivan Pavlukhin  написал(а):
> 
> How that reason will look like? Actually, I mostly thinking about
> general API here. What I would like to avoid is exposing something not
> general but needed only for a particular extension (plugin).
> 
> вт, 3 дек. 2019 г. в 12:31, Николай Ижиков :
>> 
>> I think we also should provide the reason why join failed.
>> 
>>> 3 дек. 2019 г., в 12:22, Ivan Pavlukhin  написал(а):
>>> 
>>> Mikhail,
>>> 
>>> So, I suppose there should be ordering guarantees that listener is
>>> registered before first validation failure can occur. Hope
>>> GridComponent#onKernalStart is the right place. Is it enough to pass
>>> only problematic node id (or ClusterNode) with an event? Actually such
>>> event seems to fit naturally node join/left/failed events.
>>> 
>>> вт, 3 дек. 2019 г. в 10:38, Mikhail Petrov :
 
 Hi Ivan.
 
 No other lifecycle events are needed in my case.
 
 We can register a listener in the security component's
 GridComponent#onKernalStart method and listen locally to every failed
 joining attempt. Am I missing something?
 
 Regards,
 Mikhail.
 
 On 03.12.2019 8:48, Ivan Pavlukhin wrote:
> Mikhail,
> 
> Do you need some ordering guarantees among node lifecycle events and
> listener notifications. For example, I can imagine that it is good to
> notify security component about every node failed validation. How can
> we achieve it with events (I assume dynamic listener registration)?
> 
> пн, 2 дек. 2019 г. в 18:09, Mikhail Petrov :
>> Hi, Andrey.
>> 
>> It doesn't influence on authentication or authorization process. There
>> is a security requirement that demands to notify some outer security
>> subsystems in a specific way when joining node validation failed in any
>> Ignite component (e.g. GridCacheProcessor) not only in
>> IgniteSecurityProcessor. So PluginProvider#validateNewNode is not
>> acceptable for me.
>> 
>> Regards,
>> Mikhail.
>> 
>> On 02.12.2019 16:35, Andrey Gura wrote:
>>> Mikhail,
>>> 
>>> I don't understand how node validation on join affects security. But
>>> it seems that you can use
>>> PluginProvider#validateNewNode(org.apache.ignite.cluster.ClusterNode,
>>> java.io.Serializable) method. Does it fit for your needs?
>>> 
>>> On Mon, Dec 2, 2019 at 12:54 PM Mikhail Petrov  
>>> wrote:
 Hi, Ivan.
 
 
 Unfortunately, we came to no decision yet. As I mentioned above this
 event is disabled by default and no node will receive this event 
 without
 an explicit subscription. In my case, that event is assumed to be used
 on node locally to share joining node info between security and
 discovery components. I have no idea how to solve this problem without
 publishing a new event too. But I'm concerned about the acceptance of
 that solution. Maybe it can be solved some other way? I will appreciate
 any suggestion or review PR [1] with event implementation.
 
 
 [1] https://github.com/apache/ignite/pull/7057
 
 
 Regards,
 
 Mikhail.
 
 On 02.12.2019 10:38, Ivan Pavlukhin wrote:
> Mikhail, Andrey,
> 
> Have you come to a common decision here? As for me, it sounds useful
> to expose node join failure details somehow. The thing to decide on is
> a mechanism to expose it. Unfortunately, immediately have no idea
> better than using events.
> 
>> What is purpose of the special cluster wide event? Node is not joined
>> to the topology. Why topology nodes should know something about this
>> node?
> Was this question answered? I suppose that at least coordinator will
> receive the event, will not it?
> 
> чт, 28 нояб. 2019 г. в 10:10, Mikhail Petrov :
>> Hi, Ivan.
>> 
>> I'm sorry that the discussion was moved in private channel. The 
>> problem
>> I'm trying to solve is described below in the thread. The security
>> plugin in my case stores and analyzesinfo about a node that failed 
>> to join.
>> 
>> 
>> Regards,
>> 
>> Mikhail.
>> 
>> 
>> 
>>  Forwarded Message 
>> Subject:Re: Joining node validation failure event.
>> Date:   Thu, 21 Nov 2019 21:43:33 +0300
>> From:   Mikhail Petrov 
>> To: Andrey Gura 
>> 
>> 
>> 
>> Hi, Andrey.
>> 
>> In my task security plugin running on the coordinator must locally
>> handle the situation when some node is trying to join the topology 
>> with

Re: Joining node validation failure event.

2019-12-03 Thread Ivan Pavlukhin
How that reason will look like? Actually, I mostly thinking about
general API here. What I would like to avoid is exposing something not
general but needed only for a particular extension (plugin).

вт, 3 дек. 2019 г. в 12:31, Николай Ижиков :
>
> I think we also should provide the reason why join failed.
>
> > 3 дек. 2019 г., в 12:22, Ivan Pavlukhin  написал(а):
> >
> > Mikhail,
> >
> > So, I suppose there should be ordering guarantees that listener is
> > registered before first validation failure can occur. Hope
> > GridComponent#onKernalStart is the right place. Is it enough to pass
> > only problematic node id (or ClusterNode) with an event? Actually such
> > event seems to fit naturally node join/left/failed events.
> >
> > вт, 3 дек. 2019 г. в 10:38, Mikhail Petrov :
> >>
> >> Hi Ivan.
> >>
> >> No other lifecycle events are needed in my case.
> >>
> >> We can register a listener in the security component's
> >> GridComponent#onKernalStart method and listen locally to every failed
> >> joining attempt. Am I missing something?
> >>
> >> Regards,
> >> Mikhail.
> >>
> >> On 03.12.2019 8:48, Ivan Pavlukhin wrote:
> >>> Mikhail,
> >>>
> >>> Do you need some ordering guarantees among node lifecycle events and
> >>> listener notifications. For example, I can imagine that it is good to
> >>> notify security component about every node failed validation. How can
> >>> we achieve it with events (I assume dynamic listener registration)?
> >>>
> >>> пн, 2 дек. 2019 г. в 18:09, Mikhail Petrov :
>  Hi, Andrey.
> 
>  It doesn't influence on authentication or authorization process. There
>  is a security requirement that demands to notify some outer security
>  subsystems in a specific way when joining node validation failed in any
>  Ignite component (e.g. GridCacheProcessor) not only in
>  IgniteSecurityProcessor. So PluginProvider#validateNewNode is not
>  acceptable for me.
> 
>  Regards,
>  Mikhail.
> 
>  On 02.12.2019 16:35, Andrey Gura wrote:
> > Mikhail,
> >
> > I don't understand how node validation on join affects security. But
> > it seems that you can use
> > PluginProvider#validateNewNode(org.apache.ignite.cluster.ClusterNode,
> > java.io.Serializable) method. Does it fit for your needs?
> >
> > On Mon, Dec 2, 2019 at 12:54 PM Mikhail Petrov  
> > wrote:
> >> Hi, Ivan.
> >>
> >>
> >> Unfortunately, we came to no decision yet. As I mentioned above this
> >> event is disabled by default and no node will receive this event 
> >> without
> >> an explicit subscription. In my case, that event is assumed to be used
> >> on node locally to share joining node info between security and
> >> discovery components. I have no idea how to solve this problem without
> >> publishing a new event too. But I'm concerned about the acceptance of
> >> that solution. Maybe it can be solved some other way? I will appreciate
> >> any suggestion or review PR [1] with event implementation.
> >>
> >>
> >> [1] https://github.com/apache/ignite/pull/7057
> >>
> >>
> >> Regards,
> >>
> >> Mikhail.
> >>
> >> On 02.12.2019 10:38, Ivan Pavlukhin wrote:
> >>> Mikhail, Andrey,
> >>>
> >>> Have you come to a common decision here? As for me, it sounds useful
> >>> to expose node join failure details somehow. The thing to decide on is
> >>> a mechanism to expose it. Unfortunately, immediately have no idea
> >>> better than using events.
> >>>
>  What is purpose of the special cluster wide event? Node is not joined
>  to the topology. Why topology nodes should know something about this
>  node?
> >>> Was this question answered? I suppose that at least coordinator will
> >>> receive the event, will not it?
> >>>
> >>> чт, 28 нояб. 2019 г. в 10:10, Mikhail Petrov :
>  Hi, Ivan.
> 
>  I'm sorry that the discussion was moved in private channel. The 
>  problem
>  I'm trying to solve is described below in the thread. The security
>  plugin in my case stores and analyzesinfo about a node that failed 
>  to join.
> 
> 
>  Regards,
> 
>  Mikhail.
> 
> 
> 
>   Forwarded Message 
>  Subject:Re: Joining node validation failure event.
>  Date:   Thu, 21 Nov 2019 21:43:33 +0300
>  From:   Mikhail Petrov 
>  To: Andrey Gura 
> 
> 
> 
>  Hi, Andrey.
> 
>  In my task security plugin running on the coordinator must locally
>  handle the situation when some node is trying to join the topology 
>  with
>  the invalid configuration. I can't handle the response on a node that
>  failed to connect because it's untrusted.
> 
>  Actually I'm only 

Re: Data consistency essentials explained

2019-12-03 Thread Alexei Scherbakov
Ivan,

for me GG docs have more clear information on the subject.
As soon as community will improve docs quality link could be changed back
to Apache.

сб, 30 нояб. 2019 г. в 17:22, Ivan Pavlukhin :

> Alexei,
>
> > Ivan, the link is intentional.
>
> Could you please elaborate why is it fine to have a such link? The
> referred document is out of community control. Do not we have a
> similar one in Ignite documentation? Should we discuss it in another
> mail thread?
>
> сб, 30 нояб. 2019 г. в 15:48, Alexei Scherbakov <
> alexey.scherbak...@gmail.com>:
> >
> > Ivan, the link is intentional.
> >
> > Nikolai, the formatting looks ok to me. Feel free to change it however
> you
> > like.
> >
> > чт, 28 нояб. 2019 г. в 09:53, Николай Ижиков :
> >
> > > Hello, Alex.
> > >
> > > I think we should improve article formatting - code highlight, fonts,
> etc.
> > >
> > > For now, it’s very hard to read it.
> > >
> > > Can you, please, do it?
> > >
> > > > 28 нояб. 2019 г., в 09:25, Ivan Pavlukhin 
> > > написал(а):
> > > >
> > > > Alexei,
> > > >
> > > > Many thanks for that article! Really nice that now we have a document
> > > > describing Ignite approach for data consistency. I think it is super
> > > > important because it is not trivial and very Ignite specific. I
> > > > believe lots of Ignite developers will learn something new from this
> > > > document.
> > > >
> > > > By the way, I noticed a link to GridGain documentation [1]. Is it
> fine?
> > > >
> > > > [1]
> > >
> https://www.gridgain.com/docs/latest/developers-guide/key-value-api/transactions#pessimistic-transactions
> > > >
> > > > чт, 28 нояб. 2019 г. в 02:49, Denis Magda :
> > > >>
> > > >> Alex,
> > > >>
> > > >> Thanks a lot for putting your knowledge on paper. That's an
> invaluable
> > > contribution!
> > > >>
> > > >> Looping in the user community (will be interesting for those who use
> > > native persistence) and has just spread the word via Ignite twitter
> handle:
> > > >> https://twitter.com/ApacheIgnite/status/1199837055007612928
> > > >>
> > > >> -
> > > >> Denis
> > > >>
> > > >>
> > > >> On Wed, Nov 27, 2019 at 12:29 AM Alexei Scherbakov <
> > > alexey.scherbak...@gmail.com> wrote:
> > > >>>
> > > >>> Igniters,
> > > >>>
> > > >>> As a final action in my almost year long effort in repairing data
> > > >>> consistency related issues for transactional persistent caches I've
> > > >>> prepared an article explaining the principles of achieving the
> > > consistency
> > > >>> between partition copies for these scenarios [1]
> > > >>> Comments and suggestions are welcome.
> > > >>> I plan to keep the article in actual state if something will
> change in
> > > this
> > > >>> area in the future.
> > > >>> Fixes were mostly done under IGNITE-10780 and several follow-up
> fixes.
> > > >>>
> > > >>> There is still work to be done. Currently I'm working on similar
> issue
> > > for
> > > >>> atomic persistent caches [2]. I hope to give an update on that
> soon.
> > > >>>
> > > >>> [1]
> > > https://cwiki.apache.org/confluence/display/IGNITE/Data+consistency
> > > >>> [2] https://issues.apache.org/jira/browse/IGNITE-11797
> > > >>> --
> > > >>>
> > > >>> Best regards,
> > > >>> Alexei Scherbakov
> > > >
> > > >
> > > >
> > > > --
> > > > Best regards,
> > > > Ivan Pavlukhin
> > >
> > >
> >
> > --
> >
> > Best regards,
> > Alexei Scherbakov
>
>
>
> --
> Best regards,
> Ivan Pavlukhin
>


-- 

Best regards,
Alexei Scherbakov


Re: Joining node validation failure event.

2019-12-03 Thread Николай Ижиков
I think we also should provide the reason why join failed.

> 3 дек. 2019 г., в 12:22, Ivan Pavlukhin  написал(а):
> 
> Mikhail,
> 
> So, I suppose there should be ordering guarantees that listener is
> registered before first validation failure can occur. Hope
> GridComponent#onKernalStart is the right place. Is it enough to pass
> only problematic node id (or ClusterNode) with an event? Actually such
> event seems to fit naturally node join/left/failed events.
> 
> вт, 3 дек. 2019 г. в 10:38, Mikhail Petrov :
>> 
>> Hi Ivan.
>> 
>> No other lifecycle events are needed in my case.
>> 
>> We can register a listener in the security component's
>> GridComponent#onKernalStart method and listen locally to every failed
>> joining attempt. Am I missing something?
>> 
>> Regards,
>> Mikhail.
>> 
>> On 03.12.2019 8:48, Ivan Pavlukhin wrote:
>>> Mikhail,
>>> 
>>> Do you need some ordering guarantees among node lifecycle events and
>>> listener notifications. For example, I can imagine that it is good to
>>> notify security component about every node failed validation. How can
>>> we achieve it with events (I assume dynamic listener registration)?
>>> 
>>> пн, 2 дек. 2019 г. в 18:09, Mikhail Petrov :
 Hi, Andrey.
 
 It doesn't influence on authentication or authorization process. There
 is a security requirement that demands to notify some outer security
 subsystems in a specific way when joining node validation failed in any
 Ignite component (e.g. GridCacheProcessor) not only in
 IgniteSecurityProcessor. So PluginProvider#validateNewNode is not
 acceptable for me.
 
 Regards,
 Mikhail.
 
 On 02.12.2019 16:35, Andrey Gura wrote:
> Mikhail,
> 
> I don't understand how node validation on join affects security. But
> it seems that you can use
> PluginProvider#validateNewNode(org.apache.ignite.cluster.ClusterNode,
> java.io.Serializable) method. Does it fit for your needs?
> 
> On Mon, Dec 2, 2019 at 12:54 PM Mikhail Petrov  
> wrote:
>> Hi, Ivan.
>> 
>> 
>> Unfortunately, we came to no decision yet. As I mentioned above this
>> event is disabled by default and no node will receive this event without
>> an explicit subscription. In my case, that event is assumed to be used
>> on node locally to share joining node info between security and
>> discovery components. I have no idea how to solve this problem without
>> publishing a new event too. But I'm concerned about the acceptance of
>> that solution. Maybe it can be solved some other way? I will appreciate
>> any suggestion or review PR [1] with event implementation.
>> 
>> 
>> [1] https://github.com/apache/ignite/pull/7057
>> 
>> 
>> Regards,
>> 
>> Mikhail.
>> 
>> On 02.12.2019 10:38, Ivan Pavlukhin wrote:
>>> Mikhail, Andrey,
>>> 
>>> Have you come to a common decision here? As for me, it sounds useful
>>> to expose node join failure details somehow. The thing to decide on is
>>> a mechanism to expose it. Unfortunately, immediately have no idea
>>> better than using events.
>>> 
 What is purpose of the special cluster wide event? Node is not joined
 to the topology. Why topology nodes should know something about this
 node?
>>> Was this question answered? I suppose that at least coordinator will
>>> receive the event, will not it?
>>> 
>>> чт, 28 нояб. 2019 г. в 10:10, Mikhail Petrov :
 Hi, Ivan.
 
 I'm sorry that the discussion was moved in private channel. The problem
 I'm trying to solve is described below in the thread. The security
 plugin in my case stores and analyzesinfo about a node that failed to 
 join.
 
 
 Regards,
 
 Mikhail.
 
 
 
  Forwarded Message 
 Subject:Re: Joining node validation failure event.
 Date:   Thu, 21 Nov 2019 21:43:33 +0300
 From:   Mikhail Petrov 
 To: Andrey Gura 
 
 
 
 Hi, Andrey.
 
 In my task security plugin running on the coordinator must locally
 handle the situation when some node is trying to join the topology with
 the invalid configuration. I can't handle the response on a node that
 failed to connect because it's untrusted.
 
 Actually I'm only concerned about one validation -- when all Ignite
 components validate new node.
 
 In my case plugin must be able to obtain general and security subject
 information from joining TcpDiscoveryNode attributes. But I have no 
 idea
 how to share information between the security and discovery components
 without recording event and listening it locally.
 
 This event is assumed to be disable by default and in my 

Re: Joining node validation failure event.

2019-12-03 Thread Ivan Pavlukhin
Mikhail,

So, I suppose there should be ordering guarantees that listener is
registered before first validation failure can occur. Hope
GridComponent#onKernalStart is the right place. Is it enough to pass
only problematic node id (or ClusterNode) with an event? Actually such
event seems to fit naturally node join/left/failed events.

вт, 3 дек. 2019 г. в 10:38, Mikhail Petrov :
>
> Hi Ivan.
>
> No other lifecycle events are needed in my case.
>
> We can register a listener in the security component's
> GridComponent#onKernalStart method and listen locally to every failed
> joining attempt. Am I missing something?
>
> Regards,
> Mikhail.
>
> On 03.12.2019 8:48, Ivan Pavlukhin wrote:
> > Mikhail,
> >
> > Do you need some ordering guarantees among node lifecycle events and
> > listener notifications. For example, I can imagine that it is good to
> > notify security component about every node failed validation. How can
> > we achieve it with events (I assume dynamic listener registration)?
> >
> > пн, 2 дек. 2019 г. в 18:09, Mikhail Petrov :
> >> Hi, Andrey.
> >>
> >> It doesn't influence on authentication or authorization process. There
> >> is a security requirement that demands to notify some outer security
> >> subsystems in a specific way when joining node validation failed in any
> >> Ignite component (e.g. GridCacheProcessor) not only in
> >> IgniteSecurityProcessor. So PluginProvider#validateNewNode is not
> >> acceptable for me.
> >>
> >> Regards,
> >> Mikhail.
> >>
> >> On 02.12.2019 16:35, Andrey Gura wrote:
> >>> Mikhail,
> >>>
> >>> I don't understand how node validation on join affects security. But
> >>> it seems that you can use
> >>> PluginProvider#validateNewNode(org.apache.ignite.cluster.ClusterNode,
> >>> java.io.Serializable) method. Does it fit for your needs?
> >>>
> >>> On Mon, Dec 2, 2019 at 12:54 PM Mikhail Petrov  
> >>> wrote:
>  Hi, Ivan.
> 
> 
>  Unfortunately, we came to no decision yet. As I mentioned above this
>  event is disabled by default and no node will receive this event without
>  an explicit subscription. In my case, that event is assumed to be used
>  on node locally to share joining node info between security and
>  discovery components. I have no idea how to solve this problem without
>  publishing a new event too. But I'm concerned about the acceptance of
>  that solution. Maybe it can be solved some other way? I will appreciate
>  any suggestion or review PR [1] with event implementation.
> 
> 
>  [1] https://github.com/apache/ignite/pull/7057
> 
> 
>  Regards,
> 
>  Mikhail.
> 
>  On 02.12.2019 10:38, Ivan Pavlukhin wrote:
> > Mikhail, Andrey,
> >
> > Have you come to a common decision here? As for me, it sounds useful
> > to expose node join failure details somehow. The thing to decide on is
> > a mechanism to expose it. Unfortunately, immediately have no idea
> > better than using events.
> >
> >> What is purpose of the special cluster wide event? Node is not joined
> >> to the topology. Why topology nodes should know something about this
> >> node?
> > Was this question answered? I suppose that at least coordinator will
> > receive the event, will not it?
> >
> > чт, 28 нояб. 2019 г. в 10:10, Mikhail Petrov :
> >> Hi, Ivan.
> >>
> >> I'm sorry that the discussion was moved in private channel. The problem
> >> I'm trying to solve is described below in the thread. The security
> >> plugin in my case stores and analyzesinfo about a node that failed to 
> >> join.
> >>
> >>
> >> Regards,
> >>
> >> Mikhail.
> >>
> >>
> >>
> >>  Forwarded Message 
> >> Subject:Re: Joining node validation failure event.
> >> Date:   Thu, 21 Nov 2019 21:43:33 +0300
> >> From:   Mikhail Petrov 
> >> To: Andrey Gura 
> >>
> >>
> >>
> >> Hi, Andrey.
> >>
> >> In my task security plugin running on the coordinator must locally
> >> handle the situation when some node is trying to join the topology with
> >> the invalid configuration. I can't handle the response on a node that
> >> failed to connect because it's untrusted.
> >>
> >> Actually I'm only concerned about one validation -- when all Ignite
> >> components validate new node.
> >>
> >> In my case plugin must be able to obtain general and security subject
> >> information from joining TcpDiscoveryNode attributes. But I have no 
> >> idea
> >> how to share information between the security and discovery components
> >> without recording event and listening it locally.
> >>
> >> This event is assumed to be disable by default and in my case used only
> >> on local node so it's not look like "cluster wide event".
> >>
> >> Also I propose to record this event in dedicated utilityPool so it 
> >> can't
>