[jira] [Created] (IGNITE-13157) Upgrade build process for Javadocs

2020-06-16 Thread Mauricio Stekl (Jira)
Mauricio Stekl created IGNITE-13157:
---

 Summary: Upgrade build process for Javadocs
 Key: IGNITE-13157
 URL: https://issues.apache.org/jira/browse/IGNITE-13157
 Project: Ignite
  Issue Type: Improvement
  Components: documentation
Reporter: Mauricio Stekl
 Attachments: gsc_mobile_errors.png

I am reaching out to you all to see if you could help fix some issues with 
mobile usability in the Javadocs sections for Ignite website.
 
I know you might think most users will not read the API doc using their 
smartphones, and that is true. But as you can see in the attached screenshot 
gsc_mobile_errors.png, we have errors related to mobile usability reported by 
Google itself through GSC. Obviously this affects our performance on search 
results, as Google is giving more and more priority to mobile friendly websites.
For Apache Ignite website we basically have the largest part of the website 
with issues, since we only have around 30 pages mobile friendly, and 1000+ 
pages which are not. 
 
Specifically with Javadocs, the main problem is it contains old html frames for 
layout and navigation, among other markup bad practices, and this would make 
impossible to update any css to be responsive for small screens.  From what I 
was able to find [[1]|https://bugs.openjdk.java.net/browse/JDK-8215599] 
[[2]|https://bugs.openjdk.java.net/browse/JDK-8196202], starting with JDK 9 
there is a '--no-frames' option which fixes this problem. And with version 11 
this option is enabled by default and other features included. You can see here 
how the new layout looks: 
[https://docs.oracle.com/en/java/javase/11/docs/api/index.html]
 
Would it be possible to upgrade Java to version 11 only for building the 
javadocs? This might be a great starting point to fix these problems. Later we 
could update the .css to adjust font sizes and other details.



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


Webinar: Apache Ignite Management & Monitoring

2020-06-16 Thread Greg Stachnick
Hi Everyone,

We released a new monitoring and management tool this month for Apache
Ignite and GridGain applications; GridGain Control Center. There is a
webinar schedule for tomorrow, JUNE 17 2020 10:00AM PDT (-07:00), where I
will provide an overview of the features and demo different use cases. If
you are interested, the registration link can be found below:

https://www.gridgain.com/resources/webinars/simplifying-gridgain-and-apache-ignite-management-with-the-gridgain-control-center

If you aren't able to attend, a replay will also be posted shortly after
the session.

Hope to see you there.
Thanks,
Greg

-- 
Greg Stachnick
Director of Cloud Product Management
GridGain Systems
(415)407-7192
greg.stachn...@gridgain.com


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

2020-06-16 Thread Denis Magda
Sergey, Ivan,

Could you please check the questions below? If it's time-consuming to
rework continuous queries, then the new mode can become available in the
experimental state and should not let register continuous queries to avoid
potential deadlocks. Overall, this design gap in continuous queries was
like a bomb that has just detonated [1]. Anyway, this new connectivity mode
will be priceless even if you can't use continuous queries with them
because right now we cannot even start a thick client inside of a
serverless function.

Alexey Plehanov,

It looks like we can proceed with the release taking your timelines.

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

-
Denis


On Wed, Jun 10, 2020 at 4:16 PM Denis Magda  wrote:

> Ivan, Sergey,
>
> How much effort should we put to resolve the issue with
> continuous queries? Are you working on that issue actively? Let's try to
> guess what would be the ETA.
>
> -
> Denis
>
>
> On Wed, Jun 10, 2020 at 3:55 AM Ivan Bessonov 
> wrote:
>
>> Hello,
>>
>> Sorry for the delay. Sergey Chugunov (sergey.chugu...@gmail.com) just
>> replied
>> to the main conversation about "communication via discovery" [1]. We work
>> on it
>> together and recently have found one hard-to-fix scenario, detailed
>> description is
>> provided in Sergey's reply.
>>
>> In short, July 10th looks realistic only if we introduce new behavior in
>> its current
>> implementation, with new setting and IgniteExperimental status. Blocker
>> here is
>> current implementation of Continuos Query protocol that in some cases
>> (described
>> at the end) initiates TCP connection right from discovery thread which
>> obviously
>> leads to deadlock. We haven't estimated efforts needed to redesign of CQ
>> protocol
>> but it is definitely a risk and fixing it isn't feasible with a code
>> freeze at 10th of July.
>> So my verdict: we can include this new feature in 2.9 scope as
>> experimental and with
>> highlighted limitation on CQ usage. Is that OK?
>>
>> CQ limitation: server needs to open a communication connection to the
>> client if during
>> CQ registration client tries to p2p deploy new class not available on
>> server classpath.
>> In other cases registration of CQ should be fine.
>>
>> [1]
>> http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSSION-New-Ignite-settings-for-IGNITE-12438-and-IGNITE-13013-td47586.html
>>
>> вт, 9 июн. 2020 г. в 19:36, Ivan Rakov :
>>
>>> Hi,
>>>
>>> Indeed, the tracing feature is almost ready. Discovery, communication and
>>> transactions tracing will be introduced, as well as an option to
>>> configure
>>> tracing in runtime. Right now we are working on final performance
>>> optimizations, but it's very likely that we'll complete this activity
>>> before the code freeze date.
>>> Let's include tracing to the 2.9 release scope.
>>>
>>> More info:
>>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-48%3A+Tracing
>>> https://issues.apache.org/jira/browse/IGNITE-13060
>>>
>>> --
>>> Best Regards,
>>> Ivan Rakov
>>>
>>> On Sat, Jun 6, 2020 at 4:30 PM Denis Magda  wrote:
>>>
>>> > Hi folks,
>>> >
>>> > The timelines proposed by Alex Plekhanov sounds reasonable to me. I'd
>>> like
>>> > only to hear inputs of @Ivan Rakov , who is
>>> about to
>>> > finish with the tracing support, and @Ivan Bessonov
>>> > , who is fixing a serious limitation for K8
>>> > deployments [1]. Most likely, both features will be ready by the code
>>> > freeze date (July 10), but the guys should know it better.
>>> >
>>> > [1]
>>> >
>>> http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSSION-New-Ignite-settings-for-IGNITE-12438-and-IGNITE-13013-td47586.html
>>> >
>>> > -
>>> > Denis
>>> >
>>> >
>>> > On Wed, Jun 3, 2020 at 4:45 AM Alex Plehanov 
>>> > wrote:
>>> >
>>> >> Hello Igniters,
>>> >>
>>> >> AI 2.8.1 is finally released and as we discussed here [1] its time to
>>> >> start
>>> >> the discussion about 2.9 release.
>>> >>
>>> >> I want to propose myself to be the release manager of the 2.9 release.
>>> >>
>>> >> What about release time, I agree with Maxim that we should deliver
>>> >> features
>>> >> as frequently as possible. If some feature doesn't fit into release
>>> dates
>>> >> we should better include it into the next release and schedule the
>>> next
>>> >> release earlier then postpone the current release.
>>> >>
>>> >> I propose the following dates for 2.9 release:
>>> >>
>>> >> Scope Freeze: June 26, 2020
>>> >> Code Freeze: July 10, 2020
>>> >> Voting Date: July 31, 2020
>>> >> Release Date: August 7, 2019
>>> >>
>>> >> WDYT?
>>> >>
>>> >> [1] :
>>> >>
>>> >>
>>> http://apache-ignite-developers.2346864.n4.nabble.com/Ignite-Releases-Plan-td47360.html#a47575
>>> >>
>>> >
>>>
>>
>>
>> --
>> Sincerely yours,
>> Ivan Bessonov
>>
>


Re: [DISCUSSION] New Ignite settings for IGNITE-12438 and IGNITE-13013

2020-06-16 Thread Sergey Chugunov
Val,

I like your suggestion about naming, it describes the purpose of the
configuration the best.

On Tue, Jun 16, 2020 at 5:18 PM Ivan Bessonov  wrote:

> Hi,
>
> I created new issue that describes CQ problem in more details: [1]
> I'm fine with experimental status and new property naming.
>
> [1] https://issues.apache.org/jira/browse/IGNITE-13156
>
> вт, 16 июн. 2020 г. в 02:20, Valentin Kulichenko <
> valentin.kuliche...@gmail.com>:
>
> > Folks,
> >
> > Thanks for providing the detailed clarifications. Let's add the
> parameter,
> > mark the new feature as experimental, and target for making it the
> default
> > mode in Ignite 3.0.
> >
> > I still don't think we can come up with a naming that is really
> intuitive,
> > but let's try to simplify it as much as possible. How about this:
> >
> > TcpCommunicationSpi#forceClientToServerConnections -- false by default,
> > true if the new mode needs to be enabled.
> >
> > Let me know your thoughts.
> >
> > -Val
> >
> > On Wed, Jun 10, 2020 at 4:10 PM Denis Magda  wrote:
> >
> > > Sergey,
> > >
> > > Thanks for the detailed explanation and for covering all corner cases.
> > >
> > > Considering the improvement's criticality, I would continue moving in
> the
> > > initial direction and add that particular configuration property.
> > > Potentially, we can put more effort throughout an Ignite 3.0 timeframe
> > and
> > > remove the property altogether. @Valentin Kulichenko
> > > , could you please suggest any alternate
> > naming?
> > >
> > > Btw, what are the specifics of the issue with continuous queries? It
> will
> > > be ideal if we could release this new communication option in the GA
> > state
> > > in 2.9.
> > >
> > > -
> > > Denis
> > >
> > >
> > > On Wed, Jun 10, 2020 at 1:22 AM Sergey Chugunov <
> > sergey.chugu...@gmail.com
> > > >
> > > wrote:
> > >
> > > > Denis, Val,
> > > >
> > > > Idea of prohibiting servers to open connections to clients and force
> > > > clients to always open "inverse connections" to servers looks
> > promising.
> > > To
> > > > be clear, by "inverse connections" I mean here that server needed to
> > > > communicate with client requests client to open a connection back
> > instead
> > > > of opening connection by itself using addresses published by the
> > client.
> > > >
> > > > If we apply the idea it will indeed allow us to simplify our
> > > configuration
> > > > (no need for new configuration property), another advantage is
> clients
> > > > won't need to publish their addresses anymore (with one side note
> I'll
> > > > cover at the end), it will also simplify our code.
> > > >
> > > > However applying it with current implementation of inverse connection
> > > > request (when request goes across all ring) may bring significant
> delay
> > > of
> > > > opening first connection depending on cluster size and relative
> > positions
> > > > between server that needs to communicate with client (target server)
> > and
> > > > client's router node.
> > > >
> > > > It is possible to overcome this by sending inverse connection request
> > not
> > > > via discovery but directly to router server node via communication
> and
> > > > convert to discovery message only on the router. We'll still have two
> > > hops
> > > > of communication request instead of one plus discovery worker on
> client
> > > may
> > > > be busy working on other stuff slowing down handling of connection
> > > request.
> > > > But it should be fine.
> > > >
> > > > However with this solution it is hard to implement failover of router
> > > node:
> > > > let me describe it in more details.
> > > > In case of router node failure target server won't be able to
> determine
> > > if
> > > > client received inverse comm request successfully and (even worse)
> > won't
> > > be
> > > > able to figure out new router for the client without waiting for
> > > discovery
> > > > event of the client reconnect.
> > > > And this brings us to the following choise: we either wait for
> > discovery
> > > > event about client reconnect (this is deadlock-prone as current
> > protocol
> > > of
> > > > CQ registration opens comm connection to client right from discovery
> > > thread
> > > > in some cases; if we wait for new discovery event from discovery
> > thread,
> > > it
> > > > is a deadlock) or we fail opening the connection by timeout thus
> adding
> > > new
> > > > scenarios when opening connection may fail.
> > > >
> > > > Thus implementing communication model "clients connect to servers,
> > > servers
> > > > never connect to clients" efficiently requires more work on different
> > > parts
> > > > of our functionality and rigorous testing of readiness of our code
> for
> > > more
> > > > communication connection failures.
> > > >
> > > > So to me the least risky decision is not to delete new configuration
> > but
> > > > leave it with experimental status. If we find out that direct request
> > > > (server -> router server -> target client) implementation works well
> > and
> > 

Re: [DISCUSSION] New Ignite settings for IGNITE-12438 and IGNITE-13013

2020-06-16 Thread Ivan Bessonov
Hi,

I created new issue that describes CQ problem in more details: [1]
I'm fine with experimental status and new property naming.

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

вт, 16 июн. 2020 г. в 02:20, Valentin Kulichenko <
valentin.kuliche...@gmail.com>:

> Folks,
>
> Thanks for providing the detailed clarifications. Let's add the parameter,
> mark the new feature as experimental, and target for making it the default
> mode in Ignite 3.0.
>
> I still don't think we can come up with a naming that is really intuitive,
> but let's try to simplify it as much as possible. How about this:
>
> TcpCommunicationSpi#forceClientToServerConnections -- false by default,
> true if the new mode needs to be enabled.
>
> Let me know your thoughts.
>
> -Val
>
> On Wed, Jun 10, 2020 at 4:10 PM Denis Magda  wrote:
>
> > Sergey,
> >
> > Thanks for the detailed explanation and for covering all corner cases.
> >
> > Considering the improvement's criticality, I would continue moving in the
> > initial direction and add that particular configuration property.
> > Potentially, we can put more effort throughout an Ignite 3.0 timeframe
> and
> > remove the property altogether. @Valentin Kulichenko
> > , could you please suggest any alternate
> naming?
> >
> > Btw, what are the specifics of the issue with continuous queries? It will
> > be ideal if we could release this new communication option in the GA
> state
> > in 2.9.
> >
> > -
> > Denis
> >
> >
> > On Wed, Jun 10, 2020 at 1:22 AM Sergey Chugunov <
> sergey.chugu...@gmail.com
> > >
> > wrote:
> >
> > > Denis, Val,
> > >
> > > Idea of prohibiting servers to open connections to clients and force
> > > clients to always open "inverse connections" to servers looks
> promising.
> > To
> > > be clear, by "inverse connections" I mean here that server needed to
> > > communicate with client requests client to open a connection back
> instead
> > > of opening connection by itself using addresses published by the
> client.
> > >
> > > If we apply the idea it will indeed allow us to simplify our
> > configuration
> > > (no need for new configuration property), another advantage is clients
> > > won't need to publish their addresses anymore (with one side note I'll
> > > cover at the end), it will also simplify our code.
> > >
> > > However applying it with current implementation of inverse connection
> > > request (when request goes across all ring) may bring significant delay
> > of
> > > opening first connection depending on cluster size and relative
> positions
> > > between server that needs to communicate with client (target server)
> and
> > > client's router node.
> > >
> > > It is possible to overcome this by sending inverse connection request
> not
> > > via discovery but directly to router server node via communication and
> > > convert to discovery message only on the router. We'll still have two
> > hops
> > > of communication request instead of one plus discovery worker on client
> > may
> > > be busy working on other stuff slowing down handling of connection
> > request.
> > > But it should be fine.
> > >
> > > However with this solution it is hard to implement failover of router
> > node:
> > > let me describe it in more details.
> > > In case of router node failure target server won't be able to determine
> > if
> > > client received inverse comm request successfully and (even worse)
> won't
> > be
> > > able to figure out new router for the client without waiting for
> > discovery
> > > event of the client reconnect.
> > > And this brings us to the following choise: we either wait for
> discovery
> > > event about client reconnect (this is deadlock-prone as current
> protocol
> > of
> > > CQ registration opens comm connection to client right from discovery
> > thread
> > > in some cases; if we wait for new discovery event from discovery
> thread,
> > it
> > > is a deadlock) or we fail opening the connection by timeout thus adding
> > new
> > > scenarios when opening connection may fail.
> > >
> > > Thus implementing communication model "clients connect to servers,
> > servers
> > > never connect to clients" efficiently requires more work on different
> > parts
> > > of our functionality and rigorous testing of readiness of our code for
> > more
> > > communication connection failures.
> > >
> > > So to me the least risky decision is not to delete new configuration
> but
> > > leave it with experimental status. If we find out that direct request
> > > (server -> router server -> target client) implementation works well
> and
> > > doesn't bring much complexity in failover scenarios we'll remove that
> > > configuration and prohibit servers to open connections to clients by
> > > default.
> > >
> > > Side note: there are rare but yet possible scenarios where client node
> > > needs to open communication connection to other client node. If we let
> > > clients not to publish their addresses these scenarios will stop
> working
> > > without additional logic 

Re: Save model to JSON

2020-06-16 Thread Ilya Kasnacheev
Hello!

Our REST Jetty code uses jackson databind.

I think it is a safe bet since most users will have it in classpath anyway,
since they use our REST.
If there are any CVEs we have a lot of pressure to fix it, which will also
fix ML export.

Regards,
-- 
Ilya Kasnacheev


вт, 16 июн. 2020 г. в 15:22, Alexey Zinoviev :

> Hi, Igniters!
>
> I'm going to provide ML model export/import in human-readable format like
> JSON.
> But I have an issue: what JSON ser/deser library to use:
>
>- I don't want to add dependency with possible CVEs
>- I don't need in special annotations to mark the POJO objects or
>something similar
>- I need to keep hierarchical (not plain) data in JSON
>
> Nice to hear any comments/suggestions
>
> Alexey
>


[jira] [Created] (IGNITE-13156) Continuous query filter deployment hungs discovery thread

2020-06-16 Thread Ivan Bessonov (Jira)
Ivan Bessonov created IGNITE-13156:
--

 Summary: Continuous query filter deployment hungs discovery thread
 Key: IGNITE-13156
 URL: https://issues.apache.org/jira/browse/IGNITE-13156
 Project: Ignite
  Issue Type: Bug
Reporter: Ivan Bessonov


Continuous query starts with a custom discovery event. Handler of the event is 
executed in discovery thread synchronously. Even worse is the fact that message 
itself is mutable and it blocks the ring.

Inside of the handler there is a is p2p resource request from other node, which 
can be pretty time consuming. And after 
https://issues.apache.org/jira/browse/IGNITE-12438 or similar tasks this could 
even lead to a deadlock.

All IO operations must be removed from discovery handlers.
{code:java}
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.send(GridIoManager.java:2099)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.send(GridIoManager.java:2099)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.sendToGridTopic(GridIoManager.java:2231)
 at 
org.apache.ignite.internal.managers.deployment.GridDeploymentCommunication.sendResourceRequest(GridDeploymentCommunication.java:456)
 at 
org.apache.ignite.internal.managers.deployment.GridDeploymentClassLoader.sendResourceRequest(GridDeploymentClassLoader.java:793)
 at 
org.apache.ignite.internal.managers.deployment.GridDeploymentClassLoader.getResourceAsStreamEx(GridDeploymentClassLoader.java:745)
 at 
org.apache.ignite.internal.managers.deployment.GridDeploymentPerVersionStore.checkLoadRemoteClass(GridDeploymentPerVersionStore.java:729)
 at 
org.apache.ignite.internal.managers.deployment.GridDeploymentPerVersionStore.getDeployment(GridDeploymentPerVersionStore.java:314)
 at 
org.apache.ignite.internal.managers.deployment.GridDeploymentManager.getGlobalDeployment(GridDeploymentManager.java:498)
 at 
org.apache.ignite.internal.GridEventConsumeHandler.p2pUnmarshal(GridEventConsumeHandler.java:416)
 at 
org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.processStartRequest(GridContinuousProcessor.java:1423)
 at 
org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.access$400(GridContinuousProcessor.java:117)
 at 
org.apache.ignite.internal.processors.continuous.GridContinuousProcessor$2.onCustomEvent(GridContinuousProcessor.java:220)
 at 
org.apache.ignite.internal.processors.continuous.GridContinuousProcessor$2.onCustomEvent(GridContinuousProcessor.java:211)
 at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery0(GridDiscoveryManager.java:670)
 at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.lambda$onDiscovery$0(GridDiscoveryManager.java:533)
 at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body0(GridDiscoveryManager.java:2635)
 at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body(GridDiscoveryManager.java:2673)
 at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) 
at java.lang.Thread.run(Thread.java:748)
{code}



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


Save model to JSON

2020-06-16 Thread Alexey Zinoviev
Hi, Igniters!

I'm going to provide ML model export/import in human-readable format like
JSON.
But I have an issue: what JSON ser/deser library to use:

   - I don't want to add dependency with possible CVEs
   - I don't need in special annotations to mark the POJO objects or
   something similar
   - I need to keep hierarchical (not plain) data in JSON

Nice to hear any comments/suggestions

Alexey


[jira] [Created] (IGNITE-13155) Snapshot creation throws NPE on an in-memory cluster

2020-06-16 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created IGNITE-13155:


 Summary: Snapshot creation throws NPE on an in-memory cluster
 Key: IGNITE-13155
 URL: https://issues.apache.org/jira/browse/IGNITE-13155
 Project: Ignite
  Issue Type: Bug
Reporter: Maxim Muzafarov
Assignee: Maxim Muzafarov
 Fix For: 2.9


Snapshot creation throws NPE on an in-memory cluster.

{code}
Error stack trace:
class org.apache.ignite.internal.client.GridClientException: Failed to handle 
request: [req=EXE, 
taskName=org.apache.ignite.internal.visor.snapshot.VisorSnapshotCreateTask, 
params=[VisorTaskArgument [debug=false]], err=Failed to reduce job results due 
to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotCreateTask@4d45b97f,
 err=class org.apache.ignite.IgniteException: null], trace=class 
org.apache.ignite.IgniteCheckedException: Failed to reduce job results due to 
undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotCreateTask@4d45b97f,
 err=class org.apache.ignite.IgniteException: null]
at 
org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7566)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:260)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:172)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:141)
at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:263)
at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:257)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:399)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.listen(GridFutureAdapter.java:354)
at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:257)
at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsync(GridTaskCommandHandler.java:163)
at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest(GridRestProcessor.java:325)
at 
org.apache.ignite.internal.processors.rest.GridRestProcessor.access$100(GridRestProcessor.java:104)
at 
org.apache.ignite.internal.processors.rest.GridRestProcessor$2.body(GridRestProcessor.java:179)
at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: class org.apache.ignite.compute.ComputeUserUndeclaredException: 
Failed to reduce job results due to undeclared user exception 
[task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotCreateTask@4d45b97f,
 err=class org.apache.ignite.IgniteException: null]
at 
org.apache.ignite.internal.processors.task.GridTaskWorker.reduce(GridTaskWorker.java:1184)
at 
org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:974)
at 
org.apache.ignite.internal.processors.task.GridTaskWorker.processDelayedResponses(GridTaskWorker.java:711)
at 
org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:542)
at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:830)
at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:555)
at 
org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:535)
at 
org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:227)
... 8 more
Caused by: class org.apache.ignite.IgniteException: null
at 
org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1086)
at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.convertException(IgniteFutureImpl.java:168)
at 
org.apache.ignite.internal.util.future.IgniteFutureImpl.get(IgniteFutureImpl.java:137)
at 
org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotMXBeanImpl.createSnapshot(SnapshotMXBeanImpl.java:43)
at 
org.apache.ignite.internal.visor.snapshot.VisorSnapshotCreateTask$VisorSnapshotCreateJob.run(VisorSnapshotCreateTask.java:57)
at 

Re: [DISCUSSION] Ignite integration testing framework.

2020-06-16 Thread Nikolay Izhikov
Hello, Maxim.

Thank you for so detailed explanation.

Can we put the content of this discussion somewhere on the wiki?
So It doesn’t get lost.

I divide the answer in several parts. From the requirements to the 
implementation.
So, if we agreed on the requirements we can proceed with the discussion of the 
implementation.

1. Requirements:

The main goal I want to achieve is *reproducibility* of the tests.
I’m sick and tired with the zillions of flaky, rarely failed, and almost never 
failed tests in Ignite codebase.
We should start with the simplest scenarios that will be as reliable as steel :)

I want to know for sure:
  - Is this PR makes rebalance quicker or not?
  - Is this PR makes PME quicker or not?

So, your description of the complex test scenario looks as a next step to me.

Anyway, It’s cool we already have one.

The second goal is to have a strict test lifecycle as we have in JUnit and 
similar frameworks. 

> It covers production-like deployment and running a scenarios over a single 
> database instance.

Do you mean «single cluster» or «single host»?

2. Existing tests:

> A Combinator suite allows to run set of operations concurrently over given 
> database instance.
> A Consumption suite allows to run a set production-like actions over given 
> set of Ignite/GridGain versions and compare test metrics across versions
> A Yardstick suite
> A Stress suite that simulates hardware environment degradation
> An Ultimate, DR and Compatibility suites that performs functional regression 
> testing
> Regression

Great news that we already have so many choices for testing!
Mature test base is a big +1 for Tiden.

3. Comparison:

> Criteria: Test configuration
> Ducktape: single JSON string for all tests
> Tiden: any number of YaML config files, command line option for fine-grained 
> test configuration, ability to select/modify tests behavior based on Ignite 
> version.

1. Many YAML files can be hard to maintain.
2. In ducktape, you can set parameters via «—parameters» option. Please, take a 
look at the doc [1]

> Criteria: Cluster control
> Tiden: additionally can address cluster as a whole and execute remote 
> commands in parallel.

It seems we implement this ability in the PoC, already.

> Criteria: Test assertions
> Tiden: simple asserts, also few customized assertion helpers.
> Ducktape: simple asserts.

Can you, please, be more specific.
What helpers do you have in mind?
Ducktape has an asserts that waits for logfile messages or some process finish.

> Criteria: Test reporting
> Ducktape: limited to its own text/HTML format

Ducktape have
1. Text reporter
2. Customizable HTML reporter
3. JSON reporter.

We can show JSON with the any template or tool.

> Criteria: Provisioning and deployment
> Ducktape: can provision subset of hosts from cluster for test needs. However, 
> that means, that test can’t be scaled without test code changes. Does not do 
> any deploy, relies on external means, e.g. pre-packaged in docker image, as 
> in PoC. 

This is not true.

1. We can set explicit test parameters(node number) via parameters.
We can increase client count of cluster size without test code changes.

2. We have many choices for the test environment. These choices are tested and 
used in other projects:
* docker
* vagrant
* private cloud(ssh access)
* ec2
Please, take a look at Kafka documentation [2]

> I can continue more on this, but it should be enough for now:

We need to go deeper! :)

[1]  https://ducktape-docs.readthedocs.io/en/latest/run_tests.html#options
[2] https://github.com/apache/kafka/tree/trunk/tests#ec2-quickstart

> 9 июня 2020 г., в 17:25, Max A. Shonichev  написал(а):
> 
> Greetings, Nikolay,
> 
> First of all, thank you for you great effort preparing PoC of integration 
> testing to Ignite community.
> 
> It’s a shame Ignite did not have at least some such tests yet, however, 
> GridGain, as a major contributor to Apache Ignite had a profound collection 
> of in-house tools to perform integration and performance testing for years 
> already and while we slowly consider sharing our expertise with the 
> community, your initiative makes us drive that process a bit faster, thanks a 
> lot!
> 
> I reviewed your PoC and want to share a little about what we do on our part, 
> why and how, hope it would help community take proper course.
> 
> First I’ll do a brief overview of what decisions we made and what we do have 
> in our private code base, next I’ll describe what we have already donated to 
> the public and what we plan public next, then I’ll compare both approaches 
> highlighting deficiencies in order to spur public discussion on the matter.
> 
> It might seem strange to use Python to run Bash to run Java applications 
> because that introduces IT industry best of breed’ – the Python dependency 
> hell – to the Java application code base. The only strangest decision one can 
> made is to use Maven to run Docker to run Bash to run Python to 

[jira] [Created] (IGNITE-13154) Introduce aility to manage manage binary types by the users

2020-06-16 Thread Taras Ledkov (Jira)
Taras Ledkov created IGNITE-13154:
-

 Summary: Introduce aility to manage manage binary types by the 
users
 Key: IGNITE-13154
 URL: https://issues.apache.org/jira/browse/IGNITE-13154
 Project: Ignite
  Issue Type: Improvement
  Components: binary
Reporter: Taras Ledkov
Assignee: Taras Ledkov
 Fix For: 2.9


We need a way to change schema (including unsupported changes, such as column 
type change) without cluster restart. This is for the case when all data 
associated with the binary type has been removed, so removing the old schema is 
safe.

Now users must stop the cluster and remove the folder with binary metadata 
manually.

The proposed way is to introduce internal API to manage binary types and public 
command line interface (via control.sh). That way one can remove a cache from 
the cluster, then unregister corresponding binary types, then launch a new 
version of an application that would register the new schema and reload the 
data.

*The current implementation has restrictions:*
- all cluster nodes must support remove type feature.
- the cluster must not contains data with type to remove.
- operation of the update type must not be launched on the cluster for the type 
to remove (operation examples: put into cache, BinaryObjectBuilder#build).
- client nodes process metadata operation asynchronously so type may be removed 
at the client after any delay after the remove type operation is completed.
- if the node that contains the old version of the type joins to the cluster 
where type was removed the type is propagated to cluster metadata (because 
metadata tombstone not supported).
- if the node that contains the old version of the type cannot join to the 
cluster where type was removed and then updated to the new version (because 
metadata versioned tombstone not supported).

So, user scenarios looks like:
# Be sure that all server nodes supports remove type feature.
# Remove caches contains the data with type to remove.
# Stops the client node with older version.
# Stops all operation with type to remove (don't create binary objects, don't 
run compute jobs with type to remove).
# Remove the type on the stable topology (and production destination topolog).
# Waits any delay (depends on the cluster size and clients count)
# Produce operations with new version of the type.

*Proposed command line interface*
New commands (all commands are _experimental_ ):
- {{--meta list}} prints info about all available binary types:
{{typeId=, typeName=, fields=, schemas=, 
isEnum=}}
- {{\-\-meta details (\-\- typeId | \-\-typeName )}} prints detailed 
info info about specified type. The type may be specified by type name or type 
ID.
output example:
{code}
typeId=0x1FBFBC0C (532659212)
typeName=TypeName1
Fields:
  name=fld3, type=long[], fieldId=0x2FFF95 (3145621)
  name=fld2, type=double, fieldId=0x2FFF94 (3145620)
  name=fld1, type=Date, fieldId=0x2FFF93 (3145619)
  name=fld0, type=int, fieldId=0x2FFF92 (3145618)
Schemas:
  schemaId=0x6C5CC179 (1818018169), fields=[fld0]
  schemaId=0x70E46431 (1894016049), fields=[fld0, fld1, fld2, fld3]
{code}
- {{\-\-meta remove (\-\- typeId | \-\-typeName ) [\-\-out 
]}} removes metadata for specified type form cluster and saves the 
removed metadata to the specified file. If the file name isn't specified the 
output file name is: {{.bin}}
The command requires confirmation.
*N.B.*: The all session of thin clients (ODBC, JDBC, thin client) are closed 
(to cleanup local cache of the binary metadata).
- {{\-\-meta update \-\-in ]}} update cluster metadata from 
specified file (file name is required)
The command requires confirmation.




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


Reviewer request: [IGNITE-13144] Improve ClusterState enum and other minor improvements for the cluster read-only mode.

2020-06-16 Thread Sergey Antonov
Hello, Igniters!

I'd like to get a review of the ticket [1]. The patch is ready [2].
Can someone look at it, please?

[1] https://issues.apache.org/jira/browse/IGNITE-13144
[2] https://github.com/apache/ignite/pull/7924

-- 
BR, Sergey Antonov


[jira] [Created] (IGNITE-13153) Fix CammandHandler user Attributes

2020-06-16 Thread Sergei Ryzhov (Jira)
Sergei Ryzhov created IGNITE-13153:
--

 Summary: Fix CammandHandler user Attributes
 Key: IGNITE-13153
 URL: https://issues.apache.org/jira/browse/IGNITE-13153
 Project: Ignite
  Issue Type: Task
Reporter: Sergei Ryzhov
Assignee: Sergei Ryzhov


Fix CammandHandler user attributes for used certificate when CammandHandler 
used with SSL



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