Re: [DISCUSSION] IEP-103: Code Deployment in Apache Ignite 3

2023-07-20 Thread Andrey Gura
One more change to the original IEP. The "Dependency resolving and
class loading" section [1] proposes to throw an instance of
ClassNotFoundException for cases where a deployment unit is not found
or can't be used. The same exception should be thrown in cases where a
class loader is not able to load a required class. The problem here is
existing non-Java clients which should be able to distinguish a
regular standard Java exception from Ignite specific exception and
provide to a user a descriptive error message with an error code. Also
a compute job/task could throw a task specific or an unexpected
exception. It also should be taken into account and a separate public
exception should be added for this purpose.

Given this I propose to add two public exceptions:

- DeploymentUnitUnavailableException - have to be thrown if a required
deployment unit is not found (actually it is not deployed) or if a
required deployment unit is obsolete and can't be used in a code
execution.
- ComputeExecutionException - a CompletableFuture instance returned
from the Compute API method has to be completed with an instance of
this exception in case of any other error raised during code
execution.

Corresponding changes have been made to the IEP.

1. 
https://cwiki.apache.org/confluence/display/IGNITE/IEP-103%3A+Code+Deployment#IEP103:CodeDeployment-Dependencyresolvingandclassloading

On Tue, May 23, 2023 at 8:19 PM Andrey Gura  wrote:
>
> Hi, Igniters!
>
> Please take a look at the proposal for Code Deployment functionality
> in Apache Ignite 3 [1].
>
> Thanks for any feedback!
>
> 1. 
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-103%3A+Code+Deployment


Re: [DISCUSSION] IEP-103: Code Deployment in Apache Ignite 3

2023-07-10 Thread Andrey Gura
Folks,

due to the impossibility of timely detection of changing of a leader
in a replication group I've changed the section "Unit deployment
process" [1]. Now it is enough to deploy a deployment unit to a
replica group majority without mandatory inclusion of a leader.

1. 
https://cwiki.apache.org/confluence/display/IGNITE/IEP-103:+Code+Deployment#IEP103:CodeDeployment-Unitdeploymentprocess

On Tue, May 23, 2023 at 8:19 PM Andrey Gura  wrote:
>
> Hi, Igniters!
>
> Please take a look at the proposal for Code Deployment functionality
> in Apache Ignite 3 [1].
>
> Thanks for any feedback!
>
> 1. 
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-103%3A+Code+Deployment


Re: [DISCUSSION] IEP-103: Code Deployment in Apache Ignite 3

2023-05-30 Thread Vadim Pakhnushev
Let me also include the long descriptions so it should hopefully be clearer
now:

In REPL mode:

Usage:  cluster unit list [-hv] [-u=] [--status=[,
  ...]]... [
[--version=]]
Shows a list of deployed units
Deployment unit id
  -h, --helpShow help for the specified command
  --status=[,...]
Filters out deployment unit by status
  -u, --cluster-endpoint-url=
URL of cluster endpoint
  -v, --verbose Show additional information: logs, REST calls
  --version=   Filters out deployment unit by version (exact
match
  assumed)

Usage:  node unit list [-hv] [--status=[,...]]...
[
   [--version=]] [-u= | -n=]
Shows a list of deployed units
 Deployment unit id
  -h, --help Show help for the specified command
  -n, --node-name= Name of an Ignite node
  --status=[,...]
 Filters out deployment unit by status
  -u, --node-url=   URL of an Ignite node
  -v, --verbose  Show additional information: logs, REST calls
  --version=Filters out deployment unit by version (exact
   match assumed)

In non-REPL mode:

Usage: ignite cluster unit list [-hv] [-p=] [-u=]
[--status=[,...]]...
[ [--version=]]
Shows a list of deployed units
Deployment unit id
  -h, --helpShow help for the specified command
  -p, --profile=
Profile name
  --status=[,...]
Filters out deployment unit by status
  -u, --cluster-endpoint-url=
URL of cluster endpoint
  -v, --verbose Show additional information: logs, REST calls
  --version=   Filters out deployment unit by version (exact
match
  assumed)

Usage: ignite node unit list [-hv] [-p=] [--status=[,
 ...]]... [
 [--version=]] [-u= |
 -n=]
Shows a list of deployed units
 Deployment unit id
  -h, --help Show help for the specified command
  -n, --node-name= URL of ignite node
  -p, --profile=
 Profile name
  --status=[,...]
 Filters out deployment unit by status
  -u, --node-url=   URL of an Ignite node
  -v, --verbose  Show additional information: logs, REST calls
  --version=Filters out deployment unit by version (exact
   match assumed)

On Mon, May 29, 2023 at 11:30 AM Vadim Pakhnushev 
wrote:

> Andrey,
>
> For reference, this is the short usage help of these commands in REPL mode:
> Usage:  cluster unit list [-hv] [-u=]
>   [--status=[,...]]...
> [ [--version=]]
> Usage:  node unit list [-hv] [-u= | -n=]
>   [--status=[,...]]...
> [ [--version=]]
>
> And in non-REPL mode:
> Usage: ignite cluster unit list [-hv] [-p=] [-u=]
>   [--status=[,...]]...
> [ [--version=]]
> Usage: ignite node unit list [-hv] [-p=] [-u=]
>   [--status=[,...]]...
> [ [--version=]]
>
> The cluster/node urls/names options are consistent across all cluster/node
> specific commands, like the cluster/node config or cluster init and node
> metric.
>
> On Fri, May 26, 2023 at 11:04 AM Vadim Pakhnushev 
> wrote:
>
>> Andrey,
>> Sorry, I omitted the `--node-url` option which is common for all `node
>> ...` commands.
>> So in the non-REPL mode there's a `--node-url` option, and in the REPL
>> mode there's also a `--node-name`, which takes a consistent id.
>>
>> On Thu, May 25, 2023 at 11:03 PM Andrey Gura  wrote:
>>
>>> Vadim,
>>>
>>> > Likewise, the `node unit list` command will list only node statuses so
>>> the
>>> `nodeId` is redundant because it will be called on the particular node
>>> endpoint.
>>>
>>> I still don't understand about the `node unit list`. The suggested
>>> syntax is:
>>>
>>> node unit list [nodeId [--version version]] [--status ...]
>>>
>>> If nodeId is redundant so how will the CLI know a target node? It
>>> means that we have to specify the node. But `nodeId` is not mandatory.
>>> I'm confused. It seems that the suggested syntax is not correct.
>>>
>>> On Thu, May 25, 2023 at 6:40 PM Vadim Pakhnushev
>>>  wrote:
>>> >
>>> > The `nodeId` parameter is not required for the `cluster unit list`
>>> because
>>> > we will list only cluster statuses.
>>> > Likewise, the `node unit list` command will list only node statuses so
>>> the
>>> > `nodeId` is redundant because it will be called on the particular node
>>> > endpoint.
>>> >
>>> > On Thu, May 25, 2023 at 6:18 PM Andrey Gura  wrote:
>>> >
>>> > > Hi, Vadim!
>>> > >
>>> > > Why is the `nodeId` parameter not required in the 

Re: [DISCUSSION] IEP-103: Code Deployment in Apache Ignite 3

2023-05-29 Thread Vadim Pakhnushev
Andrey,

For reference, this is the short usage help of these commands in REPL mode:
Usage:  cluster unit list [-hv] [-u=]
  [--status=[,...]]...
[ [--version=]]
Usage:  node unit list [-hv] [-u= | -n=]
  [--status=[,...]]...
[ [--version=]]

And in non-REPL mode:
Usage: ignite cluster unit list [-hv] [-p=] [-u=]
  [--status=[,...]]...
[ [--version=]]
Usage: ignite node unit list [-hv] [-p=] [-u=]
  [--status=[,...]]...
[ [--version=]]

The cluster/node urls/names options are consistent across all cluster/node
specific commands, like the cluster/node config or cluster init and node
metric.

On Fri, May 26, 2023 at 11:04 AM Vadim Pakhnushev 
wrote:

> Andrey,
> Sorry, I omitted the `--node-url` option which is common for all `node
> ...` commands.
> So in the non-REPL mode there's a `--node-url` option, and in the REPL
> mode there's also a `--node-name`, which takes a consistent id.
>
> On Thu, May 25, 2023 at 11:03 PM Andrey Gura  wrote:
>
>> Vadim,
>>
>> > Likewise, the `node unit list` command will list only node statuses so
>> the
>> `nodeId` is redundant because it will be called on the particular node
>> endpoint.
>>
>> I still don't understand about the `node unit list`. The suggested syntax
>> is:
>>
>> node unit list [nodeId [--version version]] [--status ...]
>>
>> If nodeId is redundant so how will the CLI know a target node? It
>> means that we have to specify the node. But `nodeId` is not mandatory.
>> I'm confused. It seems that the suggested syntax is not correct.
>>
>> On Thu, May 25, 2023 at 6:40 PM Vadim Pakhnushev
>>  wrote:
>> >
>> > The `nodeId` parameter is not required for the `cluster unit list`
>> because
>> > we will list only cluster statuses.
>> > Likewise, the `node unit list` command will list only node statuses so
>> the
>> > `nodeId` is redundant because it will be called on the particular node
>> > endpoint.
>> >
>> > On Thu, May 25, 2023 at 6:18 PM Andrey Gura  wrote:
>> >
>> > > Hi, Vadim!
>> > >
>> > > Why is the `nodeId` parameter not required in the suggested syntax of
>> > > `cluster unit list` and `node unit list` commands?
>> > >
>> > > What does the `nodeId` parameter mean in the `cluster unit list`
>> command?
>> > >
>> > >
>> > > On Thu, May 25, 2023 at 12:34 PM Vadim Pakhnushev
>> > >  wrote:
>> > > >
>> > > > Hi Andrey!
>> > > >
>> > > > I have a small suggestion regarding the design of the CLI commands.
>> > > > Since we already have a cluster/node namespaces in the CLI, I'd
>> suggest
>> > > > moving the deploy/undeploy/list commands to the cluster subcommand,
>> and
>> > > > rather than using --node option to list the units on the particular
>> node,
>> > > > use node namespace for the list command which will be operating on
>> the
>> > > node
>> > > > level.
>> > > > So the whole list of commands would be:
>> > > > cluster unit deploy/undeploy - stay the same
>> > > > cluster unit list [nodeId [--version version]] [--status ...] -
>> without
>> > > the
>> > > > --node option
>> > > > node unit list [nodeId [--version version]] [--status ...] - same
>> > > filters,
>> > > > but will show the node unit statuses rather than cluster statuses.
>> > > >
>> > > > WDYT?
>> > > >
>> > > > Thanks,
>> > > > Vadim
>> > > >
>> > > > On Tue, May 23, 2023 at 8:19 PM Andrey Gura 
>> wrote:
>> > > >
>> > > > > Hi, Igniters!
>> > > > >
>> > > > > Please take a look at the proposal for Code Deployment
>> functionality
>> > > > > in Apache Ignite 3 [1].
>> > > > >
>> > > > > Thanks for any feedback!
>> > > > >
>> > > > > 1.
>> > > > >
>> > >
>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-103%3A+Code+Deployment
>> > > > >
>> > >
>>
>


Re: [DISCUSSION] IEP-103: Code Deployment in Apache Ignite 3

2023-05-26 Thread Vadim Pakhnushev
Andrey,
Sorry, I omitted the `--node-url` option which is common for all `node ...`
commands.
So in the non-REPL mode there's a `--node-url` option, and in the REPL mode
there's also a `--node-name`, which takes a consistent id.

On Thu, May 25, 2023 at 11:03 PM Andrey Gura  wrote:

> Vadim,
>
> > Likewise, the `node unit list` command will list only node statuses so
> the
> `nodeId` is redundant because it will be called on the particular node
> endpoint.
>
> I still don't understand about the `node unit list`. The suggested syntax
> is:
>
> node unit list [nodeId [--version version]] [--status ...]
>
> If nodeId is redundant so how will the CLI know a target node? It
> means that we have to specify the node. But `nodeId` is not mandatory.
> I'm confused. It seems that the suggested syntax is not correct.
>
> On Thu, May 25, 2023 at 6:40 PM Vadim Pakhnushev
>  wrote:
> >
> > The `nodeId` parameter is not required for the `cluster unit list`
> because
> > we will list only cluster statuses.
> > Likewise, the `node unit list` command will list only node statuses so
> the
> > `nodeId` is redundant because it will be called on the particular node
> > endpoint.
> >
> > On Thu, May 25, 2023 at 6:18 PM Andrey Gura  wrote:
> >
> > > Hi, Vadim!
> > >
> > > Why is the `nodeId` parameter not required in the suggested syntax of
> > > `cluster unit list` and `node unit list` commands?
> > >
> > > What does the `nodeId` parameter mean in the `cluster unit list`
> command?
> > >
> > >
> > > On Thu, May 25, 2023 at 12:34 PM Vadim Pakhnushev
> > >  wrote:
> > > >
> > > > Hi Andrey!
> > > >
> > > > I have a small suggestion regarding the design of the CLI commands.
> > > > Since we already have a cluster/node namespaces in the CLI, I'd
> suggest
> > > > moving the deploy/undeploy/list commands to the cluster subcommand,
> and
> > > > rather than using --node option to list the units on the particular
> node,
> > > > use node namespace for the list command which will be operating on
> the
> > > node
> > > > level.
> > > > So the whole list of commands would be:
> > > > cluster unit deploy/undeploy - stay the same
> > > > cluster unit list [nodeId [--version version]] [--status ...] -
> without
> > > the
> > > > --node option
> > > > node unit list [nodeId [--version version]] [--status ...] - same
> > > filters,
> > > > but will show the node unit statuses rather than cluster statuses.
> > > >
> > > > WDYT?
> > > >
> > > > Thanks,
> > > > Vadim
> > > >
> > > > On Tue, May 23, 2023 at 8:19 PM Andrey Gura 
> wrote:
> > > >
> > > > > Hi, Igniters!
> > > > >
> > > > > Please take a look at the proposal for Code Deployment
> functionality
> > > > > in Apache Ignite 3 [1].
> > > > >
> > > > > Thanks for any feedback!
> > > > >
> > > > > 1.
> > > > >
> > >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-103%3A+Code+Deployment
> > > > >
> > >
>


Re: [DISCUSSION] IEP-103: Code Deployment in Apache Ignite 3

2023-05-25 Thread Andrey Gura
Vadim,

> Likewise, the `node unit list` command will list only node statuses so the
`nodeId` is redundant because it will be called on the particular node
endpoint.

I still don't understand about the `node unit list`. The suggested syntax is:

node unit list [nodeId [--version version]] [--status ...]

If nodeId is redundant so how will the CLI know a target node? It
means that we have to specify the node. But `nodeId` is not mandatory.
I'm confused. It seems that the suggested syntax is not correct.

On Thu, May 25, 2023 at 6:40 PM Vadim Pakhnushev
 wrote:
>
> The `nodeId` parameter is not required for the `cluster unit list` because
> we will list only cluster statuses.
> Likewise, the `node unit list` command will list only node statuses so the
> `nodeId` is redundant because it will be called on the particular node
> endpoint.
>
> On Thu, May 25, 2023 at 6:18 PM Andrey Gura  wrote:
>
> > Hi, Vadim!
> >
> > Why is the `nodeId` parameter not required in the suggested syntax of
> > `cluster unit list` and `node unit list` commands?
> >
> > What does the `nodeId` parameter mean in the `cluster unit list` command?
> >
> >
> > On Thu, May 25, 2023 at 12:34 PM Vadim Pakhnushev
> >  wrote:
> > >
> > > Hi Andrey!
> > >
> > > I have a small suggestion regarding the design of the CLI commands.
> > > Since we already have a cluster/node namespaces in the CLI, I'd suggest
> > > moving the deploy/undeploy/list commands to the cluster subcommand, and
> > > rather than using --node option to list the units on the particular node,
> > > use node namespace for the list command which will be operating on the
> > node
> > > level.
> > > So the whole list of commands would be:
> > > cluster unit deploy/undeploy - stay the same
> > > cluster unit list [nodeId [--version version]] [--status ...] - without
> > the
> > > --node option
> > > node unit list [nodeId [--version version]] [--status ...] - same
> > filters,
> > > but will show the node unit statuses rather than cluster statuses.
> > >
> > > WDYT?
> > >
> > > Thanks,
> > > Vadim
> > >
> > > On Tue, May 23, 2023 at 8:19 PM Andrey Gura  wrote:
> > >
> > > > Hi, Igniters!
> > > >
> > > > Please take a look at the proposal for Code Deployment functionality
> > > > in Apache Ignite 3 [1].
> > > >
> > > > Thanks for any feedback!
> > > >
> > > > 1.
> > > >
> > https://cwiki.apache.org/confluence/display/IGNITE/IEP-103%3A+Code+Deployment
> > > >
> >


Re: [DISCUSSION] IEP-103: Code Deployment in Apache Ignite 3

2023-05-25 Thread Vadim Pakhnushev
The `nodeId` parameter is not required for the `cluster unit list` because
we will list only cluster statuses.
Likewise, the `node unit list` command will list only node statuses so the
`nodeId` is redundant because it will be called on the particular node
endpoint.

On Thu, May 25, 2023 at 6:18 PM Andrey Gura  wrote:

> Hi, Vadim!
>
> Why is the `nodeId` parameter not required in the suggested syntax of
> `cluster unit list` and `node unit list` commands?
>
> What does the `nodeId` parameter mean in the `cluster unit list` command?
>
>
> On Thu, May 25, 2023 at 12:34 PM Vadim Pakhnushev
>  wrote:
> >
> > Hi Andrey!
> >
> > I have a small suggestion regarding the design of the CLI commands.
> > Since we already have a cluster/node namespaces in the CLI, I'd suggest
> > moving the deploy/undeploy/list commands to the cluster subcommand, and
> > rather than using --node option to list the units on the particular node,
> > use node namespace for the list command which will be operating on the
> node
> > level.
> > So the whole list of commands would be:
> > cluster unit deploy/undeploy - stay the same
> > cluster unit list [nodeId [--version version]] [--status ...] - without
> the
> > --node option
> > node unit list [nodeId [--version version]] [--status ...] - same
> filters,
> > but will show the node unit statuses rather than cluster statuses.
> >
> > WDYT?
> >
> > Thanks,
> > Vadim
> >
> > On Tue, May 23, 2023 at 8:19 PM Andrey Gura  wrote:
> >
> > > Hi, Igniters!
> > >
> > > Please take a look at the proposal for Code Deployment functionality
> > > in Apache Ignite 3 [1].
> > >
> > > Thanks for any feedback!
> > >
> > > 1.
> > >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-103%3A+Code+Deployment
> > >
>


Re: [DISCUSSION] IEP-103: Code Deployment in Apache Ignite 3

2023-05-25 Thread Andrey Gura
Hi, Vadim!

Why is the `nodeId` parameter not required in the suggested syntax of
`cluster unit list` and `node unit list` commands?

What does the `nodeId` parameter mean in the `cluster unit list` command?


On Thu, May 25, 2023 at 12:34 PM Vadim Pakhnushev
 wrote:
>
> Hi Andrey!
>
> I have a small suggestion regarding the design of the CLI commands.
> Since we already have a cluster/node namespaces in the CLI, I'd suggest
> moving the deploy/undeploy/list commands to the cluster subcommand, and
> rather than using --node option to list the units on the particular node,
> use node namespace for the list command which will be operating on the node
> level.
> So the whole list of commands would be:
> cluster unit deploy/undeploy - stay the same
> cluster unit list [nodeId [--version version]] [--status ...] - without the
> --node option
> node unit list [nodeId [--version version]] [--status ...] - same filters,
> but will show the node unit statuses rather than cluster statuses.
>
> WDYT?
>
> Thanks,
> Vadim
>
> On Tue, May 23, 2023 at 8:19 PM Andrey Gura  wrote:
>
> > Hi, Igniters!
> >
> > Please take a look at the proposal for Code Deployment functionality
> > in Apache Ignite 3 [1].
> >
> > Thanks for any feedback!
> >
> > 1.
> > https://cwiki.apache.org/confluence/display/IGNITE/IEP-103%3A+Code+Deployment
> >


Re: [DISCUSSION] IEP-103: Code Deployment in Apache Ignite 3

2023-05-25 Thread Vadim Pakhnushev
Hi Andrey!

I have a small suggestion regarding the design of the CLI commands.
Since we already have a cluster/node namespaces in the CLI, I'd suggest
moving the deploy/undeploy/list commands to the cluster subcommand, and
rather than using --node option to list the units on the particular node,
use node namespace for the list command which will be operating on the node
level.
So the whole list of commands would be:
cluster unit deploy/undeploy - stay the same
cluster unit list [nodeId [--version version]] [--status ...] - without the
--node option
node unit list [nodeId [--version version]] [--status ...] - same filters,
but will show the node unit statuses rather than cluster statuses.

WDYT?

Thanks,
Vadim

On Tue, May 23, 2023 at 8:19 PM Andrey Gura  wrote:

> Hi, Igniters!
>
> Please take a look at the proposal for Code Deployment functionality
> in Apache Ignite 3 [1].
>
> Thanks for any feedback!
>
> 1.
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-103%3A+Code+Deployment
>