Config management and installation

2005-05-15 Thread Jeremy Boynes
A couple of questions keep coming up about Geronimo's configuration 
management system; things like:

* How do I change things during installation?
* How do I change things when the server is not running?
* Are we going to give the configuration plans to users?
* WTF is all this stuff anyway?
I was going to include background here but thought it was easier to 
place it directly on the wiki. It can be found at:

http://wiki.apache.org/geronimo/Architecture/ConfigurationManagement
With that in mind, here we go ...
During installation we are really doing three things:
1) Installing the kernel and configuration management system
2) Installing the configuration bundles we want this server to run
3) Performing local-server configuration overrides
The first is easy, just install the jars and any of their dependencies 
in the appropriate place. The user will need to specify where that is, 
and will need to specify the configuration management system being used 
(e.g. what are the default Repository, ConfigurationManager and 
ConfigStore implementations).

This gives us a minimal environment where we can install other 
configuration bundles and which can run *inside the installer.* On to 
phase two.

--- Phase Two
Which configuration bundles to install will depend on just what the user 
wants this server to do: is it full J2EE or just the web teir? do they 
want the deployment system configured? is this just an app client 
environment? Based on the responses, the installer can build a list of 
configuration bundles to install, and then use the environment built in 
phase one to to install them.

This leaves us with a server environment built to the user's 
specification with standard bundles installed. That may be enough, but 
if there are local overrides needed, on to phase three.

--- Phase Three
Once the bundles have been installed, the user may still have local 
overrides. For example, we may have installed a generic HTTP connector 
listening on port 8080 and they may want to change that.

The installer has access to the Configuration instances it installed and 
to the persistent properties of the GBeans they contain. Values 
specified in the installer can be used to override those property values 
simply by setting the GBean attributes. The GBeans do not need to be 
started to do that so there is no risk of conflict with other things 
running on the system.

When the installer shuts down its kernel the GBean state will be 
persisted, ready to be restored the first time the user starts the server.

---
There is no requirement here to give the actual source plans to users. 
They don't form a very friendly UI :-) and instead we should be using 
steps in the installer for the local configuration. Is there an easy way 
to make that modular (e.g. by including helper code in the bundle itself)?

Having said that, the plans do form the ultimate definition of what the 
bundle will contain and I would include them in the distro as 
documentation and so that users don't have to get them from a source 
bundle. We did that with Gluecode's distro.

---
OK, I hope that makes some kind of sense. If it sounds vaguely familiar, 
it should do - it is very similay to how the assembly module pulls 
things together. I'd almost be tempted to describe installation as 
'assemble-on-site'.

--
Jeremy


Re: API and serialization compatibility, was: Build Failure

2005-05-15 Thread Jeremy Boynes
Tim Ellison wrote:
Jeremy Boynes <[EMAIL PROTECTED]> wrote on 14-05-2005 17:47:31:

Another thing to remember is that the only classes where serialization 
compatibility really matters are those that are actually placed in 
persistent attributes. I would hope all the projects we use do support 
serialization properly, including providing UIDs and dealing with 
version drift; if not we should encourage them to do so and help where 
necessary - it is generally a /good thing/. That will make configuration 

management easier for both system administrators as well as the runtime 
and deployment systems.

Glad you agree ;-)
   http://issues.apache.org/jira/browse/GERONIMO-644
Sure do :-)
I assigned this to me as a place holder - if you can provide patches 
that add the SUIDs I will make sure they get applied (at least in 
Geronimo and other projects where I can).

--
Jeremy


Re: [POLL] API and Implementation serialization compatibility and upgrading

2005-05-15 Thread Jeremy Boynes
Aaron Mulder wrote:
	I'd like some more information before answering this poll.  
Namely, what exactly is serialized?  I guess I was under the impression
that "configuration information" was serialized.  You make it sound like,
for example, ActiveMQ itself is serialized.  Shouldn't we be able to
serialize a bunch of settings (port=61616, active transport 1 =
vm://localhost, active transport 2 = tcp://localhost:61616, ...) and apply
those to version N+1 of ActiveMQ, so long as it didn't remove settings we
use or add new required ones without defaults that we don't use?  Are we 
just not doing that?  I guess I need to take a closer look.

	Also, wearing my end user hat, I'm not as concerned about this
issue as stated -- Every time I upgrade, for example, JBoss, I install it
into a new directory, reapply any configuration changes, and redeploy my
apps.  It might be different if the product offered an "upgrade in place"
install option.  Still, I upgrade pretty rarely.  So an easy upgrade path 
is probably for me, at best, a "nice to have".

I posted those comments I promised and hope they clarify why this is a 
big deal to me - basically, that massive deployment madates automated 
"upgrade in place"

In reality, with the model you describe applications will always get 
redeployed (and hence the config bundles rebuilt) in the new 
configuration and none of the versioning issues apply.

	I'm more concerned about the inability to conveniently edit 
serialized configuration information, which I hope to take up on the other 
thread that Jeremy was going to start.  That is a lot more of a common 
issue for me -- more of a "must have".

Let's run through the use cases there as I think there are many options 
for this.

--
Jeremy


[jira] Assigned: (GERONIMO-644) Serialized form of GBeans objects must each declare SUID

2005-05-15 Thread Jeremy Boynes (JIRA)
 [ http://issues.apache.org/jira/browse/GERONIMO-644?page=all ]

Jeremy Boynes reassigned GERONIMO-644:
--

Assign To: Jeremy Boynes

> Serialized form of GBeans objects must each declare SUID
> 
>
>  Key: GERONIMO-644
>  URL: http://issues.apache.org/jira/browse/GERONIMO-644
>  Project: Geronimo
> Type: Bug
> Reporter: Tim Ellison
> Assignee: Jeremy Boynes

>
> Since Geronimo exchanges config information via serialized form of Java 
> objects, its imperative that the serializable classes declare a 
> serialVersionUID.  If they don't then the serialized form is not necessarily 
> compatible across Java implementations (or even Java compilers) [1].
> The case in point is the wire format classes in ActiveMQ (e.g. 
> "org.codehaus.activemq.message.DefaultWireFormat") which are marked 
> serializable and do not declare a static ID.  I've tried raising this with 
> ActiveMQ [2] but without success.
> I can provide the required SUID in each case, but it looks like I might need 
> help to get it into the ActiveMQ code.
> [1] 
> http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/class.doc6.html#4100
> [2] http://article.gmane.org/gmane.comp.java.activemq.devel/486

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira



Re: [POLL] API and Implementation serialization compatibility and upgrading

2005-05-15 Thread Jeremy Boynes
Phil Steitz wrote:
Aaron Mulder wrote:

Also, wearing my end user hat, I'm not as concerned about this
issue as stated -- Every time I upgrade, for example, JBoss, I install it
into a new directory, reapply any configuration changes, and redeploy my
apps.  It might be different if the product offered an "upgrade in place"
install option.  Still, I upgrade pretty rarely.  So an easy upgrade 
path is probably for me, at best, a "nice to have".

I'm more concerned about the inability to conveniently edit 
serialized configuration information, which I hope to take up on the 
other thread that Jeremy was going to start.  That is a lot more of a 
common issue for me -- more of a "must have".

Aaron

As a user, I pretty much agree with Aaron (both points), with the 
following additional comment on the first one:

Major version upgrades are relatively rare events, but applying patches 
/ service packs / whatever they may be called is more common and 
sometimes needs to be done quickly with minimal disruption.  Having to 
redeploy all apps on a server to which a patch is applied is not ideal. 
Having strange things happen after patches are applied is even less fun ;-)

So I guess it all depends on what exactly we mean by "upgrade"...
I put my thoughts on the wiki:
http://wiki.apache.org/geronimo/Architecture/ConfigurationManagement
My expectation is that if the original server and a "patched" server can 
both provide the environment the application expects then it will run 
identically on both systems.

I would expect the change process to be something like:
* get patched version of server bundle from somewhere
* install the patched bundle in a test server
* check the existing application still runs and the problem is fixed
* build a new application bundle depending on the patched server version
you then have a couple of choices for rollout, either
* push patched server bundle to production
* pro-actively push to runtime servers, replacing the buggy server
or
* push patched server bundle to production
* push updated application bundle to production
* roll new application bundle to runtime servers as appropriate
* each runtime server will get the patched server bundle from
  config control so that it can support the new application version
and other variations of either approach.
--
Jeremy


[jira] Assigned: (GERONIMO-647) Latest GBean naming conventions

2005-05-15 Thread David Jencks (JIRA)
 [ http://issues.apache.org/jira/browse/GERONIMO-647?page=all ]

David Jencks reassigned GERONIMO-647:
-

Assign To: David Jencks

> Latest GBean naming conventions
> ---
>
>  Key: GERONIMO-647
>  URL: http://issues.apache.org/jira/browse/GERONIMO-647
>  Project: Geronimo
> Type: Bug
>  Environment: All Environments
> Reporter: anita kulshreshtha
> Assignee: David Jencks
> Priority: Minor
>  Attachments: UnavailableEJBReferenceBuilder.patch, 
> UnavailableServiceReferenceBuilder.patch, UnavailableWebServiceBuilder.patch
>
> Following classes need to be updated to reflect the latest GBean naming 
> conventions: 
>UnavailableEJBReferenceBuilder.java
>UnavailableServiceReferenceBuilder.java
>UnavailableWebServiceBuilder.java

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira