Hey Robbie,
Thanks for the comprehensive response - all useful stuff, always on the bleeding edge me :-)
as in "it's not bleeding working again" :-D

It's fun to know "I think you are the first to ever ask about a change ". I guess that I had assumed that a plugin architecture was intended to be used for erm plugins, I guess that I slightly wryly noted too that it had only arrived in 0.20 so "imagine my surprise" when it changed again so quickly :'(

RE "Its a shame you werent tracking trunk as it may be too late to fix some issues for the next release " yeah I've hitherto mainly been working against official releases and I've just started tracking truck, as you suggest I'd clearly have picked this up sooner had I been. It's no bigee really as the QMF Management Plugin is built as a separate target. It was an initial release 'cause a few people had been asking about it and being able to control the Java broker from a CLI such as qpid-config.

I've taken a look through some of the new plugin code. I did wonder when this all changed if it was related to the config work you've been mentioning elsewhere.

I had a look at the new config.json file that gets put into the working directory - where does the default one get generated from? I did a quick grep but couldn't see what wrote out config.json if one doesn't already exist.


Re "but I think you might find the changes are far more substantial than just the plugin interface itself and those may pose bigger problems " what sort of things are you alluding to here? My QMF plugin doesn't do anything especially clever and you've clearly modded the JMX and HTTP plugins to the new API. The bulk of the code beyond the "plugin" stuff just uses the org.apache.qpid.server.model classes which don't (at a superficial glance) appear to have changed radically.

I guess I'll find out when I look further.

Thanks again for the update.


One further question RE "remove the old XML configuration files, and make the broker pretty much entirely configurable through the management interfaces" what's the motivation behind this? Funnily enough one of the things that I thought the Java broker had better than the C++ broker was the ability to specify configuration a priori. In my experience there are plenty of cases where one actually wants to provide a broker configuration that has been configuration managed. We certainly do in my set up and it rather irks me to have to essentially script qpid-config to configure our brokers to bootstrap the system. Don't get me wrong the management interfaces are great but the ability to have a configured config also seems useful. One thing that bugs me with the C++ broker is that I can't make a queue's configuration persistent without making the queue persistent (if you see what I mean) what I actually want is for the queue to be re-created automatically when the broker restarts but for messages to not be persisted (I can't easily change the producer to mark the messages non-persistent). I'm forced to use scripts to do this which is irksome. As I say the Java broker supported doing this via the XML config, but it seems like you've changed this - it seemed like a valid use-case so I'm interested to know what the driver was.

Frase


On 25/03/13 13:53, Robbie Gemmell wrote:
Hi Fraser,

What you have now noticed is a step in our ongoing effort to reorganise the
broker internals, remove the old XML configuration files, and make the
broker pretty much entirely configurable through the management interfaces.

The particular plugable management interface you found and used with 0.20
was actually only introduced in 0.20, when we simplified the plugins from
prior versions of the broker (which used a somewhat contorted plugin system
via the XML and an embedded OSGi container). That change was a first step
towards letting us work on removing the broker-level XML configuration (and
ServerConfiguration along with it, being at the heart of that stuff). The
core of that landed on trunk over a month ago, having been in progress on a
branch since the end of October.

Although the larger idea of the changes have been mentioned in general
several times over the last year or more, I dont think we actually did
specifically call out the difference in the pluggability, primarily because
at the time the change was made (either months ago when it was, or more
recently when it was merged) no other such plugins actually existed and
weren't really expected to.

I'm afraid to say the answer to your question around stability is no, at
least as far as the particular bit you are probably asking about is
concerned, i.e the way the jmx and http management plugins are currently
loading. That happens to be something that was done as a means to make it
work with the new configuration, but exactly how it does is a source of
annoyance and rather likely to change again.

We can possibly look to improve things for 0.22 if there is somethign
simple that would help, but I think you might find the changes are far more
substantial than just the plugin interface itself and those may pose bigger
problems. Its a shame you werent tracking trunk as it may be too late to
fix some issues for the next release. I havent managed to take a proper
look at what you did, though a quick skim does leave me with a few
questions so I'll try to do so.

I guess the take away point is that the pluggability has generally been
there as much as an after thought than anything else, and maintaining
compatibility between reelases has not been a priority as we have no
plugins that target multiple releases and so few people (besides us, I
think I recall 3 people including you mentioning it over the years) have
ever used the pluggability we didn't really expect it to be an issue yet
(and I think you are the first to ever ask about a change). I see you noted
in your readme the pluggable points have never been documented; thats true
and our intention with these ongoing changes is very much to document such
things, once they become stable.

Robbie

On 24 March 2013 16:53, Fraser Adams <[email protected]> wrote:

I put together a QmfManagementPlugin for the Java Broker using the plugin
API

org.apache.qpid.server.plugin.**ManagementFactory
org.apache.qpid.server.**management.plugin.**ManagementPlugin

This works nicely for Qpid 0.20 but I've just tried to build against trunk
and those interfaces have gone :'(

Looks like org.apache.qpid.server.**configuration.**ServerConfiguration
has gone too.


Looks like there's a new plugin API, what gives?? It's a little bit
frustrating - was this change mentioned anywhere (Jira?) I must have missed
it.

I've not had much of a change to look at the new plugin API, is this
likely to be vaguely stable?

Any info gratefully received.

Cheers,
Frase

------------------------------**------------------------------**---------
To unsubscribe, e-mail: 
[email protected].**org<[email protected]>
For additional commands, e-mail: [email protected]




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to