Hi all,
This is (hopefully) just a short write-up of some prototyping Volcane and I
have done today.
Here's what I did:
* Added a CatalogRequest class to indicate that a compile is needed
* Modified the agent to submit a CatalogRequest into a Stomp queue and block
waiting for a catalog to appear on a different (per-host) queue
* Created a new 'compiler' daemon (run as 'puppet compiler') to pull
CatalogRequests off of the queue, compile the catalogs, and store the results
into a different queue
Thus, we have completely asynchronous compiles - the client currently blocks
waiting for a catalog, but it doesn't really have to. You could start one
compiler process or 1000, because they're share-nothing and they have no state
other than the individual catalog being compiled.
I've pushed the code into a 'feature/master/asynchrony' branch in my repo on
github.
Downsides of my implementation, from my commit:
* It's a big conglomeration of hack, just to prove the idea
* It adds some unrelated stuff
* It completely breaks our existing Queue class
* There aren't any tests for any of the new work
Additional downsides:
* The Queueing subsystem has very clearly become separate from the
Indirector subsystem, with duplicated and confusing effort
* I'd hoped to have an option that had the client still speaking http to
the server and the server doing all of the async bits, so you wouldn't need to
upgrade your client to get this functionality, but I did not succeed. I think
I could do it now, though.
Questions I have from this:
* Is this useful enough to make sure it's in 2.7 (which should be out in
December)?
* Do you have any comments or concerns on the basic idea?
* Should we attempt to reconcile the model of the queueing and indirector
systems, or should we just have a sync and async subsystem that are nearly
entirely separate? *shudder*
More later, as we get further into the testing and such.
--
The time to repair the roof is when the sun is shining.
-- John F. Kennedy
---------------------------------------------------------------------
Luke Kanies -|- http://puppetlabs.com -|- +1(615)594-8199
--
You received this message because you are subscribed to the Google Groups
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-dev?hl=en.