[jira] [Created] (IGNITE-14513) .NET Examples: Invalid test name in the error text

2021-04-12 Thread Fedor Malchikov (Jira)
Fedor Malchikov  created IGNITE-14513:
-

 Summary: .NET Examples: Invalid test name in the error text
 Key: IGNITE-14513
 URL: https://issues.apache.org/jira/browse/IGNITE-14513
 Project: Ignite
  Issue Type: Bug
  Components: examples, platforms
Reporter: Fedor Malchikov 


Test: *Thick/Cache/Multi Tiered Cache*

Error message:
{code:java}
Unhandled Exception: System.Exception: Extra nodes detected. ClientReconnect 
example should be run without external nodes.   at 
Apache.Ignite.Examples.Thick.Cache.MultiTieredCache.Program.Main() in 
/opt/buildagent/work/fdcb4fb5bbd0f7b3/i2test/var/suite-examples/art-gg-ent/platforms/dotnet/examples/Thick/Cache/MultiTieredCache/Program.cs:line
 58

{code}
ClientReconnect instead MultiTieredCache



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


[jira] [Created] (IGNITE-14514) Drop legacy interfaces.

2021-04-12 Thread Andrey Mashenkov (Jira)
Andrey Mashenkov created IGNITE-14514:
-

 Summary: Drop legacy interfaces.
 Key: IGNITE-14514
 URL: https://issues.apache.org/jira/browse/IGNITE-14514
 Project: Ignite
  Issue Type: Improvement
Reporter: Andrey Mashenkov
 Fix For: 3.0.0-alpha2


DirectBufferCleaner was introduced for versions < Java9 to cleanup buffer via 
hidden Unsafe method.
It is useless for Java9+ and ByteBuffer can be cleaned via Unsafe direct call.



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


[jira] [Created] (IGNITE-14515) Support MissingSwitchDefaultCheck checkstyle check

2021-04-12 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created IGNITE-14515:


 Summary: Support MissingSwitchDefaultCheck checkstyle check
 Key: IGNITE-14515
 URL: https://issues.apache.org/jira/browse/IGNITE-14515
 Project: Ignite
  Issue Type: Task
Reporter: Maxim Muzafarov
Assignee: Maxim Muzafarov
 Fix For: 2.11


Every switch statement should include a default case. The break in the default 
case is redundant, but it prevents a fall-through error if later another case 
is added.


https://www.oracle.com/java/technologies/javase/codeconventions-statements.html#468



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


Access to Apache Ignite Wiki

2021-04-12 Thread Vladislav Pyatkov
Hi, igniters!
Please grant me access to Ignite Wiki to help with editing and updating
info.
It is my JIRA account v.pyatkov

-- 
Vladislav Pyatkov


[jira] [Created] (IGNITE-14516) WAL can continue to log into archived segment if auto rollover enabled

2021-04-12 Thread Nikolay Izhikov (Jira)
Nikolay Izhikov created IGNITE-14516:


 Summary: WAL can continue to log into archived segment if auto 
rollover enabled
 Key: IGNITE-14516
 URL: https://issues.apache.org/jira/browse/IGNITE-14516
 Project: Ignite
  Issue Type: Improvement
Reporter: Nikolay Izhikov


Currently, there is a possibility that WAL will continue to log into an 
archived segment after node restart. 

Bug scenario:

# {{WalAutoArchiveAfterInactivity}} enabled.
# Node is stopping with the {{G.stop("ign", false")}}.
# T0: Performs last checkpoint write some records to current WAL 
segment({{Segment#0}}) and freeze.
# T1: Auto rollover happens in 
{{FileWriteAheadLogManager#checkWalRolloverRequiredDuringInactivityPeriod}}.
# T2({{FileArchiver}}) Archives {{Segment#0}}.

After restart, WAL will continue to log into {{Segment#0}} which leads that 
newly logged data will not be archived after rollover because {{FileArchiver}} 
will wait for {{Segment#2}} in 
{{SegmentCurrentStateStorage#waitNextSegmentForArchivation}}.

PR to highlight error - https://github.com/apache/ignite/pull/8997

It seems we should to continue to log into the next segment if {{curAbsIdx == 
lastArchivedSegment}} on start.



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


Re: Model of permissions for Ignite 3

2021-04-12 Thread Kseniya Romanova
Hi! Scheduled open call for Friday
https://www.meetup.com/Moscow-Apache-Ignite-Meetup/events/277518672/
Please join to see the zoom link. Consulted with Denis Garus and put the
topic as "Security", cause it's definitely wider than just permissions.

Cheers!

пн, 12 апр. 2021 г. в 09:25, Alexei Scherbakov :

> +1
>
> We should rethink the security model in Ignite 3 and have a default RBAC
> based implementation, from my point of view.
> By default, no code should be written to enable and use it.
>
> Let's schedule a meeting and discuss the details.
>
> вс, 11 апр. 2021 г. в 19:43, Denis Garus :
>
> > Andrey, Alexey thank you for the feedback!
> >
> > > I suggest decoupling authentication from authorization
> >
> > Yes, it would be useful. Existing SecuritySubject and SecurityContext
> > require reworking.
> >
> > > I think it would be great to have a default implementation of
> > user-role-permission model
> >
> > Completely agree it is a cool idea. Ignite should have more default
> > implementation referred to security.
> >
> > > Should we have a community meeting to discuss this?
> >
> > Yes, it would be great.
> > The wish list for Ignite 3 does not contain security improvement that,
> > IMHO, is wrong.
> > We should fix that oversight on early-stage Ignite 3 development.
> >
> > пт, 9 апр. 2021 г. в 18:47, Alexey Goncharuk  >:
> >
> > > Hello Denis, Andrey, Igniters,
> > >
> > > Why don't we take a step further in improving the security model in
> > Ignite
> > > 3? I think it would be great to have a default implementation of
> > > user-role-permission model in Ignite to be on par with security models
> of
> > > widely-used databases. This will complement community efforts in making
> > > most of the Ignite 3 behavior to be changeable in runtime.
> > >
> > > WDYT? Should we have a community meeting to discuss this?
> > >
> > >
> > > чт, 8 апр. 2021 г. в 23:54, Andrey Kuznetsov :
> > >
> > > > Hi Denis!
> > > >
> > > > The idea and prototype look great.
> > > >
> > > > I'd like to highlight one arguable point. Default authorization
> > > > implementation still assumes there are permissions provided in
> > > > SecuritySubject. In turn, authentication is still responsible for
> > filling
> > > > these permissions. I suggest decoupling authentication from
> > > authorization,
> > > > so that GridSecurityProcessor implementation is fully responsible for
> > > > obtaining permissions for SecuritySubject given on authorization. In
> > > > particular, implementation can choose an existing behavior of
> bundling
> > > > permissions with SecuritySubject.
> > > >
> > > > Makes sense?
> > > >
> > > > чт, 8 апр. 2021 г. в 17:52, Denis Garus :
> > > >
> > > > > Sorry, I forgot to point the link
> > > > >
> > > > > 1. https://github.com/apache/ignite/pull/8989
> > > > >
> > > > > чт, 8 апр. 2021 г. в 17:50, Denis Garus :
> > > > >
> > > > > > Hello, Igniters!
> > > > > >
> > > > > > I want to propose to improve the way which we use
> > > > > > to present permissions in Ignite 3.
> > > > > >
> > > > > > The model of permission in Ignite has a set of drawbacks.
> > > > > > The main drawback, IMHO: if you need to add a new permission,
> > > > > > you should change the core module by extended the
> > > 'SecurityPermission'
> > > > > > enum.
> > > > > > An approach like this becomes more challenged if new permission
> is
> > > > > created
> > > > > > for an extension.
> > > > > >
> > > > > > The existing permission model is overcomplicated.
> > > > > > The SecurityPermission enum is divided into four groups,
> > > > > > and to determine whether a security subject has been given
> > > permission,
> > > > > > a plugin developer has to know what the permission group is.
> > > > > > But 'CACHE_CREATE' and 'CACHE_DESTROY' are included in two groups
> > > > (system
> > > > > > operations and cache operations).
> > > > > > When 'CACHE_CREATE' ('CACHE_DESTROY') is treated as system
> > > permission,
> > > > > > it applies to all caches. In other cases, when 'CACHE_CREATE'
> > > > > > ('CACHE_DESTROY') is treated as cache permission,
> > > > > > permission checking is executed with the account of the cache
> name.
> > > > > > IMHO, this logic is hard to understand.
> > > > > > There is no ability to represent compound operation as single
> > > > permission
> > > > > > and so on.
> > > > > >
> > > > > >
> > > > > > So I would like to suggest using a permission model that is based
> > on
> > > > > > 'java.security.Permission'.
> > > > > > I prepared the concept [1] of how this model could look in
> Ignite.
> > > > > > Classes 'CachePermission', 'ComputePermission', and
> > > 'ServicePermission'
> > > > > > represent cache, compute,
> > > > > > and service permissions accordingly,  allow wildcards, for
> example,
> > > > > > "org.apache.ignite.internal.*".
> > > > > > Class 'IgniteClusterPermission' represents permission without
> > > actions.
> > > > > > Interface 'GridSecurityProcessor' has a default implementation of
> > the
> > > 

[jira] [Created] (IGNITE-14517) Inconsistent behavior of the method NetworkCluster#allMembers

2021-04-12 Thread Alexey Scherbakov (Jira)
Alexey Scherbakov created IGNITE-14517:
--

 Summary: Inconsistent behavior of the method 
NetworkCluster#allMembers
 Key: IGNITE-14517
 URL: https://issues.apache.org/jira/browse/IGNITE-14517
 Project: Ignite
  Issue Type: Bug
Reporter: Alexey Scherbakov


This method reports invalid number of alive nodes when a node is stopped 
gracefully.

The scenario:
 # Start the cluster of 3 nodes: n1, n2, n3.
 # Request n2 NetworkCluster#allMembers. It will return 3.
 # Stop node n1.
 # Request n2 NetworkCluster#allMembers again. It will return 3, but should 
return 2.

Here is a failed test from my working branch [1][2]

I've looked into scalecube code and found out the node is stuck in the 
io.scalecube.cluster.membership.MembershipProtocolImpl#membershipTable having 
MemberStatus.LEAVING state.

The possible fix would avoid using cluster.members at all and instead use 
events to maintain local topology. Events seem to work fine.

[1] 
https://github.com/gridgain/apache-ignite-3/blob/ignite-13885/modules/network/src/integrationTest/java/org/apache/ignite/network/scalecube/ITScaleCubeNetworkClusterMessagingTest.java
 

[2] 
https://ci.ignite.apache.org/viewLog.html?buildId=5963158&tab=buildResultsDiv&buildTypeId=ignite3_Tests_IntegrationTests&branch_ignite3_Tests=pull%2F78



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


Re: [DISCUSS] IEP-71 Public API for secondary index search

2021-04-12 Thread Maksim Timonin
Hi, Andrey!

Am I right, that you mean this ticket [1] *IGNITE-12291 Create controllable
paged query requests / responses for TextQuery similar to current SQL
result processing*, when talked about incorrect limit work for TextQueries?


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

On Thu, Apr 8, 2021 at 4:32 PM Maksim Timonin 
wrote:

> Hi, Andrey!
>
> >> ScanQuery, TextQuery and partially SQL query share the same
> infrastructure
> I think I understand what you mean. I debug query processing and now agree
> that it's a nice idea to try to reuse the infrastructure of scan and text
> queries. Also as I can see there already Reducer functionality exists, so I
> hope we can use that. I'm not absolutely confident now that it will work
> fine, but I'm going to start there. Thanks for pointing me this direction!
>
> >> I don't like the idea a user code will be executed inside BTree
> operation
> On the confluence page I've shown that a predicate passes as
> TreeRowClosure. In this case you're right, any exception in a predicate
> will lead to a CorruptedTreeException. But I see another legal way to
> implement the predicate operation. BPlusTree.find accepts the X param that
> passed to IO.getRow(). As I understand this param helps to control how much
> returned row is filled. Then we can use it to return an object that
> contains only basic info - link, pageAddr, offset. Then predicate operation
> will be applied on the higher level on a cursor returned by a tree (like
> H2TreeIndex does). It's safe to run user code there, we can handle
> exceptions there.
>
>
>
> On Wed, Apr 7, 2021 at 4:46 PM Andrey Mashenkov <
> andrey.mashen...@gmail.com> wrote:
>
>> Maksim,
>>
>> The ScanQuery API provides a filter as
>> > param that for case of index query should be splitted on such
>> conditions.
>> > It looks like a non-trivial task.
>> >
>> ScanQuery, TextQuery and partially SQL query share the same
>> infrastructure.
>> I've thought we could extend, improve and reuse some ScanQuery code that
>> already works fine: map query on topology, IO, batching.
>> Add IndexCondition alongside the Filter, and abstract query executor from
>> source (primary and secondary Indexes).
>> Add a sorted merge algorithm to the query merge stage. It can be very
>> useful also for TextQueries that suffers from the absence of sorted merge
>> and a "limit' condition work incorrectly.
>>
>> If you think it will be too hard than creating from scratch, I'm ok.
>>
>> 3. Ignite creates a proxy object that is filled with objects that are
>> > inlined. If a user tries to access a field that isn't inlined or not
>> > indexed, then deserialization will start and Ignite will log.warn()
>> about
>> > that.
>> >
>> Agree, this can be faster.
>> I don't like the idea a user code will be executed inside BTree operation,
>> any exception can cause FailureHandler triggering and stop the node.
>>
>> There is one more thing that could be improved.
>> ScanQuery now iterates over per-partition PK Hash index trees and has
>> performance issues on a small grid with a large number of partitions.
>> So, there are many partitions on every node and many trees should be
>> scanned.
>> In this case scan over a secondary index gives significant boots even if
>> every row is materialized, because we need to traverse over a single tree
>> per-node.
>> Having the ability to run a ScanQuery over a secondary index (if one
>> exists) instead of PK Hash will be great.
>>
>>
>> On Wed, Apr 7, 2021 at 11:18 AM Maksim Timonin 
>> wrote:
>>
>> > Hi, Andrey!
>> >
>> > Thanks for the review and your comments!
>> >
>> > >> Is it possible to extend ScanQuery functionality to pass index
>> condition
>> > I investigated this way and see some issues:
>> > 1. Querying of indexes is not a scan actually. It's
>> > a tree traverse (predicate operation is an exclusion, other operations
>> like
>> > gt, lt, min, max have explicit boundaries). An index query consists of
>> > conditions that match an index structure. In general for a multi-key
>> index
>> > there can be multiple conditions. The ScanQuery API provides a filter as
>> > param that for case of index query should be splitted on such
>> conditions.
>> > It looks like a non-trivial task.
>> > 2. Querying of an index requires a sorted result, while The ScanQuery
>> > doesn't matter about that. So there will be a different behavior of the
>> > iterator for scanning a cache and querying indexes. It's not much to
>> > implement I think, but it can make ScanQuery unclear for a user.
>> >
>> > Maybe it's a point to separate traverse (gt, lt, in, etc...) and scan
>> > (predicate) index operations to different API. So there still will be a
>> new
>> > query type for the traversing.
>> >
>> > But we will introduce some inheritors for ScanQuery, like TableScanQuery
>> > and IndexScanQuery, for scan and filter. Then the question is about
>> > ordering, Cache and Table scans aren't ordered, but Index is. Then we
>> can
>> > introduce an o

[jira] [Created] (IGNITE-14518) Generated PKG_INFO of package doesn't contains license info and long description

2021-04-12 Thread Ivan Daschinsky (Jira)
Ivan Daschinsky created IGNITE-14518:


 Summary: Generated PKG_INFO  of package doesn't contains license 
info and long description
 Key: IGNITE-14518
 URL: https://issues.apache.org/jira/browse/IGNITE-14518
 Project: Ignite
  Issue Type: Bug
  Components: python, thin client
Reporter: Ivan Daschinsky






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


[jira] [Created] (IGNITE-14519) Add ability to remove event handlers

2021-04-12 Thread Aleksandr Polovtcev (Jira)
Aleksandr Polovtcev created IGNITE-14519:


 Summary: Add ability to remove event handlers
 Key: IGNITE-14519
 URL: https://issues.apache.org/jira/browse/IGNITE-14519
 Project: Ignite
  Issue Type: Improvement
  Components: networking
Reporter: Aleksandr Polovtcev


{{Both TopologyService and }}{{MessagingService}} allow registering event 
handlers. They should also allow removing registered handlers by dynamically 
loaded components (e.g. caches) in order to avoid memory leaks.



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


Re: [DISCUSS] IEP-71 Public API for secondary index search

2021-04-12 Thread Stephen Darlington
How does this fit with the current IndexingSpi? Superficially they appear to do 
very similar things?

Regards,
Stephen

> On 6 Apr 2021, at 14:13, Maksim Timonin  wrote:
> 
> Hi, Igniters!
> 
> I'd like to propose a new feature - opportunity to query and create indexes
> from public API.
> 
> It will help in some cases, where:
> 1. SQL is not applicable by design of user application;
> 2. Where IndexScan is preferable than ScanQuery for performance reasons;
> 3. Functional indexes are required.
> 
> Also it'll be great to have a transactional support for such queries, like
> the "select for update" query provides. But I don't dig there much. It will
> be a next step if this API will be implemented.
> 
> I've prepared an IEP-71 for that [1] with more details. Please share your
> thoughts.
> 
> 
> [1]
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-71+Public+API+for+secondary+index+search




Re: [DISCUSS] IEP-71 Public API for secondary index search

2021-04-12 Thread Maksim Timonin
Hi Stephen!

Please have a look at the QueryProcessing paragraph [1]. I've described
why IndexingSpi doesn't fit us well.

[1]
https://cwiki.apache.org/confluence/display/IGNITE/IEP-71+Public+API+for+secondary+index+search#IEP71PublicAPIforsecondaryindexsearch-2)QueryProcessing

On Mon, Apr 12, 2021 at 1:24 PM Stephen Darlington <
stephen.darling...@gridgain.com> wrote:

> How does this fit with the current IndexingSpi? Superficially they appear
> to do very similar things?
>
> Regards,
> Stephen
>
> > On 6 Apr 2021, at 14:13, Maksim Timonin  wrote:
> >
> > Hi, Igniters!
> >
> > I'd like to propose a new feature - opportunity to query and create
> indexes
> > from public API.
> >
> > It will help in some cases, where:
> > 1. SQL is not applicable by design of user application;
> > 2. Where IndexScan is preferable than ScanQuery for performance reasons;
> > 3. Functional indexes are required.
> >
> > Also it'll be great to have a transactional support for such queries,
> like
> > the "select for update" query provides. But I don't dig there much. It
> will
> > be a next step if this API will be implemented.
> >
> > I've prepared an IEP-71 for that [1] with more details. Please share your
> > thoughts.
> >
> >
> > [1]
> >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-71+Public+API+for+secondary+index+search
>
>
>


Re: [DISCUSS] IEP-71 Public API for secondary index search

2021-04-12 Thread Andrey Mashenkov
Maksim,

Am I right, that you mean this ticket [1] *IGNITE-12291 Create controllable
> paged query requests / responses for TextQuery similar to current SQL
> result processing*, when talked about incorrect limit work for
> TextQueries?
>
Yes, sure, that's it.

On Mon, Apr 12, 2021 at 12:15 PM Maksim Timonin 
wrote:

> Hi, Andrey!
>
> Am I right, that you mean this ticket [1] *IGNITE-12291 Create
> controllable paged query requests / responses for TextQuery similar to
> current SQL result processing*, when talked about incorrect limit work
> for TextQueries?
>
>
> [1] https://issues.apache.org/jira/browse/IGNITE-12291
>
> On Thu, Apr 8, 2021 at 4:32 PM Maksim Timonin 
> wrote:
>
>> Hi, Andrey!
>>
>> >> ScanQuery, TextQuery and partially SQL query share the same
>> infrastructure
>> I think I understand what you mean. I debug query processing and now
>> agree that it's a nice idea to try to reuse the infrastructure of scan and
>> text queries. Also as I can see there already Reducer functionality exists,
>> so I hope we can use that. I'm not absolutely confident now that it will
>> work fine, but I'm going to start there. Thanks for pointing me this
>> direction!
>>
>> >> I don't like the idea a user code will be executed inside BTree
>> operation
>> On the confluence page I've shown that a predicate passes as
>> TreeRowClosure. In this case you're right, any exception in a predicate
>> will lead to a CorruptedTreeException. But I see another legal way to
>> implement the predicate operation. BPlusTree.find accepts the X param that
>> passed to IO.getRow(). As I understand this param helps to control how much
>> returned row is filled. Then we can use it to return an object that
>> contains only basic info - link, pageAddr, offset. Then predicate operation
>> will be applied on the higher level on a cursor returned by a tree (like
>> H2TreeIndex does). It's safe to run user code there, we can handle
>> exceptions there.
>>
>>
>>
>> On Wed, Apr 7, 2021 at 4:46 PM Andrey Mashenkov <
>> andrey.mashen...@gmail.com> wrote:
>>
>>> Maksim,
>>>
>>> The ScanQuery API provides a filter as
>>> > param that for case of index query should be splitted on such
>>> conditions.
>>> > It looks like a non-trivial task.
>>> >
>>> ScanQuery, TextQuery and partially SQL query share the same
>>> infrastructure.
>>> I've thought we could extend, improve and reuse some ScanQuery code that
>>> already works fine: map query on topology, IO, batching.
>>> Add IndexCondition alongside the Filter, and abstract query executor from
>>> source (primary and secondary Indexes).
>>> Add a sorted merge algorithm to the query merge stage. It can be very
>>> useful also for TextQueries that suffers from the absence of sorted merge
>>> and a "limit' condition work incorrectly.
>>>
>>> If you think it will be too hard than creating from scratch, I'm ok.
>>>
>>> 3. Ignite creates a proxy object that is filled with objects that are
>>> > inlined. If a user tries to access a field that isn't inlined or not
>>> > indexed, then deserialization will start and Ignite will log.warn()
>>> about
>>> > that.
>>> >
>>> Agree, this can be faster.
>>> I don't like the idea a user code will be executed inside BTree
>>> operation,
>>> any exception can cause FailureHandler triggering and stop the node.
>>>
>>> There is one more thing that could be improved.
>>> ScanQuery now iterates over per-partition PK Hash index trees and has
>>> performance issues on a small grid with a large number of partitions.
>>> So, there are many partitions on every node and many trees should be
>>> scanned.
>>> In this case scan over a secondary index gives significant boots even if
>>> every row is materialized, because we need to traverse over a single tree
>>> per-node.
>>> Having the ability to run a ScanQuery over a secondary index (if one
>>> exists) instead of PK Hash will be great.
>>>
>>>
>>> On Wed, Apr 7, 2021 at 11:18 AM Maksim Timonin 
>>> wrote:
>>>
>>> > Hi, Andrey!
>>> >
>>> > Thanks for the review and your comments!
>>> >
>>> > >> Is it possible to extend ScanQuery functionality to pass index
>>> condition
>>> > I investigated this way and see some issues:
>>> > 1. Querying of indexes is not a scan actually. It's
>>> > a tree traverse (predicate operation is an exclusion, other operations
>>> like
>>> > gt, lt, min, max have explicit boundaries). An index query consists of
>>> > conditions that match an index structure. In general for a multi-key
>>> index
>>> > there can be multiple conditions. The ScanQuery API provides a filter
>>> as
>>> > param that for case of index query should be splitted on such
>>> conditions.
>>> > It looks like a non-trivial task.
>>> > 2. Querying of an index requires a sorted result, while The ScanQuery
>>> > doesn't matter about that. So there will be a different behavior of the
>>> > iterator for scanning a cache and querying indexes. It's not much to
>>> > implement I think, but it can make ScanQuery unclear for a user.
>>> >
>>> > M

Re: [DISCUSS] IEP-71 Public API for secondary index search

2021-04-12 Thread Stephen Darlington
Is this a replacement for IndexingSpi? Put bluntly, do we deprecate (and 
remove) it?

Or do you see them as complimentary?

> On 12 Apr 2021, at 11:29, Maksim Timonin  wrote:
> 
> Hi Stephen!
> 
> Please have a look at the QueryProcessing paragraph [1]. I've described
> why IndexingSpi doesn't fit us well.
> 
> [1]
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-71+Public+API+for+secondary+index+search#IEP71PublicAPIforsecondaryindexsearch-2)QueryProcessing
> 
> On Mon, Apr 12, 2021 at 1:24 PM Stephen Darlington <
> stephen.darling...@gridgain.com> wrote:
> 
>> How does this fit with the current IndexingSpi? Superficially they appear
>> to do very similar things?
>> 
>> Regards,
>> Stephen
>> 
>>> On 6 Apr 2021, at 14:13, Maksim Timonin  wrote:
>>> 
>>> Hi, Igniters!
>>> 
>>> I'd like to propose a new feature - opportunity to query and create
>> indexes
>>> from public API.
>>> 
>>> It will help in some cases, where:
>>> 1. SQL is not applicable by design of user application;
>>> 2. Where IndexScan is preferable than ScanQuery for performance reasons;
>>> 3. Functional indexes are required.
>>> 
>>> Also it'll be great to have a transactional support for such queries,
>> like
>>> the "select for update" query provides. But I don't dig there much. It
>> will
>>> be a next step if this API will be implemented.
>>> 
>>> I've prepared an IEP-71 for that [1] with more details. Please share your
>>> thoughts.
>>> 
>>> 
>>> [1]
>>> 
>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-71+Public+API+for+secondary+index+search
>> 
>> 
>> 




Re: [DISCUSS] IEP-71 Public API for secondary index search

2021-04-12 Thread Maksim Timonin
Stephen,

I don't see a reason to replace or deprecate IndexingSpi. I'm not sure how
smbd uses it, but it works now.

On Mon, Apr 12, 2021 at 1:42 PM Stephen Darlington <
stephen.darling...@gridgain.com> wrote:

> Is this a replacement for IndexingSpi? Put bluntly, do we deprecate (and
> remove) it?
>
> Or do you see them as complimentary?
>
> > On 12 Apr 2021, at 11:29, Maksim Timonin 
> wrote:
> >
> > Hi Stephen!
> >
> > Please have a look at the QueryProcessing paragraph [1]. I've described
> > why IndexingSpi doesn't fit us well.
> >
> > [1]
> >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-71+Public+API+for+secondary+index+search#IEP71PublicAPIforsecondaryindexsearch-2)QueryProcessing
> >
> > On Mon, Apr 12, 2021 at 1:24 PM Stephen Darlington <
> > stephen.darling...@gridgain.com> wrote:
> >
> >> How does this fit with the current IndexingSpi? Superficially they
> appear
> >> to do very similar things?
> >>
> >> Regards,
> >> Stephen
> >>
> >>> On 6 Apr 2021, at 14:13, Maksim Timonin 
> wrote:
> >>>
> >>> Hi, Igniters!
> >>>
> >>> I'd like to propose a new feature - opportunity to query and create
> >> indexes
> >>> from public API.
> >>>
> >>> It will help in some cases, where:
> >>> 1. SQL is not applicable by design of user application;
> >>> 2. Where IndexScan is preferable than ScanQuery for performance
> reasons;
> >>> 3. Functional indexes are required.
> >>>
> >>> Also it'll be great to have a transactional support for such queries,
> >> like
> >>> the "select for update" query provides. But I don't dig there much. It
> >> will
> >>> be a next step if this API will be implemented.
> >>>
> >>> I've prepared an IEP-71 for that [1] with more details. Please share
> your
> >>> thoughts.
> >>>
> >>>
> >>> [1]
> >>>
> >>
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-71+Public+API+for+secondary+index+search
> >>
> >>
> >>
>
>
>


Re: [DISCUSS] IEP-71 Public API for secondary index search

2021-04-12 Thread Maksim Timonin
Andrey,

Thanks! I picked it.

On Mon, Apr 12, 2021 at 1:51 PM Maksim Timonin 
wrote:

> Stephen,
>
> I don't see a reason to replace or deprecate IndexingSpi. I'm not sure how
> smbd uses it, but it works now.
>
> On Mon, Apr 12, 2021 at 1:42 PM Stephen Darlington <
> stephen.darling...@gridgain.com> wrote:
>
>> Is this a replacement for IndexingSpi? Put bluntly, do we deprecate (and
>> remove) it?
>>
>> Or do you see them as complimentary?
>>
>> > On 12 Apr 2021, at 11:29, Maksim Timonin 
>> wrote:
>> >
>> > Hi Stephen!
>> >
>> > Please have a look at the QueryProcessing paragraph [1]. I've described
>> > why IndexingSpi doesn't fit us well.
>> >
>> > [1]
>> >
>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-71+Public+API+for+secondary+index+search#IEP71PublicAPIforsecondaryindexsearch-2)QueryProcessing
>> >
>> > On Mon, Apr 12, 2021 at 1:24 PM Stephen Darlington <
>> > stephen.darling...@gridgain.com> wrote:
>> >
>> >> How does this fit with the current IndexingSpi? Superficially they
>> appear
>> >> to do very similar things?
>> >>
>> >> Regards,
>> >> Stephen
>> >>
>> >>> On 6 Apr 2021, at 14:13, Maksim Timonin 
>> wrote:
>> >>>
>> >>> Hi, Igniters!
>> >>>
>> >>> I'd like to propose a new feature - opportunity to query and create
>> >> indexes
>> >>> from public API.
>> >>>
>> >>> It will help in some cases, where:
>> >>> 1. SQL is not applicable by design of user application;
>> >>> 2. Where IndexScan is preferable than ScanQuery for performance
>> reasons;
>> >>> 3. Functional indexes are required.
>> >>>
>> >>> Also it'll be great to have a transactional support for such queries,
>> >> like
>> >>> the "select for update" query provides. But I don't dig there much. It
>> >> will
>> >>> be a next step if this API will be implemented.
>> >>>
>> >>> I've prepared an IEP-71 for that [1] with more details. Please share
>> your
>> >>> thoughts.
>> >>>
>> >>>
>> >>> [1]
>> >>>
>> >>
>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-71+Public+API+for+secondary+index+search
>> >>
>> >>
>> >>
>>
>>
>>


[jira] [Created] (IGNITE-14520) Plugins support in Ignite configuration

2021-04-12 Thread Mikhail Filatov (Jira)
Mikhail Filatov created IGNITE-14520:


 Summary: Plugins support in Ignite configuration
 Key: IGNITE-14520
 URL: https://issues.apache.org/jira/browse/IGNITE-14520
 Project: Ignite
  Issue Type: Task
Reporter: Mikhail Filatov
Assignee: Mikhail Filatov


Add support for plugin configuration with custom macros

It should be possible to add a plugin configuration toIgnite configuration by 
specifying template path and plugin parameters with code like:

{% if config.plugins %}
 
 
 \{% for plugin in config.plugins %}
 \{{ misc_utils.generate_plugin_config(plugin['template_path'], 
plugin['config'], config) }}
 \{% endfor %}
 
 
 \{% endif %}



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


[jira] [Created] (IGNITE-14521) Plugins support in Ignite configuration

2021-04-12 Thread Mikhail Filatov (Jira)
Mikhail Filatov created IGNITE-14521:


 Summary: Plugins support in Ignite configuration
 Key: IGNITE-14521
 URL: https://issues.apache.org/jira/browse/IGNITE-14521
 Project: Ignite
  Issue Type: Task
Reporter: Mikhail Filatov
Assignee: Mikhail Filatov


Add support for plugin configuration with custom macros

It should be possible to add a plugin configuration toIgnite configuration by 
specifying template path and plugin parameters with code like:

{% if config.plugins %}
 
 
 \{% for plugin in config.plugins %}
 \{{ misc_utils.generate_plugin_config(plugin['template_path'], 
plugin['config'], config) }}
 \{% endfor %}
 
 
 \{% endif %}



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


[jira] [Created] (IGNITE-14522) CommunicationManager refactoring

2021-04-12 Thread Alexander Lapin (Jira)
Alexander Lapin created IGNITE-14522:


 Summary:  CommunicationManager refactoring
 Key: IGNITE-14522
 URL: https://issues.apache.org/jira/browse/IGNITE-14522
 Project: Ignite
  Issue Type: Bug
Reporter: Alexander Lapin
Assignee: Alexander Lapin






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


[jira] [Created] (IGNITE-14523) Support for string.Compare method in Apache Ignite LINQ provider

2021-04-12 Thread Oleg Bevz (Jira)
Oleg Bevz created IGNITE-14523:
--

 Summary: Support for string.Compare method in Apache Ignite LINQ 
provider
 Key: IGNITE-14523
 URL: https://issues.apache.org/jira/browse/IGNITE-14523
 Project: Ignite
  Issue Type: New Feature
  Components: thin client
Affects Versions: 2.9.1
Reporter: Oleg Bevz
 Fix For: 2.9.1


Hello, current Apache Ignite does not support string comparison in LINQ 
provider (Apache.Ignite.Linq project).

For example following modified query 
insideThinClientQueryExample.ScanQueryExample method will throw Exception:

var employees = cache.AsCacheQueryable().Select(x => x.Value).Where(x => 
string.Compare(x.Name, "Daniel Adams") >= 0);
Exception has been thrown by the target of an invocation. 
System.Reflection.TargetInvocationException System.Object 
InvokeMethod(System.Object, System.Object[], System.Signature, Boolean) 
System.Reflection.TargetInvocationException: Exception has been thrown by the 
target of an invocation. ---> System.NotSupportedException: Method not 
supported: System.String.(Int32 Compare(System.String, System.String))
   at 
Apache.Ignite.Linq.Impl.MethodVisitor.VisitMethodCall(MethodCallExpression 
expression, CacheQueryExpressionVisitor visitor)
   at 
Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitMethodCall(MethodCallExpression
 expression)
   at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression 
expression)
   at 
Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitBinary(BinaryExpression
 expression)
   at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression 
expression)
   at 
Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitBinary(BinaryExpression
 expression)
   at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression 
expression)
   at 
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitWhereClause(WhereClause 
whereClause, Int32 index, Boolean hasGroups)
   at 
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.ProcessGroupings(QueryModel 
queryModel)
   at 
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitBodyClauses(ObservableCollection`1
 bodyClauses, QueryModel queryModel)
   at Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel queryModel)
   at Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitQueryModel(QueryModel 
queryModel, Boolean includeAllFields, Boolean copyAliases)
   at Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.GenerateQuery(QueryModel 
queryModel)
   at 
Apache.Ignite.Linq.Impl.CacheFieldsQueryExecutor.ExecuteCollection[T](QueryModel
 queryModel)
   at 
Remotion.Linq.Clauses.StreamedData.StreamedSequenceInfo.ExecuteQueryModel(QueryModel
 queryModel, IQueryExecutor executor)
   at 
Apache.Ignite.Linq.Impl.CacheFieldsQueryProvider.Execute[TResult](Expression 
expression)
 



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


[jira] [Created] (IGNITE-14524) Historical rebalance doesn't work if cache has configured rebalanceDelay

2021-04-12 Thread Dmitry Lazurkin (Jira)
Dmitry Lazurkin created IGNITE-14524:


 Summary: Historical rebalance doesn't work if cache has configured 
rebalanceDelay
 Key: IGNITE-14524
 URL: https://issues.apache.org/jira/browse/IGNITE-14524
 Project: Ignite
  Issue Type: Bug
Affects Versions: 2.10
Reporter: Dmitry Lazurkin


I have big cache with configured rebalanceMode = ASYNC, rebalanceDelay =
10_000ms. Persistence is enabled, maxWalArchiveSize = 10GB. And I passed
-DIGNITE_PREFER_WAL_REBALANCE=true and 
-DIGNITE_PDS_WAL_REBALANCE_THRESHOLD=1 to Ignite. So node should use
historical rebalance if there is enough WAL. But it doesn't. After
investigation I found that GridDhtPreloader#generateAssignments always
get called with exchFut = null, and this method can't set histPartitions
without exchFut. I think, that problem in
GridCachePartitionExchangeManager
(https://github.com/apache/ignite/blob/bc24f6baf3e9b4f98cf98cc5df67fb5deb5ceb6c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java#L3486).
It doesn't call generateAssignments without forcePreload if
rebalanceDelay is configured.

Historical rebalance works after removing rebalanceDelay.



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


[jira] [Created] (IGNITE-14525) Empty page in docs

2021-04-12 Thread Igor Gusev (Jira)
Igor Gusev created IGNITE-14525:
---

 Summary: Empty page in docs
 Key: IGNITE-14525
 URL: https://issues.apache.org/jira/browse/IGNITE-14525
 Project: Ignite
  Issue Type: Improvement
  Components: documentation
Reporter: Igor Gusev


[https://ignite.apache.org/docs/latest/installation/] page is empty. There 
should be some introduction in it, or no page at all.



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


Re: Access to Apache Ignite Wiki

2021-04-12 Thread Ilya Kasnacheev
Hello!

You need to create an account on https://cwiki.apache.org/ first.

Regards,
-- 
Ilya Kasnacheev


пн, 12 апр. 2021 г. в 11:44, Vladislav Pyatkov :

> Hi, igniters!
> Please grant me access to Ignite Wiki to help with editing and updating
> info.
> It is my JIRA account v.pyatkov
>
> --
> Vladislav Pyatkov
>


Re: Access to Apache Ignite Wiki

2021-04-12 Thread Vladislav Pyatkov
Hi Ilya,

Thanks for the note.
I created an account with the same login (v.pyatkov) in the Apache wiki.
Could you please gran me permissions?

On Mon, Apr 12, 2021 at 5:15 PM Ilya Kasnacheev 
wrote:

> Hello!
>
> You need to create an account on https://cwiki.apache.org/ first.
>
> Regards,
> --
> Ilya Kasnacheev
>
>
> пн, 12 апр. 2021 г. в 11:44, Vladislav Pyatkov :
>
> > Hi, igniters!
> > Please grant me access to Ignite Wiki to help with editing and updating
> > info.
> > It is my JIRA account v.pyatkov
> >
> > --
> > Vladislav Pyatkov
> >
>


-- 
Vladislav Pyatkov


Re: Access to Apache Ignite Wiki

2021-04-12 Thread Ilya Kasnacheev
Hello!

Permissions granted.

Regards,
-- 
Ilya Kasnacheev


пн, 12 апр. 2021 г. в 17:22, Vladislav Pyatkov :

> Hi Ilya,
>
> Thanks for the note.
> I created an account with the same login (v.pyatkov) in the Apache wiki.
> Could you please gran me permissions?
>
> On Mon, Apr 12, 2021 at 5:15 PM Ilya Kasnacheev  >
> wrote:
>
> > Hello!
> >
> > You need to create an account on https://cwiki.apache.org/ first.
> >
> > Regards,
> > --
> > Ilya Kasnacheev
> >
> >
> > пн, 12 апр. 2021 г. в 11:44, Vladislav Pyatkov :
> >
> > > Hi, igniters!
> > > Please grant me access to Ignite Wiki to help with editing and updating
> > > info.
> > > It is my JIRA account v.pyatkov
> > >
> > > --
> > > Vladislav Pyatkov
> > >
> >
>
>
> --
> Vladislav Pyatkov
>


Re: IEP-70: Async Continuation Executor

2021-04-12 Thread Pavel Tupitsyn
Stan,

Sorry for the late reply (had a vacation).

> In my ideal world, the users don't configure thread pools, they just have
safe default behavior (async execution)
> and a way to make it fast for one particular function (with annotation or
anything else).

I've
added 
testRemoteOperationListenerExecutesOnStripedPoolWhenCustomExecutorIsProvided
to demonstrate this use case.


> I'm OK to proceed with the approach you're suggesting if I haven't
convinced you by now

Are you OK to merge the changes as is (ForkJoinPool#commonPool as the
default executor),
or do we change it to Ignite public pool?

On Mon, Mar 29, 2021 at 11:09 PM Stanislav Lukyanov 
wrote:

> But what if I need to have exactly one callback synchronous, and all other
> can be asynchronous?
>
> I would separate two cases: an existing user who wants their old behavior
> back, and a new user that wants to fine tune their app.
> The existing user needs a global "make it all synchronous" switch.
> The new user should only enable the fast-but-dangerous behavior locally,
> exactly where they need it.
>
> In my ideal world, the users don't configure thread pools, they just have
> safe default behavior (async execution)
> and a way to make it fast for one particular function (with annotation or
> anything else).
> Also, this should work in a similar way for different APIs - so I'm trying
> to lay some basis to rework all of these continuous queries and event
> listeners,
> even though they're explicitly mentioned as out of scope for IEP-70.
>
> At the same time, I understand that any change we make now will have pros
> and cons, and we can't make it perfect because of compatibility reasons.
> I'm OK to proceed with the approach you're suggesting if I haven't
> convinced you by now :)
>
> Thanks,
> Stan
>
> > On 29 Mar 2021, at 22:47, Pavel Tupitsyn  wrote:
> >
> > Stan,
> >
> > Unfortunately, annotations have a few drawbacks:
> > * Can't configure it globally ("I already use sync callbacks, give me
> back
> > the old behavior in one line")
> > * Can't configure in Spring
> > * Useless in C++ & .NET
> > * You can already specify executor in IgniteFuture#listenAsync, so there
> > seems to be no added value
> >
> >> the only value we really expect the user to set in that property is
> > Runnable::run
> > Not really - there are lots of available options [1].
> > Some apps may already have one or more thread pools that can be used for
> > continuations.
> >
> >> you can't specify Runnable::run in a Spring XML
> > Good point, but creating a class for that is trivial.
> > We can ship a ready-made class and mention it in the docs for simplicity.
> >
> >
> > Globally configurable Executor fits nicely with
> > existing IgniteFuture#listenAsync,
> > not sure why you dislike it.
> >
> >
> > [1]
> >
> https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html
> >
> > On Mon, Mar 29, 2021 at 10:23 PM Stanislav Lukyanov <
> stanlukya...@gmail.com>
> > wrote:
> >
> >> Thought about this some more.
> >>
> >> I agree that we need to be able to switch to synchronous listeners when
> >> it's critical for performance.
> >> However, I don't like to introduce an Executor property for that. In
> fact,
> >> the only value
> >> we really expect the user to set in that property is Runnable::run -
> seems
> >> to be an overkill to have accept an Executor for that.
> >> Furthermore, you can't specify Runnable::run in a Spring XML, can you?
> >>
> >> I'm thinking that maybe we should go the annotation route here.
> >> Let's introduce an annotation @IgniteSyncCallback. It's the same as
> >> @IgniteAsyncCallback but reverse :)
> >> If a listener is annotated like that then we execute it in the same
> >> thread; by default, we execute in the public pool.
> >> We can also reuse the same annotation for all other callbacks we have in
> >> the system - right now, the callbacks are a mix of sync and async
> behavior,
> >> and we could transition all APIs to use async by default and enforce
> sync
> >> callbacks when the annotation is used.
> >> @IgniteAsyncCallback should eventually be deprecated.
> >>
> >> WDYT?
> >>
> >> Thanks,
> >> Stan
> >>
> >>> On 29 Mar 2021, at 14:09, Pavel Tupitsyn  wrote:
> >>>
> >>> Stan,
> >>>
> >>> I'm ok with using public pool by default, but we need a way to restore
> >> the
> >>> old behavior, do you agree?
> >>> I think we should keep the new IgniteConfiguration property.
> >>>
> >>> On Fri, Mar 26, 2021 at 2:12 PM Alexei Scherbakov <
> >>> alexey.scherbak...@gmail.com> wrote:
> >>>
>  Pavel,
> 
>  Dedicated pool looks safer and more manageable to me. Make sure the
> >> threads
>  in the pool are lazily started and stopped if not used for some time.
> 
>  Because I have no more real arguments against the change, I suggest to
>  proceed with this approach.
> 
>  чт, 25 мар. 2021 г. в 22:16, Pavel Tupitsyn :
> 
> > Alexei,
> >
> >> we already have ways to control a listener's behavior

[ANNOUNCE] Welcome Ivan Daschinsky as a new committer

2021-04-12 Thread Igor Sapego
The Project Management Committee (PMC) for Apache Ignite has invited
Ivan Daschinsky to become a committer and we are pleased to announce that
he has accepted.

Ivan made a lot of contributions to Apache Ignite.
He helped a lot to improve our Python Thin Client fixing a lot of different
bugs and contributing major feature such as asyncio support and C-extension
which improved performance significantly for many cases. Thanks to Ivan
Python
Thin client has become much more stable and production-ready. He also
introduced the CMake building system for Ignite C++, and has made a number
of
other important improvements. Besides the code contributions, Ivan is also
an
active community member.

Being a committer enables easier contribution to the project since there is
no need to go via the patch submission process. This should enable better
productivity.

Please join me in welcoming Ivan, and congratulating him on the new role in
the Apache Ignite Community.

Best Regards,
Igor


[jira] [Created] (IGNITE-14526) Hibernate L2 Cache not fully supported

2021-04-12 Thread Elias Balasis (Jira)
Elias Balasis created IGNITE-14526:
--

 Summary: Hibernate L2 Cache not fully supported
 Key: IGNITE-14526
 URL: https://issues.apache.org/jira/browse/IGNITE-14526
 Project: Ignite
  Issue Type: Bug
  Components: hibernate
Affects Versions: 2.10
Reporter: Elias Balasis


At 
https://ignite.apache.org/docs/2.10.0/extensions-and-integrations/hibernate-l2-cache
 the suggested Maven artifact does not exist.

{code}

  org.apache.ignite
  ignite-hibernate_5.3
  ${ignite.version}

{code}

A Gridgain variant with same artifact name does exist but it is incompatible 
with Apache variant.

{code}

  org.gridgain
  ignite-hibernate_5.3
  ${ignite.version}

{code}

Also there is no variant for Hibernate 5.4 or later.

This makes "Ignite" not useable as Hibernate L2 cache.



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


[jira] [Created] (IGNITE-14527) CVE-2021-2816[3,4,5] in Jetty

2021-04-12 Thread Alexander Belyak (Jira)
Alexander Belyak created IGNITE-14527:
-

 Summary: CVE-2021-2816[3,4,5] in Jetty
 Key: IGNITE-14527
 URL: https://issues.apache.org/jira/browse/IGNITE-14527
 Project: Ignite
  Issue Type: Task
  Components: integrations
Reporter: Alexander Belyak
Assignee: Alexander Belyak


Vulnerabilities found:

[https://nvd.nist.gov/vuln/detail/CVE-2021-28163]
[https://nvd.nist.gov/vuln/detail/CVE-2021-28164]
[https://nvd.nist.gov/vuln/detail/CVE-2021-28165]



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


Re: [ANNOUNCE] Welcome Ivan Daschinsky as a new committer

2021-04-12 Thread Zhenya Stanilovsky

Big deal ! Ivan, ignite it !) 


 
>The Project Management Committee (PMC) for Apache Ignite has invited
>Ivan Daschinsky to become a committer and we are pleased to announce that
>he has accepted.
>
>Ivan made a lot of contributions to Apache Ignite.
>He helped a lot to improve our Python Thin Client fixing a lot of different
>bugs and contributing major feature such as asyncio support and C-extension
>which improved performance significantly for many cases. Thanks to Ivan
>Python
>Thin client has become much more stable and production-ready. He also
>introduced the CMake building system for Ignite C++, and has made a number
>of
>other important improvements. Besides the code contributions, Ivan is also
>an
>active community member.
>
>Being a committer enables easier contribution to the project since there is
>no need to go via the patch submission process. This should enable better
>productivity.
>
>Please join me in welcoming Ivan, and congratulating him on the new role in
>the Apache Ignite Community.
>
>Best Regards,
>Igor 
 
 
 
 

Re: [ANNOUNCE] Welcome Ivan Daschinsky as a new committer

2021-04-12 Thread Nikolay Izhikov
Congrats! Well deserved.

> 13 апр. 2021 г., в 09:34, Zhenya Stanilovsky  
> написал(а):
> 
> 
> Big deal ! Ivan, ignite it !) 
> 
> 
>  
>> The Project Management Committee (PMC) for Apache Ignite has invited
>> Ivan Daschinsky to become a committer and we are pleased to announce that
>> he has accepted.
>> 
>> Ivan made a lot of contributions to Apache Ignite.
>> He helped a lot to improve our Python Thin Client fixing a lot of different
>> bugs and contributing major feature such as asyncio support and C-extension
>> which improved performance significantly for many cases. Thanks to Ivan
>> Python
>> Thin client has become much more stable and production-ready. He also
>> introduced the CMake building system for Ignite C++, and has made a number
>> of
>> other important improvements. Besides the code contributions, Ivan is also
>> an
>> active community member.
>> 
>> Being a committer enables easier contribution to the project since there is
>> no need to go via the patch submission process. This should enable better
>> productivity.
>> 
>> Please join me in welcoming Ivan, and congratulating him on the new role in
>> the Apache Ignite Community.
>> 
>> Best Regards,
>> Igor 
>  
>  
>  
>