[MTCGA]: new failures in builds [5302554] needs to be handled

2020-05-13 Thread dpavlov . tasks
Hi Igniters,

 I've detected some new issue on TeamCity to be handled. You are more than 
welcomed to help.

 *New Critical Failure in master MVCC Cache 7 
https://ci.ignite.apache.org/buildConfiguration/IgniteTests24Java8_MvccCache7?branch=%3Cdefault%3E
 No changes in the build

 - Here's a reminder of what contributors were agreed to do 
https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute 
 - Should you have any questions please contact dev@ignite.apache.org 

Best Regards,
Apache Ignite TeamCity Bot 
https://github.com/apache/ignite-teamcity-bot
Notification generated at 06:01:36 14-05-2020 


Re: Extensions for control.sh

2020-05-13 Thread Denis Magda
Perfect idea to use this the tool for configuration and addition of
extensions!

-
Denis


On Wed, May 13, 2020 at 11:43 AM Denis Mekhanikov 
wrote:

> Hi everyone!
>
> Control.sh is a command-line management tool that you can use to manage
> your grid and check its vital parameters like topology version or
> availability of baseline nodes. It has is good set of commands which are
> suitable to work with vanilla Ignite.
>
> There is also a way to extend functionality of Ignite by implementing a
> 3rd-party plugin or a module. Any plugin or external module should have
> some kind of API to manage and monitor its activity.
> If a command-line management command needs to be added, then the only
> way to achieve that is to provide an additional script, separate from
> control.sh. If you use multiple such plugins, then the set of required
> tools may grow and lead to confusion, which script should be used to
> configure which extension. Instead of doing that it would be convenient
> for users to have ability to use the same script, but with an extended
> set of options. It should make lifes of 3rd-party vendors easier.
>
> Currently many integrations and community-supported modules are being
> moved outside of the core product:
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-36%3A+Modularization
> I think it makes sense to provide a possibility to configure extensions
> using control.sh, since their number will grow over time, and some of
> them will require some runtime configuration.
>
> What do you think?
>
> Denis
>
>


[DISCUSS] Best way to re-encrypt existing data (TDE cache key rotation).

2020-05-13 Thread Pavel Pereslegin
Hello Igniters.

Recently, master key rotation for Apache Ignite Transparent Data
Encryption was implemented [1], but some security standards (PCI DSS
at least) require rotation of all encryption keys [2]. Currently,
encryption occurs when reading/writing pages to disk, cache encryption
keys are stored in metastore.

I'm going to contribute cache encryption key rotation and want to
consult what is the best way to re-encrypting existing data, I see two
different strategies.

1. In place re-encryption:
Using the old key, sequentially read all the pages from the datastore,
mark as dirty and log them into the WAL. After checkpoint pages will
be stored to disk encrypted with the new key (as usual, along with
updates). This strategy requires store the identifier (number) of the
encryption key into the encrypted page.
pros:
  - can work in the background with minimal performance impact (this
impact can be managed).
cons:
  - page duplication in the WAL may affect performance and historical rebalance.

2. Copy partition with re-encryption.
This strategy is similar to partition snapshotting [3] - create
partition copy encrypted with the new key and then replace the
original partition file with the new one (see details [4]).
pros:
  - should work faster than "in place" re-encryption.
cons:
  - re-encryption in active cluster (and on unstable topology) can be
difficult to implement.

(See more detailed comparison [5])

Re-encryption of existing data is a long and rare procedure (It is
recommended to change the key every 6 months, but at least once every
2 years). Thus, re-encryption can be implemented for maintenance mode
(for example, on a stable topology in a read-only cluster) and in such
case the approach with partition copying seems simpler and faster.

So, what do you think - do we need "online" re-encryption and which of
the proposed options is best suited for this?

[1] https://issues.apache.org/jira/browse/IGNITE-12186
[2] https://www.pcisecuritystandards.org/documents/PCI_DSS_v3-2-1.pdf
[3] 
https://cwiki.apache.org/confluence/display/IGNITE/IEP-43%3A+Cluster+snapshots#IEP-43:Clustersnapshots-Partitionscopystrategy
[4] 
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=95652384#TDE.Phase-3.Cachekeyrotation.-Copywithre-encryptiondesign.
[5] 
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=95652384#TDE.Phase-3.Cachekeyrotation.-Comparison


Re: Moving binary metadata to PDS storage folder

2020-05-13 Thread Denis Mekhanikov

Maxim,

This way we'll introduce a migration procedure between versions, which 
we currently don't have. Different Ignite versions are compatible by 
persistence storage. If we add a migration script, we need to decide, 
whether we need to run it every time when the version is upgraded, or 
only some specific versions are affected.


I suggest having a procedure that will look for metadata in the work 
directory, and if it finds it there, then the node will use it. 
Otherwise the persistence directory is used.


Denis

On 13.05.2020 21:40, Maxim Muzafarov wrote:

Folks,

I think it's important to discuss the following question regarding this thread:
Should we consider moving the migration procedure from the java
production code to migration scripts?

 From my understanding, keeping all such things in java production
source code has some disadvantages:
1. It executes only once at the migration stage.
2. It affects the complexity of the source code and code maintenance.
3. Node crash cases must be covered during the migration procedure.
4. It affects the production usage e.g. the process doesn't have the
right access to the old directory (migration already completed) and
will fail the node start.


The right behavior from my point should be:
1. Change the default path of binary/marshaller directory to the new one.
2. Provide migration scripts for users.

WDYT?

On Wed, 13 May 2020 at 21:10, Denis Mekhanikov  wrote:

Sounds great!

It happens pretty frequently that users migrate to a new version of
Ignite and preserve persistence files only without caring too much about
the work folder. But it turns out, that the work folder actually has
some important stuff.
This improvement should help with this issue.

What's about in-memory mode? As far as I know, we write binary metadata
to disk even when no persistence is configured. Do you plan to address
it in any way?

Denis

On 12.05.2020 15:56, Sergey Antonov wrote:

Hello Semyon,

This is a good idea!

вт, 12 мая 2020 г. в 15:53, Вячеслав Коптилин :


Hello Semyon,

This is a good and long-awaited improvement! Thank you for your efforts!

Thanks,
S.

вт, 12 мая 2020 г. в 15:11, Данилов Семён :


Hello!

I would like to propose moving /binary_meta and /marshaller folders to

the

PDS folder.

Motivation: data, directly related to the persistence, is stored outside
the persistence dir, which can lead to various issues and also is not

very

convenient to use. In particular, with k8s, deployment disk that is
attached to a container can not be accessed from other containers or
outside of k8s. In case if support will need to drop persistence except
data, there will be no way to recover due to binary metadata is required

to

process PDS files.

I created an issue (https://issues.apache.org/jira/browse/IGNITE-12994)

and a

pull request(https://github.com/apache/ignite/pull/7792) that fixes the
issue.

In that PR I made the following:


* store binary meta and marshaller data inside db/ folder
* if binary meta of marshaller are found in "legacy" locations --
safely move them to new locations during the node startup


Kind regards,

Semyon Danilov.



Extensions for control.sh

2020-05-13 Thread Denis Mekhanikov

Hi everyone!

Control.sh is a command-line management tool that you can use to manage 
your grid and check its vital parameters like topology version or 
availability of baseline nodes. It has is good set of commands which are 
suitable to work with vanilla Ignite.


There is also a way to extend functionality of Ignite by implementing a 
3rd-party plugin or a module. Any plugin or external module should have 
some kind of API to manage and monitor its activity.
If a command-line management command needs to be added, then the only 
way to achieve that is to provide an additional script, separate from 
control.sh. If you use multiple such plugins, then the set of required 
tools may grow and lead to confusion, which script should be used to 
configure which extension. Instead of doing that it would be convenient 
for users to have ability to use the same script, but with an extended 
set of options. It should make lifes of 3rd-party vendors easier.


Currently many integrations and community-supported modules are being 
moved outside of the core product: 
https://cwiki.apache.org/confluence/display/IGNITE/IEP-36%3A+Modularization
I think it makes sense to provide a possibility to configure extensions 
using control.sh, since their number will grow over time, and some of 
them will require some runtime configuration.


What do you think?

Denis



Re: Moving binary metadata to PDS storage folder

2020-05-13 Thread Maxim Muzafarov
Folks,

I think it's important to discuss the following question regarding this thread:
Should we consider moving the migration procedure from the java
production code to migration scripts?

>From my understanding, keeping all such things in java production
source code has some disadvantages:
1. It executes only once at the migration stage.
2. It affects the complexity of the source code and code maintenance.
3. Node crash cases must be covered during the migration procedure.
4. It affects the production usage e.g. the process doesn't have the
right access to the old directory (migration already completed) and
will fail the node start.


The right behavior from my point should be:
1. Change the default path of binary/marshaller directory to the new one.
2. Provide migration scripts for users.

WDYT?

On Wed, 13 May 2020 at 21:10, Denis Mekhanikov  wrote:
>
> Sounds great!
>
> It happens pretty frequently that users migrate to a new version of
> Ignite and preserve persistence files only without caring too much about
> the work folder. But it turns out, that the work folder actually has
> some important stuff.
> This improvement should help with this issue.
>
> What's about in-memory mode? As far as I know, we write binary metadata
> to disk even when no persistence is configured. Do you plan to address
> it in any way?
>
> Denis
>
> On 12.05.2020 15:56, Sergey Antonov wrote:
> > Hello Semyon,
> >
> > This is a good idea!
> >
> > вт, 12 мая 2020 г. в 15:53, Вячеслав Коптилин :
> >
> >> Hello Semyon,
> >>
> >> This is a good and long-awaited improvement! Thank you for your efforts!
> >>
> >> Thanks,
> >> S.
> >>
> >> вт, 12 мая 2020 г. в 15:11, Данилов Семён :
> >>
> >>> Hello!
> >>>
> >>> I would like to propose moving /binary_meta and /marshaller folders to
> >> the
> >>> PDS folder.
> >>>
> >>> Motivation: data, directly related to the persistence, is stored outside
> >>> the persistence dir, which can lead to various issues and also is not
> >> very
> >>> convenient to use. In particular, with k8s, deployment disk that is
> >>> attached to a container can not be accessed from other containers or
> >>> outside of k8s. In case if support will need to drop persistence except
> >>> data, there will be no way to recover due to binary metadata is required
> >> to
> >>> process PDS files.
> >>>
> >>> I created an issue (https://issues.apache.org/jira/browse/IGNITE-12994)
> >> and a
> >>> pull request(https://github.com/apache/ignite/pull/7792) that fixes the
> >>> issue.
> >>>
> >>> In that PR I made the following:
> >>>
> >>>
> >>> * store binary meta and marshaller data inside db/ folder
> >>> * if binary meta of marshaller are found in "legacy" locations --
> >>> safely move them to new locations during the node startup
> >>>
> >>>
> >>> Kind regards,
> >>>
> >>> Semyon Danilov.
> >>>
> >


Re: Moving binary metadata to PDS storage folder

2020-05-13 Thread Denis Mekhanikov

Sounds great!

It happens pretty frequently that users migrate to a new version of 
Ignite and preserve persistence files only without caring too much about 
the work folder. But it turns out, that the work folder actually has 
some important stuff.

This improvement should help with this issue.

What's about in-memory mode? As far as I know, we write binary metadata 
to disk even when no persistence is configured. Do you plan to address 
it in any way?


Denis

On 12.05.2020 15:56, Sergey Antonov wrote:

Hello Semyon,

This is a good idea!

вт, 12 мая 2020 г. в 15:53, Вячеслав Коптилин :


Hello Semyon,

This is a good and long-awaited improvement! Thank you for your efforts!

Thanks,
S.

вт, 12 мая 2020 г. в 15:11, Данилов Семён :


Hello!

I would like to propose moving /binary_meta and /marshaller folders to

the

PDS folder.

Motivation: data, directly related to the persistence, is stored outside
the persistence dir, which can lead to various issues and also is not

very

convenient to use. In particular, with k8s, deployment disk that is
attached to a container can not be accessed from other containers or
outside of k8s. In case if support will need to drop persistence except
data, there will be no way to recover due to binary metadata is required

to

process PDS files.

I created an issue (https://issues.apache.org/jira/browse/IGNITE-12994)

and a

pull request(https://github.com/apache/ignite/pull/7792) that fixes the
issue.

In that PR I made the following:


* store binary meta and marshaller data inside db/ folder
* if binary meta of marshaller are found in "legacy" locations --
safely move them to new locations during the node startup


Kind regards,

Semyon Danilov.





[jira] [Created] (IGNITE-13009) NoopTimeBag should be used if logging disabled

2020-05-13 Thread Anton Vinogradov (Jira)
Anton Vinogradov created IGNITE-13009:
-

 Summary: NoopTimeBag should be used if logging disabled
 Key: IGNITE-13009
 URL: https://issues.apache.org/jira/browse/IGNITE-13009
 Project: Ignite
  Issue Type: Task
Reporter: Anton Vinogradov
Assignee: Anton Vinogradov


TimeBag uses performs useless operations on finishGlobalStage if logging 
disabled.
Better case is to use no-op realization instead.



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


[jira] [Created] (IGNITE-13008) Java thin client: Imlpement compatibility suite

2020-05-13 Thread Igor Sapego (Jira)
Igor Sapego created IGNITE-13008:


 Summary: Java thin client: Imlpement compatibility suite
 Key: IGNITE-13008
 URL: https://issues.apache.org/jira/browse/IGNITE-13008
 Project: Ignite
  Issue Type: Improvement
  Components: thin client
Reporter: Igor Sapego
 Fix For: 2.9


We need to implement a test suite which is going to cross-test new client with 
all previous versions of server, and new server with all released versions of 
client if possible.



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


Re: [VOTE] Stop Maintenance of Ignite WebConsole

2020-05-13 Thread Вячеслав Коптилин
+1

Thanks,
S.

ср, 13 мая 2020 г. в 08:48, Nikolay Izhikov :

> +1
>
> ср, 13 мая 2020 г., 07:35 Alexey Zinoviev :
>
> > +1
> >
> > ср, 13 мая 2020 г., 5:52 Saikat Maitra :
> >
> > > +1
> > >
> > > Regards
> > > Saikat
> > >
> > > On Tue, 12 May 2020 at 7:03 PM, Denis Magda  wrote:
> > >
> > > > Igniters,
> > > >
> > > > As it was discussed earlier [1], it feels like we abandoned the
> > > development
> > > > and maintenance of Ignite WebConsole. The users keep creating tickets
> > for
> > > > improvements and report issues, while the backlog only keeps growing
> > with
> > > > no reaction on our end.
> > > >
> > > > With this vote, we hope to put WebConsole's development and
> maintenance
> > > on
> > > > hold *officially* by moving it to a separate Ignite repository and
> > > closing
> > > > all WebConsole-related tickets with a proper maintenance
> > discontinuation
> > > > notice. That's a gentle phase-out. If anybody joins the community and
> > > > decides to resurrect the project they will have a chance to do that.
> > > > Otherwise, WebConsole ends up on a graveyard eventually.
> > > >
> > > > Please cast your vote:
> > > > +1 - to discontinue Ignite WebConsole's development and maintenance
> by
> > > > moving to a separate Ignite repository.
> > > > -1 - against this course of action.
> > > >
> > > > I'll let this vote last for 7 days and close it on May 18th.
> > > >
> > > >
> > > > [1]
> > > >
> > > >
> > >
> >
> http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSSION-Ignite-WebConsole-Deprecation-td47259.html
> > > >
> > > > -
> > > > Denis
> > > >
> > >
> >
>


[jira] [Created] (IGNITE-13007) JDBC: Introduce feature flags for JDBC thin

2020-05-13 Thread Konstantin Orlov (Jira)
Konstantin Orlov created IGNITE-13007:
-

 Summary: JDBC: Introduce feature flags for JDBC thin
 Key: IGNITE-13007
 URL: https://issues.apache.org/jira/browse/IGNITE-13007
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Konstantin Orlov
Assignee: Konstantin Orlov


Motivation the same as for https://issues.apache.org/jira/browse/IGNITE-12853

The thin client & JDBC, ODBC have different protocol specific and may require 
implement different features.
Each client (thin cli, thin JDBC, ODBC) should have its own feature flags set.



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


[jira] [Created] (IGNITE-13006) Apache Ignite spring libs upgrade from version 4x to spring 5.2 version or later..

2020-05-13 Thread Devendra Jain (Jira)
Devendra Jain created IGNITE-13006:
--

 Summary: Apache Ignite spring libs upgrade from version 4x to 
spring 5.2 version or later..
 Key: IGNITE-13006
 URL: https://issues.apache.org/jira/browse/IGNITE-13006
 Project: Ignite
  Issue Type: Improvement
  Components: spring
Affects Versions: 2.8
 Environment: We are trying this on linux env.
Reporter: Devendra Jain


With Apache Ignite Release 2.8, Spring libs still using spring older version 
4.3x. Do you have a plan to upgrade to Spring libs with 5.2x version or latter 
by end of this year.

Since we are looking to use Apache ignite but due to some policy issue we can't 
be able to use Ignite 2.8 version which is still using older spring libarary 
version 4.3x.

Please let us know as soon as possible. How you are planning to address this 
issue and what is the time new release including this fix.

 

Thanks,

Devendra Jain

deven...@gmail.com



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


[jira] [Created] (IGNITE-13005) Spring Data 2 - JPA Improvements and working with multiple Ignite instances on same JVM

2020-05-13 Thread Jira
Manuel Núñez created IGNITE-13005:
-

 Summary: Spring Data 2 - JPA Improvements and working with 
multiple Ignite instances on same JVM
 Key: IGNITE-13005
 URL: https://issues.apache.org/jira/browse/IGNITE-13005
 Project: Ignite
  Issue Type: Improvement
  Components: spring
Affects Versions: 2.7.6
Reporter: Manuel Núñez
Assignee: Ilya Kasnacheev


I have it working for Spring Data 2 (2.7.6) module with some interesting 
improvements, but by now I don't have enough time to give it the attention it 
requires, full unit/integration tests..., sorry a lot. ¿maybe any of you have 
the time?. Thanks community!!

Code is 100% compatible with previous versions. 
[https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
 * Supports multiple ignite instances on same JVM (@RepositoryConfig).
 * Supports query tuning parameters in {{@Query}} annotation
 * Supports projections
 * Supports {{Page}} and {{Stream}} responses
 * Supports Sql Fields Query resultset transformation into the domain entity
 * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
{{@Param("myParam")}}
 * Supports advanced parameter binding and SpEL expressions into SQL queries:
 ** *Template variables*:
 *** {{#entityName}} - the simple class name of the domain entity
 ** *Method parameter expressions*: Parameters are exposed for indexed access 
({{[0]}} is the first query method's param) or via the name declared using 
{{@Param}}. The actual SpEL expression binding is triggered by {{?#}}. Example: 
{{?#{[0]}}} or {{?#{#myParamName}}}
 ** *Advanced SpEL expressions*: While advanced parameter binding is a very 
useful feature, the real power of SpEL stems from the fact, that the 
expressions can refer to framework abstractions or other application components 
through SpEL EvaluationContext extension model.
 * Supports SpEL expressions into Text queries ({{TextQuery}}). Examples:

{code:java}
 @Query(value = "SELECT * from #{#entityName} where email = :email")
 User searchUserByEmail(@Param("email") String email);

 @Query(value = "SELECT * from #{#entityName} where country = ?#{[0] and city = 
?#{[1]}")
 List searchUsersByCity(@Param("country") String country, @Param("city") 
String city, Pageable pageable);

@Query(value = "SELECT * from #{#entityName} where email = ?")
 User searchUserByEmail(String email);

@Query(value = "SELECT * from #{#entityName} where uuidCity = ?#{
mySpELFunctionsBean.cityNameToUUID(#city)}")
List searchUsersByCity(@Param("city") String city, Pageable pageable); 

@Query(textQuery = true, value = "email: #{#email}")
User searchUserByEmail(@Param("email") String email);

@Query(textQuery = true, value = "#{#textToSearch}")
List searchUsersByText(@Param("textToSearch") String text, Pageable 
pageable);

@Query(textQuery = true, value = "#{[0]}")
List searchUsersByText(String textToSearch, Pageable pageable);
{code}
 

 



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