[jira] [Created] (IGNITE-12623) ClassCastException on Thin client when get cache value with List and Map

2020-02-05 Thread HAOFENG DENG (Jira)
HAOFENG DENG created IGNITE-12623:
-

 Summary: ClassCastException on Thin client when get cache value 
with List and Map
 Key: IGNITE-12623
 URL: https://issues.apache.org/jira/browse/IGNITE-12623
 Project: Ignite
  Issue Type: Bug
  Components: cache, clients
Affects Versions: 2.7.6
 Environment: Ubuntu

Java 11

Ignite 2.7.6
Reporter: HAOFENG DENG


I use the thin java client

I Create a ArrayList and put the Person object into it.
{code:java}
try (IgniteClient igniteClient = Ignition.startClient(new 
ClientConfiguration().setAddresses("127.0.0.1:10800"))) {
final ClientCache> demo = 
igniteClient.getOrCreateCache("demo");
final List personList = new java.util.ArrayList<>();
personList.add(new Person("apache", 100));
personList.add(new Person("Ignite", 13));
demo.put("test", personList);
}
{code}
And when I take it out of the list
{code:java}
try (IgniteClient igniteClient = Ignition.startClient(new 
ClientConfiguration().setAddresses("127.0.0.1:10800"))) {
final ClientCache> demo = 
igniteClient.getOrCreateCache("demo");
final List personList = demo.get("test");
final Person person = personList.get(0);
}{code}
 

I get the following exceptions:
{code:java}
java.lang.ClassCastException: class 
org.apache.ignite.internal.binary.BinaryObjectImpl cannot be cast to class 
com.peeandgee.Person (org.apache.ignite.internal.binary.BinaryObjectImpl and 
com.peeandgee.Person are in unnamed module of loader 'app')
{code}
 

However, there is no exception if I modify the code as follows:
{code:java}
BinaryObject bo = (BinaryObject) map.get(0);

Person person = bo.deserialize();
{code}
 

 

Same issue in Map [ClassCastException on thinClient in Apache 
Ignite|[https://stackoverflow.com/questions/59299316/classcastexception-on-thinclient-in-apache-ignite]]

 

 



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


Re: [DISCUSSION][IEP-39] Management API to cancel user provided tasks and queries.

2020-02-05 Thread Alexei Scherbakov
Nick

Can we retain only single cancel(long queryId) method in QueryMXBean ?
I think query type can be determined by queryId.

I also think we need similar "cancellation" API without the need to use mx
beans.

вт, 4 февр. 2020 г. в 18:07, Nikolay Izhikov :

> Hello, Igniters.
>
> I propose to create management API to dance user provided tasks and
> queries.
> Below my proposal in the IEP [1] form.
>
> Please, share your feedback.
>
>
> Motivation:
>
> Ignite provides many API to deploy and execute user-provided code on
> the server nodes
> inside the sam JVM as Ignite process runs.
>
> We also has a many APIs that allocate many resources on the server
> nodes:
>
> In case of some buggy code that consumes many system resources(CPU,
> RAM, flood network) or heavy query
> the whole cluster can becomes instable.
> We should provide to the cluster administator the ability to stop any
> user deployed task.
>
> Description:
> JMX beans to cancel listed tasks should be introduced:
> * Compute task
> * Service
> * Continuous query
> * Transactions
> * Queries(SQL, Scan, Text)
>
> In the scope of IEP-35 System view API introduced.
> New API should use the same identifier that is used in corresponding
> System View.
>
> Public API changes:
> * Cancel of Scan(text) queries should work similar to the SQL.
> * Cancel of compute task should invoke
> `ComputeTaskInternalFuture#cancel` for the corresponding task.
> * Cancel of service should be the same as `IgniteServices#cancel`
> * Cancel of transaction should works the same as in
> `TransactionMXBean#getActiveTransaction(kill=true)`.
> * Cancel of a continuous query should work the same as
> `QueryCursor#close` execution.
>
> ```
> QueryMXBean {
> boolean cancelSQL(Long queryId); //Already implemented in
> IGNITE-4436.
>
> boolean cancelScan(Long queryId);
>
> boolean cancelText(Long queryId);
> }
>
> ComputeMXBean {
> boolean cancel(IgniteUuid id);
> }
>
> ServiceMXBean {
> boolean cancel(IgniteUuid id);
> }
>
> TransactionMXBean {
> boolean cancel(IgniteUuid xid);
> }
>
> interface ContinuousQueryMXBean {
> boolean cancel(UUID id);
> }
> ```
>
> [1]
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=145724615
>
>
>
> > 17 янв. 2020 г., в 22:43, Николай Ижиков 
> написал(а):
> >
> > Hello, Andrey.
> >
> > Thanks for positive feedback.
> > Appreciate it.
> >
> >> we can't cancel service or service's method
> >
> > I understand it.
> > Seems, we have several obvious options here:
> >
> > * Try to do it and if fail answer to the user: «I’ve tried and fail.
> Sorry»
> > * Kill hanging thread.
> >
> >> This invocations not register anywhere and can't be tracked and killed.
> >
> > Yes.
> > So we should invent tracking for those invocation to be able to kill it
> :)
> >
> >
> >> 17 янв. 2020 г., в 21:03, Andrey Gura  написал(а):
> >>
> >> It would be grate.
> >>
> >> Only one comment: we can't cancel service or service's method
> >> execution because service grid API doesn't imply any requirement to
> >> service implementation. So if user do something like infinite cycle or
> >> blocking but non-interruptible operation it's impossible to interrupt
> >> it. Also service method invocation itself isn't cluster wide or local
> >> node specific operation. This invocations not register anywhere and
> >> can't be tracked and killed.
> >>
> >> Unfortunately, the same is valid for some jobs in sense of infinite or
> >> non-interruptible operations.
> >>
> >> On Wed, Jan 15, 2020 at 9:30 PM Николай Ижиков 
> wrote:
> >>>
> >>> Hello, Igniters.
> >>>
> >>> As you may know, we put a lot of effort to improve Ignite metric and
> diagnostic API.
> >>> We have created the following API:
> >>>   * Metric manager
> >>>   * System view manager
> >>> As far as I know, we would have tracing capabilities soon.
> >>>
> >>> I think it's time to take the next step.
> >>> We should provide to the administrator the API to cancel(stop, kill)
> arbitrary user started computation.
> >>>
> >>> Right now we have API to do it for:
> >>>   * transactions `TransactionsMXBean#getActiveTransactions`.
> >>>   * SQL queries: `KILL QUERY` sql command and visor task -
> `VisorQueryCancelTask`
> >>>
> >>> Please, note, these features are implemented via different API.
> >>>
> >>> I think we should introduce uniform Cancel API for the following
> computations:
> >>>
> >>>   * service.
> >>>   * specific service method execution.
> >>>   * compute job(compute task).
> >>>   * query(scan, continuous, text).
> >>>
> >>> We should  also rework kill transaction and kill SQL queries API to
> make them similar to each other.
> >>> I have plans to write an IEP for it and implement it.
> >>> What do you think?
> >>>
> >
>
>

-- 

Best regards,
Alexei Scherbakov


Re: Data vanished from cluster after INACTIVE/ACTIVE switch

2020-02-05 Thread Vladimir Steshin
Hello all.

Denis, which changes exactly? In current implementation of ticket [2] flag
[1] is checked before requiring --force flag and showing any warnings. Do
we need to set reuse-memory-on-deactivate to true by default?

[1]
org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE

[2] https://issues.apache.org/jira/browse/IGNITE-12614


вт, 4 февр. 2020 г. в 22:45, Denis Magda :

> That's the best solution for this scenario. Should we readjust the already
> created ticket [1] suggesting to implement the changes of Alex Scherbakov
> instead?
>
> [1] https://issues.apache.org/jira/browse/IGNITE-12614
>
> -
> Denis
>
>
> On Mon, Feb 3, 2020 at 11:54 PM Alexei Scherbakov <
> alexey.scherbak...@gmail.com> wrote:
>
> > Folks,
> >
> > For a long time we have a flag [1]
> >
> > It does almost what we want here.
> >
> > I suggest to make this behavior default and rework it to keep data in
> > memory as well (we already have special "recovery" mode for caches).
> >
> > [1]
> >
> org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
> >
> >
> >
> > пн, 3 февр. 2020 г. в 18:47, Alexey Goncharuk <
> alexey.goncha...@gmail.com
> > >:
> >
> > > I do not mind making this change if we explicitly and clearly define
> what
> > > 'new inactive state' means. What should happen if a partition is lost
> in
> > > inactive state? What if such node joins back the cluster after? Etc.
> > >
> > > пт, 31 янв. 2020 г. в 20:57, Denis Magda :
> > >
> > > > Back up Ivan's opinion here. Initially, the activation/deactivation
> was
> > > > created for the baseline topology designed for cases with native
> > > > persistence. My thinking was that the mechanism itended to prevent
> data
> > > > inconsistencies while nodes with data on the disk will be in the
> > process
> > > of
> > > > joining the cluster.
> > > >
> > > > Artem, could you please update the docs bringing this to the
> attention
> > of
> > > > the user community?
> > > > https://issues.apache.org/jira/browse/IGNITE-12615
> > > >
> > > > AG, what if we don't purge data from memory at least for the caches
> not
> > > > backed by the native persistence? Is this a big deal? We can
> certainly
> > > put
> > > > this off by my guts feel we'll return to this question sooner or
> later.
> > > >
> > > > -
> > > > Denis
> > > >
> > > >
> > > > On Fri, Jan 31, 2020 at 2:17 AM Ivan Pavlukhin 
> > > > wrote:
> > > >
> > > > > For me it looks like some coincidence effect. I understand that we
> > get
> > > > > such behavior because deactivation works the same way as for
> > > > > persistent caches. Was cluster activation/deactivation designed and
> > > > > described for in-memory caches? Current behavior sounds for me a as
> > > > > big risk. I expect a lot of upset users unexpectedly purged all
> their
> > > > > data.
> > > > >
> > > > > пт, 31 янв. 2020 г. в 00:00, Alexey Goncharuk <
> > > > alexey.goncha...@gmail.com
> > > > > >:
> > > > > >
> > > > > > Because originally the sole purpose of deactivation was resource
> > > > > > deallocation.
> > > > > >
> > > > > > чт, 30 янв. 2020 г. в 22:13, Denis Magda :
> > > > > >
> > > > > > > Such a revelation for me that data is purged from RAM if
> someone
> > > > > > > deactivates the cluster. Alex, do you remember why we decided
> to
> > > > > implement
> > > > > > > it this way initially?
> > > > > > >
> > > > > > > -
> > > > > > > Denis
> > > > > > >
> > > > > > >
> > > > > > > On Thu, Jan 30, 2020 at 2:09 AM Alexey Goncharuk <
> > > > > > > alexey.goncha...@gmail.com>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > I agree on CLI and JMX because those interfaces can be used
> by
> > a
> > > > > system
> > > > > > > > administrator and can be invoked by mistake.
> > > > > > > >
> > > > > > > > As for the Java API, personally, I find it strange to add
> > 'force'
> > > > or
> > > > > > > > 'confirm' flags to it because it is very unlikely that such
> an
> > > > > invocation
> > > > > > > > is done by mistake. Such mistakes are caught during the
> testing
> > > > > phase and
> > > > > > > > developers will end up hard-coding 'true' as a flag anyways.
> > > > > > > >
> > > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Best regards,
> > > > > Ivan Pavlukhin
> > > > >
> > > >
> > >
> >
> >
> > --
> >
> > Best regards,
> > Alexei Scherbakov
> >
>


Re: [DISCUSSION][IEP-39] Management API to cancel user provided tasks and queries.

2020-02-05 Thread Alexey Goncharuk
Folks,

Shouldn't we unify identifiers for all ongoing tasks in Ignite and move
cancel to a single method in a single bean?

Right now different types of IDs (long, UUID, IgniteUuid) look confusing
and messy. I understand that such API is enforced by the IDs implementation
in the corresponding Ignite subsystems. However, given that lately we
developed a unified approach to metrics and system views with Nikolay's
help, shouldn't we take one more step forward and unify this part as well?


Re: Internal classes are exposed in public API

2020-02-05 Thread Alexey Goncharuk
Denis,

I just realized that this vote would not be a regular Apache vote we used
to run. Usually we vote for a change to be accepted or rejected. Here, on
the other hand, we need to choose between two alternatives, and I am not
sure yet how this should be formally handled.

Dmitriy, perhaps, you can shed some light on this? Meanwhile, I'll brush up
on the voting process as well.


Re: Internal classes are exposed in public API

2020-02-05 Thread Alexey Goncharuk
Sorry for the rush, I think I got it - it's right in the voting process
[1]. This would be a vote on a procedural issue of how to handle code
deprecation.

I'll start the discussion soon, let's agree on the alternatives and then
start the vote.

[1] https://www.apache.org/foundation/voting.html


Re: Forbid mixed cache groups with both atomic and transactional caches

2020-02-05 Thread Ivan Pavlukhin
Folks,

A bit of offtop. Do we have some recommendations in the community how
long should we wait until treating something as "a Community
conclusion"? It worries me a little bit that I see a discussion for a
first time and there is already a conclusion. And the discussion was
started lesser than 24 hours ago. I suppose we should allow everyone
interested to share an opinion (here I agree with the proposal) and it
usually requires some time in open-source communities.

ср, 5 февр. 2020 г. в 10:58, Ivan Rakov :
>
> Folks,
>
> Thanks for your feedback.
> I've created a JIRA issue on this change:
> https://issues.apache.org/jira/browse/IGNITE-12622
>
> On Tue, Feb 4, 2020 at 10:43 PM Denis Magda  wrote:
>
> > +1 from my end. It doesn't sound like a big deal if Ignite users need to
> > define separate groups for atomic and transactional caches.
> >
> > -
> > Denis
> >
> >
> > On Tue, Feb 4, 2020 at 3:28 AM Ivan Rakov  wrote:
> >
> > > Igniters,
> > >
> > > Apparently it's possible in Ignite to configure a cache group with both
> > > ATOMIC and TRANSACTIONAL caches.
> > > Proof: IgniteCacheGroupsTest#testContinuousQueriesMultipleGroups* tests.
> > > In my opinion, it would be better to remove such possibility from the
> > > product. There are several reasons:
> > >
> > > 1) The original idea of grouping caches was optimizing storage overhead
> > and
> > > PME time by joining data of similar caches into the same partitions.
> > ATOMIC
> > > and TRANSACTIONAL caches provide different guarantees and are designed
> > for
> > > different use cases, thus they can hardly be called "similar".
> > >
> > > 2) Diving deeper: synchronization protocols and possible reasons for
> > > primary-backup divergences are conceptually different for ATOMIC and
> > > TRANSACTIONAL cases. In TRANSACTIONAL case, transactions recovery
> > protocol
> > > allows to recover consistency if any participating node will fail, but
> > for
> > > ATOMIC caches there's possible scenario with failure of primary node
> > where
> > > neither of backups will contain the most recent state of the data.
> > Example:
> > > one backup have received updates 1, 3, 5 while another have received 2, 4
> > > (which is possible due to message reordering), and even tracking counters
> > > [1] won't restore the consistency. The problem is that we can't
> > distinguish
> > > what kind of conflict we have faced in case update counters have diverged
> > > in a mixed group.
> > >
> > > 3) Mixed groups are poorly tested. I can't find any tests except a couple
> > > of smoke tests in IgniteCacheGroupsTest. We can't be sure that different
> > > synchronization protocols will work correctly for such configurations,
> > > especially under load and with a variety of dependent configuration
> > > parameters.
> > >
> > > 4) I have never heard of any feedback on mixed groups. I have asked
> > > different people on this and no one recalled any attempts to configure
> > such
> > > groups. I believe that in fact no one has ever tried to do it.
> > >
> > > Please let me know if you are aware of any cases where mixed groups are
> > > used or reasons to keep them. Otherwise I'll create a ticket to prohibit
> > > mixed configurations.
> > >
> > > [1]: https://issues.apache.org/jira/browse/IGNITE-11797
> > >
> > > --
> > > Best Regards,
> > > Ivan Rakov
> > >
> >



-- 
Best regards,
Ivan Pavlukhin


Re: Contribution

2020-02-05 Thread Лев Киселев
Andrey,
> > Andrey, then I suggest firstly check if old annotations are present,
and if
> > not - are there any new annotations. Do you agree?

> I'm afraid I don't understand. Old annotations are present and new
> annotations don't exist yet :)


I talked about implementation of methods *getDescription* /
*getParameterName* in *IgniteStandardMXBean *class. To support backward
compatibility I need to check if there are old annotations above method, or
new one before parameters. So, my question was the order of searching
annotations (first - old, after - new).

вт, 4 февр. 2020 г. в 21:10, Andrey Gura :

> > Andrey, then I suggest firstly check if old annotations are present, and
> if
> > not - are there any new annotations. Do you agree?
>
> I'm afraid I don't understand. Old annotations are present and new
> annotations don't exist yet :)
>
> > And should I also replace usage of old annotations or leave it as it is?
>
> It would be great to replace old annotations by new ones.
>
> On Tue, Feb 4, 2020 at 6:09 PM Лев Киселев 
> wrote:
> >
> > Andrey, then I suggest firstly check if old annotations are present, and
> if
> > not - are there any new annotations. Do you agree?
> > And should I also replace usage of old annotations or leave it as it is?
> >
> > вт, 4 февр. 2020 г. в 16:57, Andrey Gura :
> >
> > > Lev,
> > >
> > > > I'm confused about your first comment. Does it mean, that the only
> thing
> > > I
> > > can do is to create new annotation?
> > >
> > > Yes, it does. But in this case you can mark old annotations as
> > > deprecated because new annotations are real alternative.
> > >
> > > > So, I can't change implementation of *getDescription /
> getParameterName
> > > > (MBeanOperationInfo op, MBeanParameterInfo param, int seq)* methods
> from*
> > > > IgniteStandardMXBean* class,
> > > > and replace current annotations with new one.
> > >
> > > You have to support both old and new annotations due to a backward
> > > compatibility.
> > >
> > > On Tue, Feb 4, 2020 at 3:14 PM Лев Киселев  >
> > > wrote:
> > > >
> > > > Thanks for answer, Andrey.
> > > > I'm confused about your first comment. Does it mean, that the only
> thing
> > > I
> > > > can do is to create new annotation?
> > > > Because, as you said, I must leave unchanged all related to old
> > > annotations
> > > > functionality.
> > > > So, I can't change implementation of *getDescription /
> getParameterName
> > > > (MBeanOperationInfo op, MBeanParameterInfo param, int seq)* methods
> from*
> > > > IgniteStandardMXBean* class,
> > > > and replace current annotations with new one.
> > > >
> > > > вт, 4 февр. 2020 г. в 14:28, Andrey Gura :
> > > >
> > > > > Hi, Lev!
> > > > >
> > > > > I think you understand task correctly.
> > > > >
> > > > > A couple of comments:
> > > > >
> > > > > - Existing annotations and related functionality must not be
> deleted
> > > > > because it is part of public API and we committed to have stable
> API
> > > > > between major releases.
> > > > > - I would suggest introduce @MXBeanParameter annotation instead of
> > > > > @MXBeanParameterInformation. Just shorten name.
> > > > >
> > > > > On Thu, Jan 30, 2020 at 8:53 PM Denis Magda 
> wrote:
> > > > > >
> > > > > > Nikolay, Andrey,
> > > > > >
> > > > > > Would you be the best committers to help out here? You are
> already
> > > > > deeply involved in metrics development and can quickly suggest Lev
> how
> > > to
> > > > > proceed with this task.
> > > > > >
> > > > > > -
> > > > > > Denis
> > > > > >
> > > > > >
> > > > > > On Thu, Jan 30, 2020 at 2:46 AM Лев Киселев <
> > > lev.kiselev.1...@gmail.com>
> > > > > wrote:
> > > > > >>
> > > > > >> Hello everyone, I have question about following task:
> > > > > >> [https://issues.apache.org/jira/browse/IGNITE-10698]
> > > > > >> Solution proposed in task description is seem to be logical.
> > > > > >> So, I need to every replace @MXBeanParametersNames and
> > > > > >> @MXBeanParametersDescriptions (everywhere, for uniformity) with
> > > > > something
> > > > > >> like:
> > > > > >> void methodName(@MXBeanParameterInformation(name = "name",
> > > description =
> > > > > >> "description") firstParameter, ...) {}.
> > > > > >> And, of course, need to change processing logic at
> > > > > >> getParameterName/getDescription methods from
> IgniteStandardMXBean.
> > > > > >> Do I understand correctly what needs to be done?
> > > > >
> > >
>


Re: Forbid mixed cache groups with both atomic and transactional caches

2020-02-05 Thread Nikolay Izhikov
Ivan.

It seems we don’t have a format definition for a «community decision»
We, for sure, should fill this gap.

Me and Andrey Gura, have certain proposals for our development process based on 
metrics API discussion.

We will share those proposals after 2.8 release and some additional discussion.


> 5 февр. 2020 г., в 13:11, Ivan Pavlukhin  написал(а):
> 
> Folks,
> 
> A bit of offtop. Do we have some recommendations in the community how
> long should we wait until treating something as "a Community
> conclusion"? It worries me a little bit that I see a discussion for a
> first time and there is already a conclusion. And the discussion was
> started lesser than 24 hours ago. I suppose we should allow everyone
> interested to share an opinion (here I agree with the proposal) and it
> usually requires some time in open-source communities.
> 
> ср, 5 февр. 2020 г. в 10:58, Ivan Rakov :
>> 
>> Folks,
>> 
>> Thanks for your feedback.
>> I've created a JIRA issue on this change:
>> https://issues.apache.org/jira/browse/IGNITE-12622
>> 
>> On Tue, Feb 4, 2020 at 10:43 PM Denis Magda  wrote:
>> 
>>> +1 from my end. It doesn't sound like a big deal if Ignite users need to
>>> define separate groups for atomic and transactional caches.
>>> 
>>> -
>>> Denis
>>> 
>>> 
>>> On Tue, Feb 4, 2020 at 3:28 AM Ivan Rakov  wrote:
>>> 
 Igniters,
 
 Apparently it's possible in Ignite to configure a cache group with both
 ATOMIC and TRANSACTIONAL caches.
 Proof: IgniteCacheGroupsTest#testContinuousQueriesMultipleGroups* tests.
 In my opinion, it would be better to remove such possibility from the
 product. There are several reasons:
 
 1) The original idea of grouping caches was optimizing storage overhead
>>> and
 PME time by joining data of similar caches into the same partitions.
>>> ATOMIC
 and TRANSACTIONAL caches provide different guarantees and are designed
>>> for
 different use cases, thus they can hardly be called "similar".
 
 2) Diving deeper: synchronization protocols and possible reasons for
 primary-backup divergences are conceptually different for ATOMIC and
 TRANSACTIONAL cases. In TRANSACTIONAL case, transactions recovery
>>> protocol
 allows to recover consistency if any participating node will fail, but
>>> for
 ATOMIC caches there's possible scenario with failure of primary node
>>> where
 neither of backups will contain the most recent state of the data.
>>> Example:
 one backup have received updates 1, 3, 5 while another have received 2, 4
 (which is possible due to message reordering), and even tracking counters
 [1] won't restore the consistency. The problem is that we can't
>>> distinguish
 what kind of conflict we have faced in case update counters have diverged
 in a mixed group.
 
 3) Mixed groups are poorly tested. I can't find any tests except a couple
 of smoke tests in IgniteCacheGroupsTest. We can't be sure that different
 synchronization protocols will work correctly for such configurations,
 especially under load and with a variety of dependent configuration
 parameters.
 
 4) I have never heard of any feedback on mixed groups. I have asked
 different people on this and no one recalled any attempts to configure
>>> such
 groups. I believe that in fact no one has ever tried to do it.
 
 Please let me know if you are aware of any cases where mixed groups are
 used or reasons to keep them. Otherwise I'll create a ticket to prohibit
 mixed configurations.
 
 [1]: https://issues.apache.org/jira/browse/IGNITE-11797
 
 --
 Best Regards,
 Ivan Rakov
 
>>> 
> 
> 
> 
> -- 
> Best regards,
> Ivan Pavlukhin



Re: Contribution

2020-02-05 Thread Andrey Gura
Different approaches are possible. For me it would be logical if
MXBeanParameter override MXBeanParametersNames and
MXBeanParametersDescriptions.
In such case the order of annotation processing is fixed: old on
method then new on method's parameters if exists.

On Wed, Feb 5, 2020 at 1:11 PM Лев Киселев  wrote:
>
> Andrey,
> > > Andrey, then I suggest firstly check if old annotations are present,
> and if
> > > not - are there any new annotations. Do you agree?
>
> > I'm afraid I don't understand. Old annotations are present and new
> > annotations don't exist yet :)
>
>
> I talked about implementation of methods *getDescription* /
> *getParameterName* in *IgniteStandardMXBean *class. To support backward
> compatibility I need to check if there are old annotations above method, or
> new one before parameters. So, my question was the order of searching
> annotations (first - old, after - new).
>
> вт, 4 февр. 2020 г. в 21:10, Andrey Gura :
>
> > > Andrey, then I suggest firstly check if old annotations are present, and
> > if
> > > not - are there any new annotations. Do you agree?
> >
> > I'm afraid I don't understand. Old annotations are present and new
> > annotations don't exist yet :)
> >
> > > And should I also replace usage of old annotations or leave it as it is?
> >
> > It would be great to replace old annotations by new ones.
> >
> > On Tue, Feb 4, 2020 at 6:09 PM Лев Киселев 
> > wrote:
> > >
> > > Andrey, then I suggest firstly check if old annotations are present, and
> > if
> > > not - are there any new annotations. Do you agree?
> > > And should I also replace usage of old annotations or leave it as it is?
> > >
> > > вт, 4 февр. 2020 г. в 16:57, Andrey Gura :
> > >
> > > > Lev,
> > > >
> > > > > I'm confused about your first comment. Does it mean, that the only
> > thing
> > > > I
> > > > can do is to create new annotation?
> > > >
> > > > Yes, it does. But in this case you can mark old annotations as
> > > > deprecated because new annotations are real alternative.
> > > >
> > > > > So, I can't change implementation of *getDescription /
> > getParameterName
> > > > > (MBeanOperationInfo op, MBeanParameterInfo param, int seq)* methods
> > from*
> > > > > IgniteStandardMXBean* class,
> > > > > and replace current annotations with new one.
> > > >
> > > > You have to support both old and new annotations due to a backward
> > > > compatibility.
> > > >
> > > > On Tue, Feb 4, 2020 at 3:14 PM Лев Киселев  > >
> > > > wrote:
> > > > >
> > > > > Thanks for answer, Andrey.
> > > > > I'm confused about your first comment. Does it mean, that the only
> > thing
> > > > I
> > > > > can do is to create new annotation?
> > > > > Because, as you said, I must leave unchanged all related to old
> > > > annotations
> > > > > functionality.
> > > > > So, I can't change implementation of *getDescription /
> > getParameterName
> > > > > (MBeanOperationInfo op, MBeanParameterInfo param, int seq)* methods
> > from*
> > > > > IgniteStandardMXBean* class,
> > > > > and replace current annotations with new one.
> > > > >
> > > > > вт, 4 февр. 2020 г. в 14:28, Andrey Gura :
> > > > >
> > > > > > Hi, Lev!
> > > > > >
> > > > > > I think you understand task correctly.
> > > > > >
> > > > > > A couple of comments:
> > > > > >
> > > > > > - Existing annotations and related functionality must not be
> > deleted
> > > > > > because it is part of public API and we committed to have stable
> > API
> > > > > > between major releases.
> > > > > > - I would suggest introduce @MXBeanParameter annotation instead of
> > > > > > @MXBeanParameterInformation. Just shorten name.
> > > > > >
> > > > > > On Thu, Jan 30, 2020 at 8:53 PM Denis Magda 
> > wrote:
> > > > > > >
> > > > > > > Nikolay, Andrey,
> > > > > > >
> > > > > > > Would you be the best committers to help out here? You are
> > already
> > > > > > deeply involved in metrics development and can quickly suggest Lev
> > how
> > > > to
> > > > > > proceed with this task.
> > > > > > >
> > > > > > > -
> > > > > > > Denis
> > > > > > >
> > > > > > >
> > > > > > > On Thu, Jan 30, 2020 at 2:46 AM Лев Киселев <
> > > > lev.kiselev.1...@gmail.com>
> > > > > > wrote:
> > > > > > >>
> > > > > > >> Hello everyone, I have question about following task:
> > > > > > >> [https://issues.apache.org/jira/browse/IGNITE-10698]
> > > > > > >> Solution proposed in task description is seem to be logical.
> > > > > > >> So, I need to every replace @MXBeanParametersNames and
> > > > > > >> @MXBeanParametersDescriptions (everywhere, for uniformity) with
> > > > > > something
> > > > > > >> like:
> > > > > > >> void methodName(@MXBeanParameterInformation(name = "name",
> > > > description =
> > > > > > >> "description") firstParameter, ...) {}.
> > > > > > >> And, of course, need to change processing logic at
> > > > > > >> getParameterName/getDescription methods from
> > IgniteStandardMXBean.
> > > > > > >> Do I understand correctly what needs to be done?
> > > > > >
> > > >
> >


Re: Forbid mixed cache groups with both atomic and transactional caches

2020-02-05 Thread Ivan Rakov
Ivan,

Thanks for pointing this out. Less than one day is indeed too early to
treat this discussion thread as a "community conclusion". Still, the
consensus among the current participants made me feel that a conclusion
will be reached.
We'll surely get back to the discussion if opposite opinions will arise.

On Wed, Feb 5, 2020 at 1:11 PM Ivan Pavlukhin  wrote:

> Folks,
>
> A bit of offtop. Do we have some recommendations in the community how
> long should we wait until treating something as "a Community
> conclusion"? It worries me a little bit that I see a discussion for a
> first time and there is already a conclusion. And the discussion was
> started lesser than 24 hours ago. I suppose we should allow everyone
> interested to share an opinion (here I agree with the proposal) and it
> usually requires some time in open-source communities.
>
> ср, 5 февр. 2020 г. в 10:58, Ivan Rakov :
> >
> > Folks,
> >
> > Thanks for your feedback.
> > I've created a JIRA issue on this change:
> > https://issues.apache.org/jira/browse/IGNITE-12622
> >
> > On Tue, Feb 4, 2020 at 10:43 PM Denis Magda  wrote:
> >
> > > +1 from my end. It doesn't sound like a big deal if Ignite users need
> to
> > > define separate groups for atomic and transactional caches.
> > >
> > > -
> > > Denis
> > >
> > >
> > > On Tue, Feb 4, 2020 at 3:28 AM Ivan Rakov 
> wrote:
> > >
> > > > Igniters,
> > > >
> > > > Apparently it's possible in Ignite to configure a cache group with
> both
> > > > ATOMIC and TRANSACTIONAL caches.
> > > > Proof: IgniteCacheGroupsTest#testContinuousQueriesMultipleGroups*
> tests.
> > > > In my opinion, it would be better to remove such possibility from the
> > > > product. There are several reasons:
> > > >
> > > > 1) The original idea of grouping caches was optimizing storage
> overhead
> > > and
> > > > PME time by joining data of similar caches into the same partitions.
> > > ATOMIC
> > > > and TRANSACTIONAL caches provide different guarantees and are
> designed
> > > for
> > > > different use cases, thus they can hardly be called "similar".
> > > >
> > > > 2) Diving deeper: synchronization protocols and possible reasons for
> > > > primary-backup divergences are conceptually different for ATOMIC and
> > > > TRANSACTIONAL cases. In TRANSACTIONAL case, transactions recovery
> > > protocol
> > > > allows to recover consistency if any participating node will fail,
> but
> > > for
> > > > ATOMIC caches there's possible scenario with failure of primary node
> > > where
> > > > neither of backups will contain the most recent state of the data.
> > > Example:
> > > > one backup have received updates 1, 3, 5 while another have received
> 2, 4
> > > > (which is possible due to message reordering), and even tracking
> counters
> > > > [1] won't restore the consistency. The problem is that we can't
> > > distinguish
> > > > what kind of conflict we have faced in case update counters have
> diverged
> > > > in a mixed group.
> > > >
> > > > 3) Mixed groups are poorly tested. I can't find any tests except a
> couple
> > > > of smoke tests in IgniteCacheGroupsTest. We can't be sure that
> different
> > > > synchronization protocols will work correctly for such
> configurations,
> > > > especially under load and with a variety of dependent configuration
> > > > parameters.
> > > >
> > > > 4) I have never heard of any feedback on mixed groups. I have asked
> > > > different people on this and no one recalled any attempts to
> configure
> > > such
> > > > groups. I believe that in fact no one has ever tried to do it.
> > > >
> > > > Please let me know if you are aware of any cases where mixed groups
> are
> > > > used or reasons to keep them. Otherwise I'll create a ticket to
> prohibit
> > > > mixed configurations.
> > > >
> > > > [1]: https://issues.apache.org/jira/browse/IGNITE-11797
> > > >
> > > > --
> > > > Best Regards,
> > > > Ivan Rakov
> > > >
> > >
>
>
>
> --
> Best regards,
> Ivan Pavlukhin
>


[jira] [Created] (IGNITE-12624) Java thin client: Wrong typeId generation for system types

2020-02-05 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-12624:
--

 Summary: Java thin client: Wrong typeId generation for system types
 Key: IGNITE-12624
 URL: https://issues.apache.org/jira/browse/IGNITE-12624
 Project: Ignite
  Issue Type: Bug
  Components: binary, thin client
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Thin client generates wrong {{typeId}} for system types. This is caused by 
{{ClientMarshallerContext}} implementation, which always returns {{false}} for 
{{isSystemType}} method. These leads to {{typeId}} duplication for the same 
class and assertions when trying to get object by thick client. Reproducer:
{code:java}
thinClient.cache(DEFAULT_CACHE_NAME).put(1, CacheAtomicityMode.ATOMIC);
thickClient.cache(DEFAULT_CACHE_NAME).get(1);
{code}
Assertion:

 
{noformat}
java.lang.AssertionError: Duplicate typeId [typeId=1984564222, cls=class 
org.apache.ignite.cache.CacheAtomicityMode, desc=BinaryClassDescriptor 
[cls=class org.apache.ignite.cache.CacheAtomicityMode, serializer=null, 
initialSerializer=null, mapper=BinaryInternalMapper 
[nameMapper=BinaryBaseNameMapper [isSimpleName=true], 
idMapper=BinaryBaseIdMapper [isLowerCase=true], checkOnZeroId=false], 
mode=OPTIMIZED, userType=false, typeId=329149470, 
typeName=org.apache.ignite.cache.CacheAtomicityMode, affKeyFieldName=null, 
ctor=null, writeReplacer=null, readResolveMtd=null, stableSchema=null, 
schemaReg=org.apache.ignite.internal.binary.BinarySchemaRegistry@167f45f8, 
registered=true, useOptMarshaller=true, excluded=false, 
stableSchemaPublished=false]]
  at 
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:775)
  at 
org.apache.ignite.internal.binary.BinaryUtils.resolveClass(BinaryUtils.java:1669)
  at 
org.apache.ignite.internal.binary.BinaryEnumObjectImpl.deserialize(BinaryEnumObjectImpl.java:178)
  at 
org.apache.ignite.internal.binary.BinaryEnumObjectImpl.value(BinaryEnumObjectImpl.java:284)
  at 
org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinary(CacheObjectUtils.java:176)
  at 
org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinaryIfNeeded(CacheObjectUtils.java:67)
  at 
org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:136)
  at 
org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1814)
{noformat}
If we perform "put" operation with value of the same type from thick client 
before "get" operation, there is no assertion anymore, but {{typeId}} is still 
duplicated. And there is another issue: different marshallers can be used to 
marshal the same class for thin and thick clients, wrong class descriptor is 
returned for class name and there is assertion again. Reproducer:
{code:java}
thickClient.cache(DEFAULT_CACHE_NAME).put(3, Collections.emptyList());
thinClient.cache(DEFAULT_CACHE_NAME).put(2, Collections.emptyList());
thickClient.cache(DEFAULT_CACHE_NAME).get(2);
{code}
Assertion:
{noformat}
java.lang.AssertionError: OptimizedMarshaller should not be used here: 
java.util.Collections$EmptyList
  at 
org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:865)
  at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764)
  at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
  at 
org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:792)
  at 
org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:142)
  at 
org.apache.ignite.internal.processors.cache.CacheObjectUtils.unwrapBinary(CacheObjectUtils.java:176)

{noformat}



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


Re: [DISCUSSION][IEP-39] Management API to cancel user provided tasks and queries.

2020-02-05 Thread Nikolay Izhikov
Igniters, thanks for the feedback.

> Can we retain only single cancel(long queryId) method in QueryMXBean ?
> I think query type can be determined by queryId.

It seems the answer is no we can’t do it for now.
Different types of queries are handled by different managers and have different 
sets of identifiers.

Please, take a look, into `ScanQueryView` [1], `RunningQueryManager` [2]

> Right now different types of IDs (long, UUID, IgniteUuid) look confusing and 
> messy.

Yes.
Let’s, fix it.

> Shouldn't we unify identifiers for all ongoing tasks in Ignite and move 
> cancel to a single method in a single bean?

I think we should: 

1. create separate beans for each API - TransactionMXBean, ComputeMXBean, etc. 
  
* The single method will be very error-prone:
Consider copy-pasting wrong id from log to its 
parameters(killing not the buggy compute task, but *VERY* important 
transaction. 
How users even know about this type of error with the single 
method approach? 

* When the user wants to kill some task(from a script or by hand) he 
knows the type of task for sure.

2. Implement IEP-39 with the current identifiers.

3. Improve our API with unified identifier types.
Bringing our API to the unified identifiers types approach is a very 
hard task to do and it will take a long time to implement.
We shouldn’t leave our users without the proposed API until this moment.

[1] 
https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/ScanQueryView.java
[2] 
https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/query/RunningQueryManager.java

> 5 февр. 2020 г., в 12:07, Alexey Goncharuk  
> написал(а):
> 
> Folks,
> 
> Shouldn't we unify identifiers for all ongoing tasks in Ignite and move
> cancel to a single method in a single bean?
> 
> Right now different types of IDs (long, UUID, IgniteUuid) look confusing
> and messy. I understand that such API is enforced by the IDs implementation
> in the corresponding Ignite subsystems. However, given that lately we
> developed a unified approach to metrics and system views with Nikolay's
> help, shouldn't we take one more step forward and unify this part as well?



Re: [DISCUSSION][IEP-39] Management API to cancel user provided tasks and queries.

2020-02-05 Thread Alexey Goncharuk
Nikolay,


> Consider copy-pasting wrong id from log to its
> parameters(killing not the buggy compute task, but *VERY* important
> transaction.
> How users even know about this type of error with the
> single method approach?
>
> I thought that the identifiers would never intersect (meaning that a
transaction and a task would never share the same ID)

I agree that change ID types for all objects would be a hard task, so
probably it's worth discussing a single cancel entry on phase 3.


Re: [DISCUSSION][IEP-39] Management API to cancel user provided tasks and queries.

2020-02-05 Thread Nikolay Izhikov
Alexey.

I’m talking the following scenario:

1. Consider we have unified bean to kill tasks: 

CancelMXBean {
public void cancel(long id);
}

2. And we have the following log:

```
Transaction with ID=42 started.
Compute task with ID=43 started.
```

3. We want to kill compute task and by mistake executing:

cancelMxBean.cancel(42); //This will kill transaction not compute task.

The user doesn’t have a chance to know, what type of object he is killing.
I think we should prevent this type of error by the API design.


> 5 февр. 2020 г., в 14:43, Alexey Goncharuk  
> написал(а):
> 
> Nikolay,
> 
> 
>>Consider copy-pasting wrong id from log to its
>> parameters(killing not the buggy compute task, but *VERY* important
>> transaction.
>>How users even know about this type of error with the
>> single method approach?
>> 
>> I thought that the identifiers would never intersect (meaning that a
> transaction and a task would never share the same ID)
> 
> I agree that change ID types for all objects would be a hard task, so
> probably it's worth discussing a single cancel entry on phase 3.



Question: different setting for nodes.

2020-02-05 Thread Vladimir Steshin
Hi, folks.



I recently found that one node might be started with flag
reuse-memory-on-deactivate [1] set off while another node might be
configured with the flag enabled. This ability hinders prediction of
cluster behavior on deactivation/activation. One node keeps data in memory,
other doesn’t.

Should we check this flag is set equally on all nodes? Is this an issue? We
might prevent node start if it has different setting.



[1] IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE


[jira] [Created] (IGNITE-12625) Thin client: Marshaling/unmarshaling of objects performed twice

2020-02-05 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-12625:
--

 Summary: Thin client: Marshaling/unmarshaling of objects performed 
twice
 Key: IGNITE-12625
 URL: https://issues.apache.org/jira/browse/IGNITE-12625
 Project: Ignite
  Issue Type: Bug
  Components: binary, thin client
Reporter: Aleksey Plekhanov


For each thin client cache operation marshaling/unmarshaling of objects 
performed twice. For example, cache "put" operation marshal object on the 
client-side, then unmarshal object (with keep binaries) on the server-side and 
marshal it again before putting it to the cache. It causes some undesirable 
effects. For example, references to the same binary object in a collection ( 
{{new ArrayList(Arrays.asList(person, person))}} ) deserialized as different 
objects. Also, with binary object full byte array of this object is marshaled, 
but object takes only some part of this array, it causes size overhead for 
storing these objects.

To avoid double marshalling we could pass byte array from request content to 
cache directly (for example using {{CacheObject}}), but we don't have object 
size in thin client protocol, so in any case, we need to traverse the objects. 
Also, we don't have the ability to get {{CacheObject}} from the cache now, so 
such an approach will only work in one way, for "put" operations, but not for 
"get" operations.



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


Re: Question: different setting for nodes.

2020-02-05 Thread Nikolay Izhikov
Vladimir.

This looks like a bug to me.

Can you, please, prepare the simple reproducer for this issue and it’s 
consequences?


> 5 февр. 2020 г., в 17:08, Vladimir Steshin  написал(а):
> 
> Hi, folks.
> 
> 
> 
> I recently found that one node might be started with flag
> reuse-memory-on-deactivate [1] set off while another node might be
> configured with the flag enabled. This ability hinders prediction of
> cluster behavior on deactivation/activation. One node keeps data in memory,
> other doesn’t.
> 
> Should we check this flag is set equally on all nodes? Is this an issue? We
> might prevent node start if it has different setting.
> 
> 
> 
> [1] IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE



Re: Orphaned, duplicate, and main-class tests!

2020-02-05 Thread Ilya Kasnacheev
Hello!

Just to resurrect this old thread:

I have uncommented another batch of tests, would appreciate a review of PR:
https://issues.apache.org/jira/browse/IGNITE-9216

Regards,
-- 
Ilya Kasnacheev


ср, 31 окт. 2018 г. в 15:22, Ilya Kasnacheev :

> Hello!
>
> So we have uncommented 4 batches out of 10! 6 to go. Some broken
> functionality were exposed.
>
> There is still work to do, so do not hesitate to assign a subtask to
> yourself.
>
> Regards,
> --
> Ilya Kasnacheev
>
>
> ср, 15 авг. 2018 г. в 19:42, Ilya Kasnacheev :
>
>> Hello!
>>
>> So we have enabled a first batch of tests:
>> https://github.com/apache/ignite/pull/4504
>>
>> How it was done: I have uncommented classes. Some of these were absent in
>> code base, so I have checked if we didn't lose anything important - they
>> were testing CLOCK mode which isn't with us for some time, so I removed
>> their entries.
>> Then I have ran them, some were broken. Most of those were testing
>> on-heap caching with copy=false, which now requires setOnheapCaching(true),
>> which I did. After that, cache.invoke() still didn't work, so I commented
>> this part out.
>> The remaining test was broken due to dependence on hash map iteration
>> order, which was changed in Java 8. So I have got the remaining tests
>> working, checking important parts of our system.
>>
>> Please do not hesitate to assign subtasks of
>> https://issues.apache.org/jira/browse/IGNITE-9210 to yourself, dabble
>> with tests. IMO it's the best way for a novice developer to become
>> acquainted with Ignite code base, tests and history, while helping the
>> project.
>>
>> Thanks,
>>
>> --
>> Ilya Kasnacheev
>>
>> 2018-08-07 16:54 GMT+03:00 Ilya Kasnacheev :
>>
>>> Hello!
>>>
>>> Thank you Dmitriy, and thanks to everybody who participated in
>>> discussions.
>>>
>>> I have created tickets for next steps:
>>> https://issues.apache.org/jira/browse/IGNITE-9210 (with subtasks)
>>> https://issues.apache.org/jira/browse/IGNITE-9222
>>> https://issues.apache.org/jira/browse/IGNITE-9223
>>>
>>> As usual, feedback will be very welcome.
>>>
>>> Regards,
>>>
>>> --
>>> Ilya Kasnacheev
>>>
>>> 2018-08-07 13:58 GMT+03:00 Dmitriy Pavlov :
>>>
 Hi Igniters,

 I've merged chages for following tickets
 IGNITE-7615: Find orphaned tests without test suites, create separate
 test
 suite for them;
 IGNITE-8344: Remove duplicate tests and suites;
 IGNITE-8345: Streamline tests' class names: mark Abstract and Load tests
 obviously so;

 After including these suites we have now more than 100 occurrences of
 //suite.addTest

 These tests were created early but not executed on TeamCity. If you are
 interseted in test coverage increase and can contribute each of these
 suite
 actualization, please feel free to create ticket for such suites
 resurrection (or group of suites).

 Ilya, thank you for contribution and for your efforts to make this
 happen.

 Sincerely,
 Dmitriy Pavlov

 ср, 1 авг. 2018 г. в 12:52, Dmitriy Pavlov :

 > Hi Ilya,
 >
 > could you please actualize this PR. TC Bot can now detect newly
 > contributed tests' failures, so I think it is best point to apply you
 > change.
 >
 > Sincerely,
 > Dmitriy Pavlov
 >
 > пт, 25 мая 2018 г. в 18:16, Eduard Shangareev <
 eduard.shangar...@gmail.com
 > >:
 >
 >> Igniters,
 >>
 >> While making review I checked next main-method tests:
 >>
 >> org.apache.ignite.loadtests.mapper.GridContinuousMapperLoadTest1
 >> org.apache.ignite.loadtests.mapper.GridContinuousMapperLoadTest2
 >>
 >> And I have found that they are totally outdated!
 >> They use config which was changed a long time ago.
 >> And use localPeek with parameters which don't make sense now.
 >>
 >> So, I suggest to delete them.
 >>
 >> If there wouldn't be any objection I will do it myself.
 >>
 >>
 >>
 >>
 >> On Tue, May 22, 2018 at 6:59 PM, Ilya Kasnacheev <
 >> ilya.kasnach...@gmail.com>
 >> wrote:
 >>
 >> > Hello, Igniters!
 >> >
 >> > One moment more of your time. One, we seem to have a consensus now
 that
 >> > tests should be added to suites, but commented out. They should be
 >> > uncommented out later, for which numerous tickets will be created.
 This
 >> way
 >> > we can tackle.
 >> >
 >> > Another issue sprang up, just now I have discovered an
 'ignored-tests'
 >> > module. My proposal thus is to:
 >> > - Move tests from this suite to relevant suites, comment them out.
 >> > - Kill this module (with fire).
 >> >
 >> > Would be glad to her your input,
 >> >
 >> >
 >> >
 >> > --
 >> > Ilya Kasnacheev
 >> >
 >> > 2018-05-03 20:03 GMT+03:00 Ilya Kasnacheev <
 ilya.kasnach...@gmail.com>:
 >> >
 >> > > Hello Dmitry, igniters!
 >> > >
 >> > > S

Explicit plugin providers configuration issue

2020-02-05 Thread Andrey Gura
Anton, Mikhail,

I stumbled upon impossibility to configure plugin with out adding
appropriate class names to org.apache.ignite.plugin.PluginProvider
file and found change where this possibility was added [1].

Thanks a lot for this change. I noticed also that
IgniteConfiguration.setPluginProviders() overrides plugins that
usually will be loaded by ServiceLoader. Is it deliberate decision? It
seems that better approach is using plugins from both sources:
ServiceLoader provided  and user provided via IgniteConfiguration.

WDYT?

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


[DISCUSSION] ignite-extension - ignite-spring-boot-autoconfigurer release.

2020-02-05 Thread Nikolay Izhikov
Hello, Igniters.

We don't have a release process for newly created ignite-extensions modules.
I want to release two modules:

* ignite-spring-boot-autoconfigure
* ignite-client-spring-boot-autoconfigure

Let's discuss it.

Any objections to it?
What should be done before release?


Re: [DISCUSSION] ignite-extension - ignite-spring-boot-autoconfigurer release.

2020-02-05 Thread Denis Magda
Alex, did you have a chance to review Saikat’s changes related to the
extensions repository organization and release approach?

Denis

On Wednesday, February 5, 2020, Nikolay Izhikov  wrote:

> Hello, Igniters.
>
> We don't have a release process for newly created ignite-extensions
> modules.
> I want to release two modules:
>
> * ignite-spring-boot-autoconfigure
> * ignite-client-spring-boot-autoconfigure
>
> Let's discuss it.
>
> Any objections to it?
> What should be done before release?
>


-- 
-
Denis


[jira] [Created] (IGNITE-12626) Add RELEASE_NOTES about 2.8

2020-02-05 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created IGNITE-12626:


 Summary: Add RELEASE_NOTES about 2.8
 Key: IGNITE-12626
 URL: https://issues.apache.org/jira/browse/IGNITE-12626
 Project: Ignite
  Issue Type: Task
Reporter: Maxim Muzafarov
Assignee: Maxim Muzafarov
 Fix For: 2.8


Update RELEASE_NOTES for the 2.8 release



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


Re: Question: different setting for nodes.

2020-02-05 Thread Maxim Muzafarov
Folks,


I think it's a common problem for such system properties (which may be
different on different nodes and which may lead to unpredictable
cluster behaviour). The same mentioned by Ivan here [1].

Is it better to validate (somehow) all system properties, for
instance, started with IGNITE_ prefix, on all nodes the same way as we
do it for IgniteConfiguration?

[1] 
https://issues.apache.org/jira/browse/IGNITE-12470?focusedCommentId=17004207&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17004207

On Wed, 5 Feb 2020 at 17:20, Nikolay Izhikov  wrote:
>
> Vladimir.
>
> This looks like a bug to me.
>
> Can you, please, prepare the simple reproducer for this issue and it’s 
> consequences?
>
>
> > 5 февр. 2020 г., в 17:08, Vladimir Steshin  написал(а):
> >
> > Hi, folks.
> >
> >
> >
> > I recently found that one node might be started with flag
> > reuse-memory-on-deactivate [1] set off while another node might be
> > configured with the flag enabled. This ability hinders prediction of
> > cluster behavior on deactivation/activation. One node keeps data in memory,
> > other doesn’t.
> >
> > Should we check this flag is set equally on all nodes? Is this an issue? We
> > might prevent node start if it has different setting.
> >
> >
> >
> > [1] IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
>


Re: Explicit plugin providers configuration issue

2020-02-05 Thread Mikhail Petrov

Hi, Andrey.

The approach of setting plugins via IgniteConfiguration provides an 
additional feature to control the order in which plugins will be loaded.
It's important in the case when several plugins provide different 
implementations of the same GridComponent while providing some other 
unique implementations (now the first found plugin that provides 
required component will be used for its obtaining).


The ServiceLoader approach gives no mentioned above order guarantees.

So I think that we can't mix these two approaches.

Also, it's not clear for me -- are there any reasons to continue support 
of the ServiceLoader approach, given the fact that configurations needed 
for a plugin, in this case, are also specified via IgniteConfiguration?

Moreover, why someone should mix those approaches?

On 05.02.2020 17:35, Andrey Gura wrote:

Anton, Mikhail,

I stumbled upon impossibility to configure plugin with out adding
appropriate class names to org.apache.ignite.plugin.PluginProvider
file and found change where this possibility was added [1].

Thanks a lot for this change. I noticed also that
IgniteConfiguration.setPluginProviders() overrides plugins that
usually will be loaded by ServiceLoader. Is it deliberate decision? It
seems that better approach is using plugins from both sources:
ServiceLoader provided  and user provided via IgniteConfiguration.

WDYT?

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


Re: Data vanished from cluster after INACTIVE/ACTIVE switch

2020-02-05 Thread Denis Magda
Hi Vladimir,

Yes, I'm suggesting us to enable this flag by
org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
default instead of introducing --force flag and showing any warnings.

-
Denis


On Wed, Feb 5, 2020 at 2:33 AM Vladimir Steshin  wrote:

> Hello all.
>
> Denis, which changes exactly? In current implementation of ticket [2] flag
> [1] is checked before requiring --force flag and showing any warnings. Do
> we need to set reuse-memory-on-deactivate to true by default?
>
> [1]
> org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
>
> [2] https://issues.apache.org/jira/browse/IGNITE-12614
>
>
> вт, 4 февр. 2020 г. в 22:45, Denis Magda :
>
> > That's the best solution for this scenario. Should we readjust the
> already
> > created ticket [1] suggesting to implement the changes of Alex Scherbakov
> > instead?
> >
> > [1] https://issues.apache.org/jira/browse/IGNITE-12614
> >
> > -
> > Denis
> >
> >
> > On Mon, Feb 3, 2020 at 11:54 PM Alexei Scherbakov <
> > alexey.scherbak...@gmail.com> wrote:
> >
> > > Folks,
> > >
> > > For a long time we have a flag [1]
> > >
> > > It does almost what we want here.
> > >
> > > I suggest to make this behavior default and rework it to keep data in
> > > memory as well (we already have special "recovery" mode for caches).
> > >
> > > [1]
> > >
> >
> org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
> > >
> > >
> > >
> > > пн, 3 февр. 2020 г. в 18:47, Alexey Goncharuk <
> > alexey.goncha...@gmail.com
> > > >:
> > >
> > > > I do not mind making this change if we explicitly and clearly define
> > what
> > > > 'new inactive state' means. What should happen if a partition is lost
> > in
> > > > inactive state? What if such node joins back the cluster after? Etc.
> > > >
> > > > пт, 31 янв. 2020 г. в 20:57, Denis Magda :
> > > >
> > > > > Back up Ivan's opinion here. Initially, the activation/deactivation
> > was
> > > > > created for the baseline topology designed for cases with native
> > > > > persistence. My thinking was that the mechanism itended to prevent
> > data
> > > > > inconsistencies while nodes with data on the disk will be in the
> > > process
> > > > of
> > > > > joining the cluster.
> > > > >
> > > > > Artem, could you please update the docs bringing this to the
> > attention
> > > of
> > > > > the user community?
> > > > > https://issues.apache.org/jira/browse/IGNITE-12615
> > > > >
> > > > > AG, what if we don't purge data from memory at least for the caches
> > not
> > > > > backed by the native persistence? Is this a big deal? We can
> > certainly
> > > > put
> > > > > this off by my guts feel we'll return to this question sooner or
> > later.
> > > > >
> > > > > -
> > > > > Denis
> > > > >
> > > > >
> > > > > On Fri, Jan 31, 2020 at 2:17 AM Ivan Pavlukhin <
> vololo...@gmail.com>
> > > > > wrote:
> > > > >
> > > > > > For me it looks like some coincidence effect. I understand that
> we
> > > get
> > > > > > such behavior because deactivation works the same way as for
> > > > > > persistent caches. Was cluster activation/deactivation designed
> and
> > > > > > described for in-memory caches? Current behavior sounds for me a
> as
> > > > > > big risk. I expect a lot of upset users unexpectedly purged all
> > their
> > > > > > data.
> > > > > >
> > > > > > пт, 31 янв. 2020 г. в 00:00, Alexey Goncharuk <
> > > > > alexey.goncha...@gmail.com
> > > > > > >:
> > > > > > >
> > > > > > > Because originally the sole purpose of deactivation was
> resource
> > > > > > > deallocation.
> > > > > > >
> > > > > > > чт, 30 янв. 2020 г. в 22:13, Denis Magda :
> > > > > > >
> > > > > > > > Such a revelation for me that data is purged from RAM if
> > someone
> > > > > > > > deactivates the cluster. Alex, do you remember why we decided
> > to
> > > > > > implement
> > > > > > > > it this way initially?
> > > > > > > >
> > > > > > > > -
> > > > > > > > Denis
> > > > > > > >
> > > > > > > >
> > > > > > > > On Thu, Jan 30, 2020 at 2:09 AM Alexey Goncharuk <
> > > > > > > > alexey.goncha...@gmail.com>
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > > > I agree on CLI and JMX because those interfaces can be used
> > by
> > > a
> > > > > > system
> > > > > > > > > administrator and can be invoked by mistake.
> > > > > > > > >
> > > > > > > > > As for the Java API, personally, I find it strange to add
> > > 'force'
> > > > > or
> > > > > > > > > 'confirm' flags to it because it is very unlikely that such
> > an
> > > > > > invocation
> > > > > > > > > is done by mistake. Such mistakes are caught during the
> > testing
> > > > > > phase and
> > > > > > > > > developers will end up hard-coding 'true' as a flag
> anyways.
> > > > > > > > >
> > > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Best regards,
> > > > > > Ivan Pavlukhin
> > > > > >
> > > > >
> > > >
> > >
> > >
> > > --
> > >
> > > Best regards,
> > > Alexei Scherbakov
> > >
> >
>


[jira] [Created] (IGNITE-12627) Control utility does not show corrupted indexes

2020-02-05 Thread Vladimir Malinovskiy (Jira)
Vladimir Malinovskiy created IGNITE-12627:
-

 Summary: Control utility does not show corrupted indexes
 Key: IGNITE-12627
 URL: https://issues.apache.org/jira/browse/IGNITE-12627
 Project: Ignite
  Issue Type: Bug
Reporter: Vladimir Malinovskiy


In 2.5.11/8.5.11 control utility does not show corrupted indexes:

 

{noformat}

{{[avolkov@lab43 bin]$ ./control.sh --host 172.25.1.43 --port 11211 --cache 
validate_indexes
Control utility [ver. 2.5.11#20191004-sha1:565c778e]
2019 Copyright(C) Apache Software Foundation
User: avolkov
Time: 2019-10-09T11:10:56.519
Command [CACHE] started
Arguments: --host 172.25.1.43 --port 11211 --cache validate_indexes

no issues found.

Command [CACHE] finished with code: 0
Control utility has completed execution at: 2019-10-09T11:10:56.916
Execution time: 397 ms}}

{noformat}{{}}

but in logs I can see:

 \{noformat}

{{11:10:56,745][WARNING][pool-6-thread-3][ValidateIndexesClosure] Current 
progress of ValidateIndexesClosure: checked integrity of 1 index partitions of 
14 cache groups
[11:10:56,850][SEVERE][pool-6-thread-14][ValidateIndexesClosure] Find in index 
failed: IndexValidationIssue [key=null, cacheName=cache_group_1_028, 
idxName=EXAMPLE_IDX], class org.h2.message.DbException: General error: "class 
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
 B+Tree is corrupted [pages(groupId, pageId)=[], cacheId=1586135659, 
cacheName=cache_group_1_028, indexName=EXAMPLE_IDX, msg=Runtime failure on 
bounds: [lower=null, upper=null]]" [5-195]
[11:10:56,850][SEVERE][pool-6-thread-12][ValidateIndexesClosure] Find in index 
failed: IndexValidationIssue [key=null, cacheName=cache_group_1_028, 
idxName=_key_PK], class org.h2.message.DbException: General error: "class 
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
 B+Tree is corrupted [pages(groupId, pageId)=[], cacheId=1586135659, 
cacheName=cache_group_1_028, indexName=_key_PK, msg=Runtime failure on bounds: 
[lower=null, upper=null]]" [5-195]
[11:10:56,851][SEVERE][pool-6-thread-11][ValidateIndexesClosure] Find in index 
failed: IndexValidationIssue [key=null, cacheName=cache_group_1_028, 
idxName=ALLTYPESINDEXED_LONGCOL_IDX], class org.h2.message.DbException: General 
error: "class 
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
 B+Tree is corrupted [pages(groupId, pageId)=[], cacheId=1586135659, 
cacheName=cache_group_1_028, indexName=ALLTYPESINDEXED_LONGCOL_IDX, msg=Runtime 
failure on bounds: [lower=null, upper=null]]" [5-195]
[11:10:56,853][SEVERE][pool-6-thread-3][ValidateIndexesClosure] Find in index 
failed: IndexValidationIssue [key=null, cacheName=cache_group_1_028, 
idxName=EXAMPLE_IDX], class org.h2.message.DbException: General error: "class 
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
 B+Tree is corrupted [pages(groupId, pageId)=[], cacheId=1586135659, 
cacheName=cache_group_1_028, indexName=EXAMPLE_IDX, msg=Runtime failure on 
bounds: [lower=null, upper=null]]" [5-195]
[11:10:56,853][SEVERE][pool-6-thread-1][ValidateIndexesClosure] Find in index 
failed: IndexValidationIssue [key=null, cacheName=cache_group_1_028, 
idxName=ALLTYPESINDEXED_LONGCOL_IDX], class org.h2.message.DbException: General 
error: "class 
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
 B+Tree is corrupted [pages(groupId, pageId)=[], cacheId=1586135659, 
cacheName=cache_group_1_028, indexName=ALLTYPESINDEXED_LONGCOL_IDX, msg=Runtime 
failure on bounds: [lower=null, upper=null]]" [5-195]
[11:10:56,856][SEVERE][pool-6-thread-6][ValidateIndexesClosure] Find in index 
failed: IndexValidationIssue [key=null, cacheName=cache_group_1_028, 
idxName=_key_PK], class org.h2.message.DbException: General error: "class 
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
 B+Tree is corrupted [pages(groupId, pageId)=[], cacheId=1586135659, 
cacheName=cache_group_1_028, indexName=_key_PK, msg=Runtime failure on bounds: 
[lower=null, upper=null]]" [5-195]
[11:10:56,861][WARNING][mgmt-#131][ValidateIndexesClosure] 
ValidateIndexesClosure finished: processed 2648 partitions and 6 indexes.}}

{noformat}{{}}

This information isn't reflected in control utility output.



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


Re: Data vanished from cluster after INACTIVE/ACTIVE switch

2020-02-05 Thread Vladimir Steshin
Denis, but why reuse-data-on-deactivate was disabled by default? There
should be a reason for that. Any data consistency issues when node gets
activated anew? We may use both solutions because the flag can be switched
off again.

ср, 5 февр. 2020 г. в 20:47, Denis Magda :

> Hi Vladimir,
>
> Yes, I'm suggesting us to enable this flag by
> org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
> default instead of introducing --force flag and showing any warnings.
>
> -
> Denis
>
>
> On Wed, Feb 5, 2020 at 2:33 AM Vladimir Steshin 
> wrote:
>
> > Hello all.
> >
> > Denis, which changes exactly? In current implementation of ticket [2]
> flag
> > [1] is checked before requiring --force flag and showing any warnings. Do
> > we need to set reuse-memory-on-deactivate to true by default?
> >
> > [1]
> >
> org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
> >
> > [2] https://issues.apache.org/jira/browse/IGNITE-12614
> >
> >
> > вт, 4 февр. 2020 г. в 22:45, Denis Magda :
> >
> > > That's the best solution for this scenario. Should we readjust the
> > already
> > > created ticket [1] suggesting to implement the changes of Alex
> Scherbakov
> > > instead?
> > >
> > > [1] https://issues.apache.org/jira/browse/IGNITE-12614
> > >
> > > -
> > > Denis
> > >
> > >
> > > On Mon, Feb 3, 2020 at 11:54 PM Alexei Scherbakov <
> > > alexey.scherbak...@gmail.com> wrote:
> > >
> > > > Folks,
> > > >
> > > > For a long time we have a flag [1]
> > > >
> > > > It does almost what we want here.
> > > >
> > > > I suggest to make this behavior default and rework it to keep data in
> > > > memory as well (we already have special "recovery" mode for caches).
> > > >
> > > > [1]
> > > >
> > >
> >
> org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
> > > >
> > > >
> > > >
> > > > пн, 3 февр. 2020 г. в 18:47, Alexey Goncharuk <
> > > alexey.goncha...@gmail.com
> > > > >:
> > > >
> > > > > I do not mind making this change if we explicitly and clearly
> define
> > > what
> > > > > 'new inactive state' means. What should happen if a partition is
> lost
> > > in
> > > > > inactive state? What if such node joins back the cluster after?
> Etc.
> > > > >
> > > > > пт, 31 янв. 2020 г. в 20:57, Denis Magda :
> > > > >
> > > > > > Back up Ivan's opinion here. Initially, the
> activation/deactivation
> > > was
> > > > > > created for the baseline topology designed for cases with native
> > > > > > persistence. My thinking was that the mechanism itended to
> prevent
> > > data
> > > > > > inconsistencies while nodes with data on the disk will be in the
> > > > process
> > > > > of
> > > > > > joining the cluster.
> > > > > >
> > > > > > Artem, could you please update the docs bringing this to the
> > > attention
> > > > of
> > > > > > the user community?
> > > > > > https://issues.apache.org/jira/browse/IGNITE-12615
> > > > > >
> > > > > > AG, what if we don't purge data from memory at least for the
> caches
> > > not
> > > > > > backed by the native persistence? Is this a big deal? We can
> > > certainly
> > > > > put
> > > > > > this off by my guts feel we'll return to this question sooner or
> > > later.
> > > > > >
> > > > > > -
> > > > > > Denis
> > > > > >
> > > > > >
> > > > > > On Fri, Jan 31, 2020 at 2:17 AM Ivan Pavlukhin <
> > vololo...@gmail.com>
> > > > > > wrote:
> > > > > >
> > > > > > > For me it looks like some coincidence effect. I understand that
> > we
> > > > get
> > > > > > > such behavior because deactivation works the same way as for
> > > > > > > persistent caches. Was cluster activation/deactivation designed
> > and
> > > > > > > described for in-memory caches? Current behavior sounds for me
> a
> > as
> > > > > > > big risk. I expect a lot of upset users unexpectedly purged all
> > > their
> > > > > > > data.
> > > > > > >
> > > > > > > пт, 31 янв. 2020 г. в 00:00, Alexey Goncharuk <
> > > > > > alexey.goncha...@gmail.com
> > > > > > > >:
> > > > > > > >
> > > > > > > > Because originally the sole purpose of deactivation was
> > resource
> > > > > > > > deallocation.
> > > > > > > >
> > > > > > > > чт, 30 янв. 2020 г. в 22:13, Denis Magda  >:
> > > > > > > >
> > > > > > > > > Such a revelation for me that data is purged from RAM if
> > > someone
> > > > > > > > > deactivates the cluster. Alex, do you remember why we
> decided
> > > to
> > > > > > > implement
> > > > > > > > > it this way initially?
> > > > > > > > >
> > > > > > > > > -
> > > > > > > > > Denis
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Thu, Jan 30, 2020 at 2:09 AM Alexey Goncharuk <
> > > > > > > > > alexey.goncha...@gmail.com>
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > I agree on CLI and JMX because those interfaces can be
> used
> > > by
> > > > a
> > > > > > > system
> > > > > > > > > > administrator and can be invoked by mistake.
> > > > > > > > > >
> > > > > > > > > > As for the Java API, personally, I find it strange to add
> > > > 'force'
> > > > > > 

Re: Data vanished from cluster after INACTIVE/ACTIVE switch

2020-02-05 Thread Denis Magda
I believe there might be a consistency-related reason why this flag was
disabled by default for caches that store data in Ignite native
persistence. I hope, Alex Goncharuk or Scherbakov can shed some light on
this.

As for the memory-only caches or caches backed up by a CacheStore such as
an RDBMS, enabling of the flag should be harmless. Once we do this, we'll
eliminate the need to load the data back into the cluster which can be a
time-consuming operation depending on the data volume.


-
Denis


On Wed, Feb 5, 2020 at 11:58 AM Vladimir Steshin  wrote:

> Denis, but why reuse-data-on-deactivate was disabled by default? There
> should be a reason for that. Any data consistency issues when node gets
> activated anew? We may use both solutions because the flag can be switched
> off again.
>
> ср, 5 февр. 2020 г. в 20:47, Denis Magda :
>
> > Hi Vladimir,
> >
> > Yes, I'm suggesting us to enable this flag by
> >
> org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
> > default instead of introducing --force flag and showing any warnings.
> >
> > -
> > Denis
> >
> >
> > On Wed, Feb 5, 2020 at 2:33 AM Vladimir Steshin 
> > wrote:
> >
> > > Hello all.
> > >
> > > Denis, which changes exactly? In current implementation of ticket [2]
> > flag
> > > [1] is checked before requiring --force flag and showing any warnings.
> Do
> > > we need to set reuse-memory-on-deactivate to true by default?
> > >
> > > [1]
> > >
> >
> org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
> > >
> > > [2] https://issues.apache.org/jira/browse/IGNITE-12614
> > >
> > >
> > > вт, 4 февр. 2020 г. в 22:45, Denis Magda :
> > >
> > > > That's the best solution for this scenario. Should we readjust the
> > > already
> > > > created ticket [1] suggesting to implement the changes of Alex
> > Scherbakov
> > > > instead?
> > > >
> > > > [1] https://issues.apache.org/jira/browse/IGNITE-12614
> > > >
> > > > -
> > > > Denis
> > > >
> > > >
> > > > On Mon, Feb 3, 2020 at 11:54 PM Alexei Scherbakov <
> > > > alexey.scherbak...@gmail.com> wrote:
> > > >
> > > > > Folks,
> > > > >
> > > > > For a long time we have a flag [1]
> > > > >
> > > > > It does almost what we want here.
> > > > >
> > > > > I suggest to make this behavior default and rework it to keep data
> in
> > > > > memory as well (we already have special "recovery" mode for
> caches).
> > > > >
> > > > > [1]
> > > > >
> > > >
> > >
> >
> org.apache.ignite.IgniteSystemProperties#IGNITE_REUSE_MEMORY_ON_DEACTIVATE
> > > > >
> > > > >
> > > > >
> > > > > пн, 3 февр. 2020 г. в 18:47, Alexey Goncharuk <
> > > > alexey.goncha...@gmail.com
> > > > > >:
> > > > >
> > > > > > I do not mind making this change if we explicitly and clearly
> > define
> > > > what
> > > > > > 'new inactive state' means. What should happen if a partition is
> > lost
> > > > in
> > > > > > inactive state? What if such node joins back the cluster after?
> > Etc.
> > > > > >
> > > > > > пт, 31 янв. 2020 г. в 20:57, Denis Magda :
> > > > > >
> > > > > > > Back up Ivan's opinion here. Initially, the
> > activation/deactivation
> > > > was
> > > > > > > created for the baseline topology designed for cases with
> native
> > > > > > > persistence. My thinking was that the mechanism itended to
> > prevent
> > > > data
> > > > > > > inconsistencies while nodes with data on the disk will be in
> the
> > > > > process
> > > > > > of
> > > > > > > joining the cluster.
> > > > > > >
> > > > > > > Artem, could you please update the docs bringing this to the
> > > > attention
> > > > > of
> > > > > > > the user community?
> > > > > > > https://issues.apache.org/jira/browse/IGNITE-12615
> > > > > > >
> > > > > > > AG, what if we don't purge data from memory at least for the
> > caches
> > > > not
> > > > > > > backed by the native persistence? Is this a big deal? We can
> > > > certainly
> > > > > > put
> > > > > > > this off by my guts feel we'll return to this question sooner
> or
> > > > later.
> > > > > > >
> > > > > > > -
> > > > > > > Denis
> > > > > > >
> > > > > > >
> > > > > > > On Fri, Jan 31, 2020 at 2:17 AM Ivan Pavlukhin <
> > > vololo...@gmail.com>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > For me it looks like some coincidence effect. I understand
> that
> > > we
> > > > > get
> > > > > > > > such behavior because deactivation works the same way as for
> > > > > > > > persistent caches. Was cluster activation/deactivation
> designed
> > > and
> > > > > > > > described for in-memory caches? Current behavior sounds for
> me
> > a
> > > as
> > > > > > > > big risk. I expect a lot of upset users unexpectedly purged
> all
> > > > their
> > > > > > > > data.
> > > > > > > >
> > > > > > > > пт, 31 янв. 2020 г. в 00:00, Alexey Goncharuk <
> > > > > > > alexey.goncha...@gmail.com
> > > > > > > > >:
> > > > > > > > >
> > > > > > > > > Because originally the sole purpose of deactivation was
> > > resource
> > > > > > > > > deallocation.
> > > > > > > > >
> > > > > > > > > чт, 30 ян

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

2020-02-05 Thread Maxim Muzafarov
Igniters,


I've prepared RELEASE_NOTES pull-request [1] to the 2.8 release.

Currently, IEP-35 monitoring issues are not included in this PR. Will
do it soon.
Please, take a look.


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

On Mon, 3 Feb 2020 at 14:38, Maxim Muzafarov  wrote:
>
> Igniters,
>
>
> Let me share the current status of the release.
>
> 1.
> Waiting for the issues [1] [2] (discussed previously this thread) to
> be tested by TC.Bot and merged to the 2.8 release branch.
>
> 2.
> Only 2 release BLOCKER issues left. I'm planning to move these issues
> to 2.8.1 release.
> The issue [4] (Error during purges by expiration: Unknown page type)
> will be covered by [1] [2].
> The issue [3] (Apache Ignite Cluster(Amazon S3 Based Discovery) Nodes
> getting down) probably require additional info to reproduce the issue.
>
> 3.
> A potential performance drop on `putAll` operations on an in-memory
> cluster (see [5] for details).
> I'll try to reproduce in another test environment.
>
>
> Will keep you posted.
>
>
> [1] https://issues.apache.org/jira/browse/IGNITE-12593
> [2] https://issues.apache.org/jira/browse/IGNITE-12594
> [3] https://issues.apache.org/jira/browse/IGNITE-12398
> [4] https://issues.apache.org/jira/browse/IGNITE-12489
> [5] 
> https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+2.8#ApacheIgnite2.8-Benchmarks(LATEST)
>
> On Thu, 30 Jan 2020 at 15:02, Alexey Goncharuk
>  wrote:
> >
> > Sounds good, will do!


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

2020-02-05 Thread Ivan Pavlukhin
Maxim,

A couple of questions:
1. We added an annotation to designate experimental API. Should not we
state in release notes what new experimental API was added? Perhaps in
a separate block.
2. As Flink integration was moved to external repository how Ignite
2.8 users will be able to use that integration?

ср, 5 февр. 2020 г. в 21:21, Maxim Muzafarov :
>
> Igniters,
>
>
> I've prepared RELEASE_NOTES pull-request [1] to the 2.8 release.
>
> Currently, IEP-35 monitoring issues are not included in this PR. Will
> do it soon.
> Please, take a look.
>
>
> [1] https://github.com/apache/ignite/pull/7367/files
>
> On Mon, 3 Feb 2020 at 14:38, Maxim Muzafarov  wrote:
> >
> > Igniters,
> >
> >
> > Let me share the current status of the release.
> >
> > 1.
> > Waiting for the issues [1] [2] (discussed previously this thread) to
> > be tested by TC.Bot and merged to the 2.8 release branch.
> >
> > 2.
> > Only 2 release BLOCKER issues left. I'm planning to move these issues
> > to 2.8.1 release.
> > The issue [4] (Error during purges by expiration: Unknown page type)
> > will be covered by [1] [2].
> > The issue [3] (Apache Ignite Cluster(Amazon S3 Based Discovery) Nodes
> > getting down) probably require additional info to reproduce the issue.
> >
> > 3.
> > A potential performance drop on `putAll` operations on an in-memory
> > cluster (see [5] for details).
> > I'll try to reproduce in another test environment.
> >
> >
> > Will keep you posted.
> >
> >
> > [1] https://issues.apache.org/jira/browse/IGNITE-12593
> > [2] https://issues.apache.org/jira/browse/IGNITE-12594
> > [3] https://issues.apache.org/jira/browse/IGNITE-12398
> > [4] https://issues.apache.org/jira/browse/IGNITE-12489
> > [5] 
> > https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+2.8#ApacheIgnite2.8-Benchmarks(LATEST)
> >
> > On Thu, 30 Jan 2020 at 15:02, Alexey Goncharuk
> >  wrote:
> > >
> > > Sounds good, will do!



-- 
Best regards,
Ivan Pavlukhin


[jira] [Created] (IGNITE-12628) Add tests for jmx metrics return types

2020-02-05 Thread Vladimir Malinovskiy (Jira)
Vladimir Malinovskiy created IGNITE-12628:
-

 Summary: Add tests for jmx metrics return types
 Key: IGNITE-12628
 URL: https://issues.apache.org/jira/browse/IGNITE-12628
 Project: Ignite
  Issue Type: Bug
Reporter: Vladimir Malinovskiy


Add tests than check if JMX metrics comply with Oracle best 
practices([https://www.oracle.com/technetwork/java/javase/tech/best-practices-jsp-136021.html])

 



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


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

2020-02-05 Thread Maxim Muzafarov
Ivan,

> Should not we state in release notes what new experimental API was added?

I think we should. Will do.
Just not to miss anything that we should mark with
@IgniteExperimental: Consistency Check [1], Monitoring [2] anything
else?

> As Flink integration was moved to external repository how Ignite 2.8 users 
> will be able to use that integration?

Since ignite-extension has a separate release cycle (right?), it is
better to release ignite-extension rather than cherry-pick this change
back to 2.8. I also think it is not a blocker for the release, but we
should do our best make the first ignite-extension release as earlier
as possible.


[1] https://issues.apache.org/jira/browse/IGNITE-10663
[2] https://issues.apache.org/jira/browse/IGNITE-11848

On Wed, 5 Feb 2020 at 22:07, Ivan Pavlukhin  wrote:
>
> Maxim,
>
> A couple of questions:
> 1. We added an annotation to designate experimental API. Should not we
> state in release notes what new experimental API was added? Perhaps in
> a separate block.
> 2. As Flink integration was moved to external repository how Ignite
> 2.8 users will be able to use that integration?
>
> ср, 5 февр. 2020 г. в 21:21, Maxim Muzafarov :
> >
> > Igniters,
> >
> >
> > I've prepared RELEASE_NOTES pull-request [1] to the 2.8 release.
> >
> > Currently, IEP-35 monitoring issues are not included in this PR. Will
> > do it soon.
> > Please, take a look.
> >
> >
> > [1] https://github.com/apache/ignite/pull/7367/files
> >
> > On Mon, 3 Feb 2020 at 14:38, Maxim Muzafarov  wrote:
> > >
> > > Igniters,
> > >
> > >
> > > Let me share the current status of the release.
> > >
> > > 1.
> > > Waiting for the issues [1] [2] (discussed previously this thread) to
> > > be tested by TC.Bot and merged to the 2.8 release branch.
> > >
> > > 2.
> > > Only 2 release BLOCKER issues left. I'm planning to move these issues
> > > to 2.8.1 release.
> > > The issue [4] (Error during purges by expiration: Unknown page type)
> > > will be covered by [1] [2].
> > > The issue [3] (Apache Ignite Cluster(Amazon S3 Based Discovery) Nodes
> > > getting down) probably require additional info to reproduce the issue.
> > >
> > > 3.
> > > A potential performance drop on `putAll` operations on an in-memory
> > > cluster (see [5] for details).
> > > I'll try to reproduce in another test environment.
> > >
> > >
> > > Will keep you posted.
> > >
> > >
> > > [1] https://issues.apache.org/jira/browse/IGNITE-12593
> > > [2] https://issues.apache.org/jira/browse/IGNITE-12594
> > > [3] https://issues.apache.org/jira/browse/IGNITE-12398
> > > [4] https://issues.apache.org/jira/browse/IGNITE-12489
> > > [5] 
> > > https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+2.8#ApacheIgnite2.8-Benchmarks(LATEST)
> > >
> > > On Thu, 30 Jan 2020 at 15:02, Alexey Goncharuk
> > >  wrote:
> > > >
> > > > Sounds good, will do!
>
>
>
> --
> Best regards,
> Ivan Pavlukhin


[DISCUSS] Public API deprecation rules

2020-02-05 Thread Alexey Goncharuk
Igniters,

We would like to add some formal requirements to the API deprecation
process. So far the API deprecation was more like intuitive-driven which
recently led to some disagreement and delaying the AI 2.8 release [1][2].

During the discussion [1] we agreed to add an
annotation @IgniteExperimental [3] which marks APIs which are yet not
stable, dangerous, partially implemented or are allowed to be changed in a
future. The reason to release such APIs is to expose the APIs to users and
collect feedback on the usability and possible bugs.

The argument we did not manage to resolve is whether we are allowed to
deprecate the old APIs _before_ the new ones get stable and get released
without @IgniteExperimental annotation. We decided to resolve the
uncertainty with a vote.

The vote we are going to have is reduced to two choices so far:
 * Never deprecate the old APIs unless the new APIs are stable and released
without @IgniteExperimental. The old APIs javadoc may be updated with a
reference to new APIs to encourage users to evaluate new APIs
 * Allow to deprecate the old APIs even when new APIs are marked
with @IgniteExperimental to explicitly notify users that the new APIs are
available

Nikolay, Andrey, please let us know if we should correct the choices
articulation or add another option for the vote.

--AG

[1]
http://apache-ignite-developers.2346864.n4.nabble.com/Internal-classes-are-exposed-in-public-API-td45146.html
[2]
http://apache-ignite-developers.2346864.n4.nabble.com/Internal-classes-are-exposed-in-public-API-td45146.html
[3] https://issues.apache.org/jira/browse/IGNITE-12559


Random Forest, trying to evaluate accuracy but getting exception

2020-02-05 Thread kencottrell
I have attempted to add this call to a RandomForestModel in order to obtain
accuracy:

  *double accuracy = Evaluator.evaluate(
dataCache,
randomForestMdl,
vectorizer,
new Accuracy<>()
);

System.out.println("\n>>> Accuracy " + accuracy);
System.out.println("\n>>> Test Error " + (1 - accuracy));*


But I get this exception (editted to remove extra detail). Am I using the
wrong parameters?

Exception in thread "main" java.lang.RuntimeException: class
/org.apache.ignite.ml.math.exceptions.IndexException: Invalid (out of bound)
index: 16
at
org.apache.ignite.ml.selection.scoring.evaluator.Evaluator.calculateMetric(Evaluator.java:330)
at
org.apache.ignite.ml.selection.scoring.evaluator.Evaluator.evaluate(Evaluator.java:57)
at com.gg.TrainRandomForest2.main(TrainRandomForest2.java:111)
Caused by: class org.apache.ignite.ml.math.exceptions.IndexException:
Invalid (out of bound) index: 16
at
org.apache.ignite.ml.math.primitives.vector.AbstractVector.checkIndex(AbstractVector.java:174)
at
org.apache.ignite.ml.math.primitives.vector.AbstractVector.get(AbstractVector.java:179)
at
org.apache.ignite.ml.tree.randomforest.data.TreeNode.predict(TreeNode.java:91)
at
org.apache.ignite.ml.tree.randomforest.data.TreeNode.predict(TreeNode.java:92)
at
org.apache.ignite.ml.tree.randomforest.data.TreeRoot.predict(TreeRoot.java:52)
at
org.apache.ignite.ml.tree.randomforest.data.TreeRoot.predict(TreeRoot.java:29)
at
org.apache.ignite.ml.composition.ModelsComposition.predict(ModelsComposition.java:64)
at
org.apache.ignite.ml.composition.ModelsComposition.predict(ModelsComposition.java:32)
at
org.apache.ignite.ml.selection.scoring.cursor.CacheBasedLabelPairCursor$TruthWithPredictionIterator.next(CacheBasedLabelPairCursor.java:145)
at
org.apache.ignite.ml.selection.scoring.cursor.CacheBasedLabelPairCursor$TruthWithPredictionIterator.next(CacheBasedLabelPairCursor.java:121)
at
org.apache.ignite.ml.selection.scoring.metric.classification.Accuracy.score(Accuracy.java:36)
at
org.apache.ignite.ml.selection.scoring.evaluator.Evaluator.calculateMetric(Evaluator.java:328)
... 2 more

/



--
Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/


Re: [DISCUSS] Public API deprecation rules

2020-02-05 Thread Denis Magda
The justification and choices look crystal clear to me.

-
Denis


On Wed, Feb 5, 2020 at 1:36 PM Alexey Goncharuk 
wrote:

> Igniters,
>
> We would like to add some formal requirements to the API deprecation
> process. So far the API deprecation was more like intuitive-driven which
> recently led to some disagreement and delaying the AI 2.8 release [1][2].
>
> During the discussion [1] we agreed to add an
> annotation @IgniteExperimental [3] which marks APIs which are yet not
> stable, dangerous, partially implemented or are allowed to be changed in a
> future. The reason to release such APIs is to expose the APIs to users and
> collect feedback on the usability and possible bugs.
>
> The argument we did not manage to resolve is whether we are allowed to
> deprecate the old APIs _before_ the new ones get stable and get released
> without @IgniteExperimental annotation. We decided to resolve the
> uncertainty with a vote.
>
> The vote we are going to have is reduced to two choices so far:
>  * Never deprecate the old APIs unless the new APIs are stable and released
> without @IgniteExperimental. The old APIs javadoc may be updated with a
> reference to new APIs to encourage users to evaluate new APIs
>  * Allow to deprecate the old APIs even when new APIs are marked
> with @IgniteExperimental to explicitly notify users that the new APIs are
> available
>
> Nikolay, Andrey, please let us know if we should correct the choices
> articulation or add another option for the vote.
>
> --AG
>
> [1]
>
> http://apache-ignite-developers.2346864.n4.nabble.com/Internal-classes-are-exposed-in-public-API-td45146.html
> [2]
>
> http://apache-ignite-developers.2346864.n4.nabble.com/Internal-classes-are-exposed-in-public-API-td45146.html
> [3] https://issues.apache.org/jira/browse/IGNITE-12559
>


[jira] [Created] (IGNITE-12629) Fit all metrics into single standard

2020-02-05 Thread Vladimir Malinovskiy (Jira)
Vladimir Malinovskiy created IGNITE-12629:
-

 Summary: Fit all metrics into single standard
 Key: IGNITE-12629
 URL: https://issues.apache.org/jira/browse/IGNITE-12629
 Project: Ignite
  Issue Type: Bug
Reporter: Vladimir Malinovskiy


All ignite metrics should be fitted to single standard. This standard should be 
discussed and documented. Oracle best practices 
[https://www.oracle.com/technetwork/java/javase/tech/best-practices-jsp-136021.html]



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


Re: Random Forest, trying to evaluate accuracy but getting exception

2020-02-05 Thread Alexey Zinoviev
Yes, the known issue in the Random Forest, it throws the strange math
exception in the case, when the preprocessed vector has the
different length with the vector which could be handled by the model.
I didn't see your another code, but I could suppose, that you have another
preprocessing stages like one-hot-encoding that adds new columns and you
missed the link here

double accuracy = Evaluator.evaluate(
dataCache,
randomForestMdl,
vectorizer, <-- should be correct
(the last in the chain and the same like in the fit() call ) preprocesser
new Accuracy<>()
);

I'll add the ticket to throw another exception with the correct message to
explain this situation for the user.

чт, 6 февр. 2020 г. в 00:29, kencottrell :

> I have attempted to add this call to a RandomForestModel in order to obtain
> accuracy:
>
>   *double accuracy = Evaluator.evaluate(
> dataCache,
> randomForestMdl,
> vectorizer,
> new Accuracy<>()
> );
>
> System.out.println("\n>>> Accuracy " + accuracy);
> System.out.println("\n>>> Test Error " + (1 - accuracy));*
>
>
> But I get this exception (editted to remove extra detail). Am I using the
> wrong parameters?
>
> Exception in thread "main" java.lang.RuntimeException: class
> /org.apache.ignite.ml.math.exceptions.IndexException: Invalid (out of
> bound)
> index: 16
> at
> org.apache.ignite.ml
> .selection.scoring.evaluator.Evaluator.calculateMetric(Evaluator.java:330)
> at
> org.apache.ignite.ml
> .selection.scoring.evaluator.Evaluator.evaluate(Evaluator.java:57)
> at com.gg.TrainRandomForest2.main(TrainRandomForest2.java:111)
> Caused by: class org.apache.ignite.ml.math.exceptions.IndexException:
> Invalid (out of bound) index: 16
> at
>
> org.apache.ignite.ml.math.primitives.vector.AbstractVector.checkIndex(AbstractVector.java:174)
> at
>
> org.apache.ignite.ml.math.primitives.vector.AbstractVector.get(AbstractVector.java:179)
> at
>
> org.apache.ignite.ml.tree.randomforest.data.TreeNode.predict(TreeNode.java:91)
> at
>
> org.apache.ignite.ml.tree.randomforest.data.TreeNode.predict(TreeNode.java:92)
> at
>
> org.apache.ignite.ml.tree.randomforest.data.TreeRoot.predict(TreeRoot.java:52)
> at
>
> org.apache.ignite.ml.tree.randomforest.data.TreeRoot.predict(TreeRoot.java:29)
> at
> org.apache.ignite.ml
> .composition.ModelsComposition.predict(ModelsComposition.java:64)
> at
> org.apache.ignite.ml
> .composition.ModelsComposition.predict(ModelsComposition.java:32)
> at
> org.apache.ignite.ml
> .selection.scoring.cursor.CacheBasedLabelPairCursor$TruthWithPredictionIterator.next(CacheBasedLabelPairCursor.java:145)
> at
> org.apache.ignite.ml
> .selection.scoring.cursor.CacheBasedLabelPairCursor$TruthWithPredictionIterator.next(CacheBasedLabelPairCursor.java:121)
> at
> org.apache.ignite.ml
> .selection.scoring.metric.classification.Accuracy.score(Accuracy.java:36)
> at
> org.apache.ignite.ml
> .selection.scoring.evaluator.Evaluator.calculateMetric(Evaluator.java:328)
> ... 2 more
>
> /
>
>
>
> --
> Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/
>