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

Reply via email to