geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: version compatibility plugin?
Date Wed, 09 Jul 2008 22:58:22 GMT

On Jul 9, 2008, at 1:12 PM, Joe Bohn wrote:

>
>
> Thanks for the post Lin.  I was going to start a new thread for this  
> discussion.
>
> I mentioned a third possibility in the Geronimo 2.1.2 plans  
> thread ... that is adding the artifact alias entries for 2.1 & 2.1.1  
> directly into the 2.1.2 server image as part of the release.

I guess each plugin can include aliases for previous versions of  
itself and the jars it depends on.  This might be better than the  
compatibility plugin but might also turn into a maintenance nightmare.


>  I'm not exactly sure how I feel about this.  It would solve the  
> problem and eliminate the need for a user to manually change the  
> entries or install a compatibility plugin.  On the other hand it  
> seems a bit heavy-handed and will expose the user a long list of  
> alias entries if they need to manually change the file themselves.   
> I also wonder if there are any performance implications as the list  
> gets longer.

I'd say, no.  Currently it's a hashmap lookup and should not be  
noticeably affected by the size of the hashmap.
>
>
> All in all, the alias approach will work in the short term but I  
> think it's just a band-aid fix.  At some point it is going to cause  
> grief when things are not really compatible but the aliases allow a  
> user to install anyway.  At some point we're going to have to invest  
> in a more complicated and complete plugin solution that address  
> compatibility more completely.

Maybe.  Testing compatibility would be a nice thing to do but I have  
essentially no idea how.  Without testing I don't see the point in  
making things more complicated and with it I don't see a problem with  
the "lots of aliases" approach.  Representing the aliases in property  
files is not essential and if they start getting unwieldy we could  
look for an alternate notation.  On the other hand I don't expect  
users to be messing with the artifact alias files by hand anyway: i'd  
expect that normally they'd only be modified by installing more plugins.

thanks
david jencks


>
>
> Joe
>
> Lin Sun wrote:
>> Hi Joe/All,
>> Finally I was able to deploy the jaxws-calculator car file onto the
>> server, after adding a bunch of entries in the
>> artifact-aliases.properties file, which is essentially the same as
>> what your compatibility plugin does.
>> We'll have to quickly decide what to do with the compatability issue
>> otherwise none of our sample will be installable on 2.1.2 server.
>> One approach is to release the compatibility plugin you worked on.
>> Is this checked in?
>> Pros: we can have this quickly and get ready for the 2.1.2 release.
>> Cons: it is extra work for the user.
>> The other approach is to add the matching entries to the
>> artifact-aliases.properties and client_artifact-aliases.properties on
>> the fly.   We'll have to determine how to add them, what to add to
>> different assemblies (can different assemblies have same entries if
>> the extra entries don't hurt anything), etc.
>> Pros: no extra work for the user, assuming the server can add the
>> common matching entries to different assembly on the fly.
>> Cons: Could take longer and is this appropriate for 2.1.2 given we'll
>> release it very soon?
>
>
>
>
>> Thanks, Lin
>> On Tue, Jul 8, 2008 at 2:51 PM, Joe Bohn <joe.bohn@earthlink.net>  
>> wrote:
>>> Lin Sun wrote:
>>>> Yes, I am able to move onto the next missing dependency module.    
>>>> Thanks.
>>>>
>>>> Is there a reason why we need both?  I thought we just need one and
>>>> version can be omitted on the left side per
>>>>
>>>> http://cwiki.apache.org/GMOxDOC21/how-to-upgrade-jars-and-swap-modules.html
>>> What you need depends on the way the dependency itself is  
>>> specified.  If it
>>> is specified with the version such as 2.1 then you need the /2.1/  
>>> entry.
>>> This is the case for the jsp sample.  If it is called out without  
>>> a version
>>> then you need the // entry.  The doc you referenced calls the  
>>> former a
>>> "fixed version".
>>>
>>> IIRC the jsp sample had 2.1 in the jasper dependency ... but it  
>>> also had a
>>> dependency on the tomcat/jetty car.  The tomcat/jetty car has a  
>>> dependency
>>> on jasper without the version.  You might not need the // entry  
>>> but in
>>> general it is usually best to provide both the versioned and non- 
>>> versioned
>>> entries.
>>>
>>> BTW, I was actually using a quick pass at a compatibility plugin I  
>>> had
>>> created for that included all of the cars for the tomcat server  
>>> instance ...
>>> so some other dependencies may have been resolved beyond jasper  
>>> (such as the
>>> tomcat dependency).
>>>
>>> Joe
>>>
>>>> Lin
>>>>
>>>> On Tue, Jul 8, 2008 at 2:06 PM, Joe Bohn <joe.bohn@earthlink.net> 

>>>> wrote:
>>>>> Lin Sun wrote:
>>>>>> Hi Joe,
>>>>>>
>>>>>> Is this scenario working for you after your fix?  I updated the
>>>>>> artifact-aliases.properties file in var/config manually when  
>>>>>> server is
>>>>>> shutdown -
>>>>>>
>>>>>>
>>>>>> org.apache.geronimo.configs/jasper// 
>>>>>> car=org.apache.geronimo.configs/jasper/2.1.2-SNAPSHOT/car
>>>>> You need one more additional entry  ...
>>>>>
>>>>> org.apache.geronimo.configs/jasper/2.1/ 
>>>>> car=org.apache.geronimo.configs/jasper/2.1.2-SNAPSHOT/car
>>>>>
>>>>> That worked for me.
>>>>>
>>>>> Joe
>>>>>
>>>>>
>>>>>> However, I am still getting the "Missing dependency:
>>>>>> org.apache.geronimo.configs/jasper/2.1/car" error.
>>>>>>
>>>>>> What am I missing?  Thanks, Lin
>>>>>>
>>>>>> On Thu, Jul 3, 2008 at 4:19 PM, Joe Bohn  
>>>>>> <joe.bohn@earthlink.net> wrote:
>>>>>>> Joe Bohn wrote:
>>>>>>> Ok, I confirmed that DefaultArtifactResolver.queryArtifacts()
 
>>>>>>> was not
>>>>>>> including aliases for the query ... hence the problem.  Thanks
 
>>>>>>> to a
>>>>>>> good
>>>>>>> pointer from David Jencks I was able to easily add this into
 
>>>>>>> the query.
>>>>>>> I
>>>>>>> created GERONIMO-4182 for this problem and checked in a fix for
>>>>>>> 2.1.2-SNAPSHOT and 2.2-SNAPSHOT.
>>>>>>>
>>>>>>> Unfortunately, that means that we won't be able to use a version
>>>>>>> compatibility plugin for anything prior to 2.1.2/2.2 ... so we
 
>>>>>>> will
>>>>>>> need
>>>>>>> to
>>>>>>> come up with another solution for samples or other plugins  
>>>>>>> created for
>>>>>>> Geronimo 2.1 that we want to run on Geronimo 2.1.1.
>>>>>>>
>>>>>>> Joe
>>>>>>>
>>>>>>>
>>>>>>>> Joe
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> thanks
>>>>>>>>> david jencks
>>>>>>>>>
>>>>>>>>> On Jul 2, 2008, at 8:46 AM, Joe Bohn wrote:
>>>>>>>>>
>>>>>>>>>> I attempted to create a version compatibility plugin
such  
>>>>>>>>>> that
>>>>>>>>>> plugins
>>>>>>>>>> with dependencies on 2.1 artifacts could attempt
to be  
>>>>>>>>>> installed in
>>>>>>>>>> a
>>>>>>>>>> 2.2-SNAPSHOT server image (mapping 2.1 car artifacts
to 2.2- 
>>>>>>>>>> SNAPSHOT
>>>>>>>>>> car
>>>>>>>>>> artifacts).  However, thus far I'm not having any
success.
>>>>>>>>>>
>>>>>>>>>> The plugin is fairly simple.  Just a bunch of entries
for  
>>>>>>>>>> artifact
>>>>>>>>>> aliases and no other content:
>>>>>>>>>>
>>>>>>>>>> <plugin-artifact>
>>>>>>>>>> ...
>>>>>>>>>> <artifact-alias
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> key="org.apache.geronimo.configs/jasper// 
>>>>>>>>>> car">org.apache.geronimo.configs/jasper/2.2-SNAPSHOT/car</

>>>>>>>>>> artifact-alias>
>>>>>>>>>> <artifact-alias
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> key="org.apache.geronimo.configs/jasper/2.1/ 
>>>>>>>>>> car">org.apache.geronimo.configs/jasper/2.2-SNAPSHOT/car</

>>>>>>>>>> artifact-alias>
>>>>>>>>>> ...
>>>>>>>>>>
>>>>>>>>>> I also verified that after installing the compatibility
 
>>>>>>>>>> plugin that
>>>>>>>>>> the
>>>>>>>>>> entries are added to the artifact-aliases.properties
file in
>>>>>>>>>> var/config:
>>>>>>>>>>
>>>>>>>>>> ...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> org.apache.geronimo.configs/jasper// 
>>>>>>>>>> car=org.apache.geronimo.configs/jasper/2.2-SNAPSHOT/car
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> org.apache.geronimo.configs/jasper/2.1/ 
>>>>>>>>>> car=org.apache.geronimo.configs/jasper/2.2-SNAPSHOT/car
>>>>>>>>>> ...
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Yet, even with these entries, I still get essentially
the  
>>>>>>>>>> same error
>>>>>>>>>> attempting to install samples created for 2.1 in
a 2.2- 
>>>>>>>>>> SNAPSHOT
>>>>>>>>>> server
>>>>>>>>>> as I
>>>>>>>>>> had without the artifact-alias entries.  I showed
the  
>>>>>>>>>> jasper entries
>>>>>>>>>> above
>>>>>>>>>> because that is the missing dependency when I attempt
to  
>>>>>>>>>> install the
>>>>>>>>>> Tomcat
>>>>>>>>>> JSP example plugin created for 2.1 on 2.2-SNAPSHOT
(see error
>>>>>>>>>> below).
>>>>>>>>>> I had
>>>>>>>>>> similar results on a 2.1.1 server when I attempted
to use a  
>>>>>>>>>> another
>>>>>>>>>> compatibility plugin mapping 2.1 cars to 2.1.1. 
Am I missing
>>>>>>>>>> something
>>>>>>>>>> obvious?
>>>>>>>>>>
>>>>>>>>>> 11:22:45,918 ERROR [PluginInstallerGBean] Unable
to install  
>>>>>>>>>> plugin
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .geronimo.kernel.repository.MissingDependencyException:
>>>>>>>>>> Plugin
>>>>>>>>>> is not installable on Geronimo 2.2-SNAPSHOT
>>>>>>>>>> Missing dependency: org.apache.geronimo.configs/jasper/2.1/

>>>>>>>>>> car
>>>>>>>>>> at
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .geronimo 
>>>>>>>>>> .system 
>>>>>>>>>> .plugin 
>>>>>>>>>> .PluginInstallerGBean 
>>>>>>>>>> .validatePlugin(PluginInstallerGBean.java:920)
>>>>>>>>>> at
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .geronimo 
>>>>>>>>>> .system 
>>>>>>>>>> .plugin 
>>>>>>>>>> .PluginInstallerGBean 
>>>>>>>>>> .downloadArtifact(PluginInstallerGBean.java:1081)
>>>>>>>>>> ...
>>>>>>>>>>
>>>>>>>>>> Joe
>>>
>


Mime
View raw message