At the moment, 3.0. I'm flexible, though - I'll take anything that's considered a "production level" release.
First I would recommend rolling up to 3.2.5 (but that's optional).
Secondly - prior to some deep and meaningful thinking I would suggest your use coordination. What your describing is a situation that I've had to deal with several times in the past - in effect you have a family of objects and objects need an extra level of coordination. Typically this can be addressed by declaring a dependency from each member of the family of components on a singleton coordinator instance. The coordinator is supplied to all of the members of the family, all of the children register back with the coordinator during deployment, and when the coordinator is happy that all of the children are ready-willing-and-able, the coordinator trips a "go" event. One thing to be careful to do is to post each event in a separate thread (at least that's what I've done in the past).
More generally speaking - the notion of families of components that are tied one way or another is a issue that I'm come across on multiple occurs and its something that is not expressed in the component model. I think its a subject that should be considered my deeply - probably deserves a post over on [EMAIL PROTECTED]
Anyway - do you think the addition of a coordination component will resolve the problem your dealing with. If no - please let us know and we dig deeper.
Cheers, Stephen.
On Sun, 2004-03-07 at 18:55, Stephen McConnell wrote:
Quick question .. which version of Merlin are you running on?
Steve.
Scott Brickner wrote:
I've got a network server application I've built to run under Merlin, and most things are working just fine, with one exception - and it's a big one.
I've got a component that's responsible for managing new connections from clients. It uses java.nio and generates SEDA-like events to the rest of the system to process input data.
My problem comes at system startup. Since most of the world depends (at least transitively) on this acceptor component, Merlin deploys it first. It creates the ServerSocketChannel during configure(), and starts a thread to do the select() in start().
While Merlin's still busily setting up the rest of the components that make up the application, the clients are already starting to make connections. These connections back up in the acceptor's output queue until each of its successor components get deployed.
This wouldn't be unreasonable if there were just a small handful of connections, but the clients are automatically trying to reconnect when they lose their connection to the server, so on a server restart I get a few thousand new connections by the time the system's *really* deployed.
This ends up with the work queues so backed up that the server's response time goes over the threshold that makes the client think there's a network problem and re-establish yet *another* connection, making things even worse.
So, my question is, is there any way I can discover when all of the "activation='startup'" components have been fully deployed so I can use that event to trigger the acceptor component to open the flood gates?
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--
|------------------------------------------------| | Magic by Merlin | | Production by Avalon | | | | http://avalon.apache.org/merlin | | http://dpml.net/merlin/distributions/latest | |------------------------------------------------|
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
