On 10/30/07, ant elder <[EMAIL PROTECTED]> wrote:
>
> On 10/30/07, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
> >
> > Simon Laws wrote:
> > > On 10/30/07, ant elder <[EMAIL PROTECTED]> wrote:
> > >
> > >> On 10/30/07, Simon Laws <[EMAIL PROTECTED]> wrote:
> > >>
> > >>>
> > >>> On 10/30/07, ant elder <[EMAIL PROTECTED]> wrote:
> > >>>
> > >>>> On 10/30/07, ant elder <[EMAIL PROTECTED]> wrote:
> > >>>>
> > >>>>>
> > >>>>> On 10/30/07, Simon Laws <[EMAIL PROTECTED] > wrote:
> > >>>>>
> > >>>>>> On 10/30/07, ant elder <[EMAIL PROTECTED]> wrote:
> > >>>>>>
> > >>>>>>> If you've an SCANode that is already running (you've added
> > >>>>>>>
> > >>>> composites
> > >>>>
> > >>>>>> and
> > >>>>>>
> > >>>>>>> started the node) and then you add additional composites there
> > >>>>>>>
> > >>>> doesn't
> > >>>>
> > >>>>>>> seem
> > >>>>>>> to be any way to start just those newly added composites. I can
> > >>>>>>>
> > >>>> call
> > >>>>
> > >>>>>>> SCANode.start and that kind of works but it starts all the
> > >>>>>>>
> > >>>> existing
> > >>>>
> > >>>>>>> already
> > >>>>>>> started composites as well so makes a bit of a mess duplicated
> > >>>>>>>
> > >>>> various
> > >>>>
> > >>>>>>> things. Is this something thats planed to be fixed or should I
> > >>>>>>>
> > >> go
> > >>
> > >>>>>> ahead
> > >>>>>>
> > >>>>>>> and
> > >>>>>>> add a way to do this?
> > >>>>>>>
> > >>>>>>>    ...ant
> > >>>>>>>
> > >>>>>>>
> > >>>>>> Ant
> > >>>>>>
> > >>>>>> When we discussed the domain/node API  a few weeks ago there was
> a
> > >>>>>> suggestion that we restrict to the node so that there is no fine
> > >>>>>>
> > >>>> grained
> > >>>>
> > >>>>>> control over starting the individual artifacts that a node is
> > >>>>>> responsible
> > >>>>>> for. So the lifecycle is:
> > >>>>>>
> > >>>>>> create node
> > >>>>>> add contributions
> > >>>>>> add composites to domain (indicate which composites are to run)
> > >>>>>> start composites
> > >>>>>> stop composites
> > >>>>>> remove contributions
> > >>>>>> destroy node
> > >>>>>>
> > >>>>>> So you spend some time configuring the node then you start it.
> > >>>>>>
> > >> There
> > >>
> > >>>>>> have
> > >>>>>> been some changes to the code recently but I believe this is how
> > >>>>>>
> > >> it
> > >>
> > >>>>>> works at
> > >>>>>> the moment. I'm looking at the code now to get back up to speed.
> > >>>>>>
> > >>>>>> This is an issue for both nodes and domain. .
> > >>>>>>
> > >>>>>> Firstly, as you say, in the case where you are just working with
> a
> > >>>>>>
> > >>>> node
> > >>>>
> > >>>>>> you
> > >>>>>> can't add a new contribution and start it once the node is
> running
> > >>>>>> without
> > >>>>>> doing a stop() to stop all the running components first and then
> a
> > >>>>>> start()
> > >>>>>> to restart everything. The benefit of this is at least it is a
> > >>>>>>
> > >>>> simple
> > >>>>
> > >>>>>> model
> > >>>>>> but there may be unintended consequences of doing this. I haven't
> > >>>>>>
> > >>>> tried
> > >>>>
> > >>>>>> this
> > >>>>>> yet with the new code changes but I will do shortly.
> > >>>>>>
> > >>>>>> Secondly, at the domain level we have provided a method for
> > >>>>>>
> > >> starting
> > >>
> > >>>>>> individually named composites. The intention here is that domain
> > >>>>>>
> > >>>> finds
> > >>>>
> > >>>>>> the
> > >>>>>> node with the named composite and starts it there. This suffers
> > >>>>>>
> > >> from
> > >>
> > >>>> the
> > >>>>
> > >>>>>> same problem that you face if a contribution has more than one
> > >>>>>>
> > >>>> composite
> > >>>>
> > >>>>>> in
> > >>>>>> it, i.e. subsequent composite start requests can target the same
> > >>>>>>
> > >>>> node.
> > >>>>
> > >>>>>> Again
> > >>>>>> this should still work if the domain first stops the node and
> then
> > >>>>>> starts
> > >>>>>> it.
> > >>>>>>
> > >>>>> I'm not clear if thats saying that the intended design is that the
> > >>>>>
> > >>>> only
> > >>>>
> > >>>>> way to add new contributions to an existing domain is by stopping
> > >>>>>
> > >> and
> > >>
> > >>>>> restarting, or that  this is just a  limitation of the
> > >>>>>
> > >> current  code?
> > >>
> > >>>> Sorry typo in that, i meant node not domain, so:
> > >>>>
> > >>>> I'm not clear if thats saying that the intended design is that the
> > >>>>
> > >> only
> > >>
> > >>>> way
> > >>>> to add new contributions to an existing node is by stopping and
> > >>>> restarting,
> > >>>> or that  this is just a  limitation of the current  code?
> > >>>>
> > >>>>    ...ant
> > >>>>
> > >>> Yes, that's how the node is intended to work today. However this is
> a
> > >>> simplification strategy which means that we don't need to keep track
> > of
> > >>>
> > >> what
> > >>
> > >>> is and isn't started in a node. There is a price to pay in terms of
> > >>> flexibility and configuration performance. This means we may find
> that
> > >>>
> > >> this
> > >>
> > >>> isn't satisfactory and have to change so if this just doesn't work
> in
> > >>>
> > >> the
> > >>
> > >>> hot update web app case then we need to change our direction.
> > >>>
> > >>>
> > >> This seem to limiting to me and is  a regression over what we had
> > >> previously, so I'd like to enhance it to support adding contributions
> > to a
> > >> running node. Happy to take suggestions for this but otherwise I'll
> > just
> > >> add
> > >> code to the SCANode interface.
> > >>
> > >>    ...ant
> > >>
> > >>
> > > Well the conversation on the list turned into a code exercise to get a
> > > better view of what works and what doesn't. So I would say go ahead.
> > It'll
> > > give us a better view of what functions are really required rather
> than
> > just
> > > what we think are required.
> > >
> > > Simon
> > >
> > >
> >
> > My view is that the node should be as simple as possible:
> > - limited to one composite
> > - limited to the set of SCA contributions required to run the composite
> > - recyclable, a node can be reset to run another composite
> >
> > And then a server, a domain can be built out of many small nodes.
> >
> > We've been going through this several times already with different
> > versions of the domain+node API and implementations, but for some reason
> > we seem to be very quick at turning the node into a small application
> > server, running multiple composites, multiple independent contributions,
> > with lifecycle management for these composites and contributions,
> > in-memory wiring and re-wiring with composites coming and going etc.
> > This may be very well be a valid approach but I'd like to explore the
> > "simple single-composite node".
> >
> > How should I do this? Should I create a new SCASimpleNode or
> > SCALimitedNode to let you add the more sophisticated features you need
> > to the SCANode? or can we try to keep SCANode really simple for a while?
>
>
> Not sure if I completely agree with all that but I guess I can't seem the
> harm in having a SCASimpleNode if you want that while things are still
> evolving. And then before 1.1 we can review where things are at and
> refactor
> as appropriate.
>
>    ...ant
>
The simple node approach has been working well in the case where the domain
is in charge. It presents a problem if you want to control the world from a
single node and run multiple composites that are added/started incrementally
in a single JVM.

This is not a question about the details of the API though but about what a
node is for (which then of course dictates the API). If we feel a node is
sufficiently lightweight that we can pop one into existence when we need to
run a composite then that is good but is a different mindset from the one
that says the runtime is sufficiently heavyweight that we have to be able to
reuse it and hence load it up with many composites.

I suspect that where we each sit in the 1 composite per node vs n composites
per node spectrum is coloured by our perception of how many resources it
takes to start a node. I have no evidence one way or the other but I would
like us to be slick enough to pop up a node when one is required if nothing
else as an aspiration to create as light a weight runtime as possible.

I not so concerned that there is a new method in the API now if it gets the
hot update function up and running today assuming that it doesn't break the
current function. This gives us a platform to see how it works and rejig it
as appropriate (including removing the new method if possible) over the next
week or so.

I am toying with the idea that these  contributions/composites in this case
should be managed through the domain proxy which has access to the local
node but it's not a fully formed though yet.

Simon

Reply via email to