On 21 February 2011 12:19, Guillaume Nodet <[email protected]> wrote: > On Mon, Feb 21, 2011 at 12:28, Alasdair Nottingham <[email protected]> wrote: >> So assume we released util as a 1.0 bundle, why would that prevent >> blueprint 0.4 >> using it? I don't think I've seen anything that says you have to bump your >> major >> version based on the dependency doing so. That seems like a crazy idea. You >> should only bump your major version if you have to. > > Ok, so let's think about that a bit more. I think the case is a bit > different if the package is exported or not. > If the package is exported, the dependent package will be imported and > end up in uses constraints, so if you change the import range to be > incompatible, you actually have a major incompatibility I think. If I > have a bundle that depend on both packages, my bundle would clearly > become unusable with the new version, which means it's a major change > on the package actually. > If the package isn't exported, the change would at least require other > updates in bundles, so while the packages would still be fully > compatible, the bundle version should be incremented from at least a > minor version imho. > Here, I'm not sure that any package depending on aries-util is > actually exported, but we'd have to check. >
I do not think this is how uses should be interpreted. uses is designed to solve the problem whereby a package A returns, or receives types from package B and you want to ensure the bundle and its clients have a consistent view of A and B. It is not there to ensure that bundle A and bundle B share the same copy of a package A when package A is strictly part of the internals. As a result the scenario you describe would never happen. >> I would also say that until we have had a vote about exactly what we are >> doing >> regarding releasing and versioning this kind of activity is a little >> premature. > > Well, I'm raising things that we need to keep in mind when we vote for > the policy we'll use. We were supposed to use a release cycle at the > component level, so I'm actually trying to release blueprint without > having to release everything, that's all. If/when we move that at the > bundle level, things will be even more complicated. > I am not saying that raising the issue is premature, I am saying that creating a branch is premature. >> Alasdair >> >> On 21 February 2011 11:21, Guillaume Nodet <[email protected]> wrote: >>> Sorry for not being more clear, I was referring to the following change: >>> >>>> Removed: >>>> >>>> aries/trunk/util/src/main/java/org/apache/aries/util/SingleServiceTracker.java >>> >>> One class has been deleted from a package, so that's a major >>> incompabible change which needs aries-util version to be bumped to 1.0 >>> according to semantic versioning rules. What I'm not sure is how it >>> affect other projects, for example blueprint trunk would need to >>> change the aries-util dependency from [0.3,1) to [1,2) and I'm not >>> sure how the blueprint version should reflect that change. >>> >>> I don't really want to include an update to a new major version of a >>> dependency in a minor release of blueprint, so I think we should bump >>> blueprint to 1.0, hence my point of creating a 0.4 branch for >>> blueprint. >>> >>> Hope it's a bit more clear now. >>> >>> On Mon, Feb 21, 2011 at 12:12, Alasdair Nottingham <[email protected]> wrote: >>>> Can you clarify what in this commit you are objecting to? There were >>>> rather a large number of >>>> changes not all of which are included in your email. >>>> >>>> Why would you create a branch for blueprint 0.4? What is the point? >>>> >>>> Alasdair >>>> >>>> On 21 February 2011 10:55, Guillaume Nodet <[email protected]> wrote: >>>>> I come back to this commit as this is a *major* incompatibility change. >>>>> The util package major version need be bumped up. I'm not quite sure >>>>> what kind of changes that impact on downstream bundles (blueprint, >>>>> jndi, jpa, etc...) but I think the cascading effect is that their >>>>> major version need to be bumped too. Can someone please have a look >>>>> at that and fix the problems ? >>>>> >>>>> I'll create a branch for blueprint 0.4.x which can work with other >>>>> components in 0.3 as that's what is implied the version range is >>>>> afaik. >>>>> >>>>> On Fri, Feb 4, 2011 at 19:22, Guillaume Nodet <[email protected]> wrote: >>>>>> While I do not question the validity of such changes, it tends to >>>>>> confirm my impression that we have components that are quite tied >>>>>> together and that we'll never be able to release them independantly >>>>>> (apart from bug fix release which do not matter here). >>>>>> How easy would such things be if we had several trunks, one jira per >>>>>> component, each jira associated to a different version in jira... >>>>>> This also changes the constraints on the packages imported by a >>>>>> component, so you'd have to change some package versions. That's >>>>>> kinda bad as if a user want to update one bundle, he has to actually >>>>>> update a bunch of bundles. if we're going to use a different version >>>>>> for each component, we'd have to keep track of the compatibility >>>>>> somewhere so that this can appear in the release notes. >>>>>> >>>>>> i'll stop to lobby on the release cycle versioning, but I just want to >>>>>> make everyone knows where we're going. >>>>>> >>>>>> I wonder if we'll have to change to a more manual management of the >>>>>> imported packages in the pom, disabling * packages expansions by bnd >>>>>> and also disabling auto computation of version ranges to make sure >>>>>> we're aware of changes >>>>>> >>>>>> On Friday, February 4, 2011, <[email protected]> wrote: >>>>>>> Author: timothyjward >>>>>>> Date: Fri Feb 4 16:13:32 2011 >>>>>>> New Revision: 1067207 >>>>>>> >>>>>>> URL: http://svn.apache.org/viewvc?rev=1067207&view=rev >>>>>>> Log: >>>>>>> ARIES-567 - Add a common utility for safe unregistration >>>>>>> >>>>>>> Added: >>>>>>> >>>>>>> aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/util/ >>>>>>> >>>>>>> aries/trunk/jpa/jpa-container-context/src/test/java/org/apache/aries/util/AriesFrameworkUtil.java >>>>>>> aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/util/ >>>>>>> >>>>>>> aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/util/AriesFrameworkUtil.java >>>>>>> >>>>>>> aries/trunk/util/src/main/java/org/apache/aries/util/tracker/SingleServiceTracker.java >>>>>>> - copied, changed from r1067146, >>>>>>> aries/trunk/util/src/main/java/org/apache/aries/util/SingleServiceTracker.java >>>>>>> Removed: >>>>>>> >>>>>>> aries/trunk/util/src/main/java/org/apache/aries/util/SingleServiceTracker.java >>>>>>> Modified: >>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/pom.xml >>>>>>> >>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java >>>>>>> >>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java >>>>>>> >>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java >>>>>>> >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java >>>>>>> >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java >>>>>>> >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java >>>>>>> aries/trunk/jmx/jmx-blueprint-core/pom.xml >>>>>>> >>>>>>> aries/trunk/jmx/jmx-blueprint-core/src/main/java/org/apache/aries/jmx/blueprint/impl/BlueprintState.java >>>>>>> >>>>>>> aries/trunk/jndi/jndi-rmi/src/main/java/org/apache/aries/jndi/rmi/Activator.java >>>>>>> >>>>>>> aries/trunk/jndi/jndi-url/src/main/java/org/apache/aries/jndi/url/Activator.java >>>>>>> >>>>>>> aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/GlobalPersistenceManager.java >>>>>>> >>>>>>> aries/trunk/jpa/jpa-container-context/src/main/java/org/apache/aries/jpa/container/context/impl/PersistenceContextManager.java >>>>>>> >>>>>>> aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/CountingEntityManagerFactory.java >>>>>>> >>>>>>> aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java >>>>>>> >>>>>>> aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleManager.java >>>>>>> aries/trunk/quiesce/quiesce-manager/pom.xml >>>>>>> >>>>>>> aries/trunk/quiesce/quiesce-manager/src/main/java/org/apache/aries/quiesce/manager/impl/Activator.java >>>>>>> aries/trunk/transaction/pom.xml >>>>>>> aries/trunk/transaction/transaction-manager/pom.xml >>>>>>> >>>>>>> aries/trunk/transaction/transaction-manager/src/main/java/org/apache/aries/transaction/TransactionManagerService.java >>>>>>> aries/trunk/transaction/transaction-wrappers/pom.xml >>>>>>> >>>>>>> aries/trunk/transaction/transaction-wrappers/src/main/java/org/apache/aries/transaction/jdbc/Activator.java >>>>>>> >>>>>>> aries/trunk/util/src/main/java/org/apache/aries/util/AriesFrameworkUtil.java >>>>>>> >>>>>>> aries/trunk/util/src/test/java/org/apache/aries/util/SingleServiceTrackerTest.java >>>>>>> >>>>>>> Modified: aries/trunk/blueprint/blueprint-annotation-impl/pom.xml >>>>>>> URL: >>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-annotation-impl/pom.xml?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>> ============================================================================== >>>>>>> --- aries/trunk/blueprint/blueprint-annotation-impl/pom.xml (original) >>>>>>> +++ aries/trunk/blueprint/blueprint-annotation-impl/pom.xml Fri Feb 4 >>>>>>> 16:13:32 2011 >>>>>>> @@ -57,6 +57,10 @@ >>>>>>> >>>>>>> <artifactId>org.apache.aries.blueprint.annotation.api</artifactId> >>>>>>> </dependency> >>>>>>> <dependency> >>>>>>> + <groupId>org.apache.aries</groupId> >>>>>>> + <artifactId>org.apache.aries.util</artifactId> >>>>>>> + </dependency> >>>>>>> + <dependency> >>>>>>> <groupId>org.osgi</groupId> >>>>>>> <artifactId>org.osgi.core</artifactId> >>>>>>> <scope>provided</scope> >>>>>>> >>>>>>> Modified: >>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java >>>>>>> URL: >>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>> ============================================================================== >>>>>>> --- >>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java >>>>>>> (original) >>>>>>> +++ >>>>>>> aries/trunk/blueprint/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java >>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>> @@ -19,11 +19,12 @@ package org.apache.aries.blueprint.annot >>>>>>> import java.util.Dictionary; >>>>>>> import java.util.Hashtable; >>>>>>> >>>>>>> +import >>>>>>> org.apache.aries.blueprint.annotation.service.BlueprintAnnotationScanner; >>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>> import org.osgi.framework.BundleActivator; >>>>>>> import org.osgi.framework.BundleContext; >>>>>>> import org.osgi.framework.Constants; >>>>>>> import org.osgi.framework.ServiceRegistration; >>>>>>> -import >>>>>>> org.apache.aries.blueprint.annotation.service.BlueprintAnnotationScanner; >>>>>>> >>>>>>> public class Activator implements BundleActivator { >>>>>>> >>>>>>> @@ -36,9 +37,7 @@ public class Activator implements Bundle >>>>>>> } >>>>>>> >>>>>>> public void stop(BundleContext context) { >>>>>>> - if (sr != null) { >>>>>>> - sr.unregister(); >>>>>>> - } >>>>>>> + AriesFrameworkUtil.safeUnregisterService(sr); >>>>>>> } >>>>>>> >>>>>>> } >>>>>>> >>>>>>> Modified: >>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java >>>>>>> URL: >>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>> ============================================================================== >>>>>>> --- >>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java >>>>>>> (original) >>>>>>> +++ >>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/CmManagedServiceFactory.java >>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>> @@ -35,6 +35,7 @@ import org.apache.aries.blueprint.Servic >>>>>>> import org.apache.aries.blueprint.container.ServiceListener; >>>>>>> import org.apache.aries.blueprint.utils.JavaUtils; >>>>>>> import org.apache.aries.blueprint.utils.ReflectionUtils; >>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>> import org.osgi.framework.Bundle; >>>>>>> import org.osgi.framework.Constants; >>>>>>> import org.osgi.framework.ServiceReference; >>>>>>> @@ -100,9 +101,7 @@ public class CmManagedServiceFactory { >>>>>>> } >>>>>>> >>>>>>> public void destroy() { >>>>>>> - if (registration != null) { >>>>>>> - registration.unregister(); >>>>>>> - } >>>>>>> + AriesFrameworkUtil.safeUnregisterService(registration); >>>>>>> for (Map.Entry<ServiceRegistration, Object> entry : >>>>>>> services.entrySet()) { >>>>>>> destroy(entry.getValue(), entry.getKey(), BUNDLE_STOPPING); >>>>>>> } >>>>>>> @@ -119,7 +118,7 @@ public class CmManagedServiceFactory { >>>>>>> } >>>>>>> } >>>>>>> destroyComponent(component, code); >>>>>>> - registration.unregister(); >>>>>>> + AriesFrameworkUtil.safeUnregisterService(registration); >>>>>>> } >>>>>>> >>>>>>> public Map<ServiceRegistration, Object> getServiceMap() { >>>>>>> >>>>>>> Modified: >>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java >>>>>>> URL: >>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>> ============================================================================== >>>>>>> --- >>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java >>>>>>> (original) >>>>>>> +++ >>>>>>> aries/trunk/blueprint/blueprint-cm/src/main/java/org/apache/aries/blueprint/compendium/cm/ManagedObjectManager.java >>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>> @@ -25,6 +25,7 @@ import java.util.HashMap; >>>>>>> import java.util.List; >>>>>>> import java.util.Properties; >>>>>>> >>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>> import org.osgi.framework.ServiceRegistration; >>>>>>> import org.osgi.service.cm.ConfigurationException; >>>>>>> import org.osgi.service.cm.ManagedService; >>>>>>> @@ -60,7 +61,7 @@ public class ManagedObjectManager { >>>>>>> reg.remove(cm); >>>>>>> if (reg.isEmpty()) { >>>>>>> map.remove(key); >>>>>>> - reg.getRegistration().unregister(); >>>>>>> + >>>>>>> AriesFrameworkUtil.safeUnregisterService(reg.getRegistration()); >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> Modified: >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java >>>>>>> URL: >>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>> ============================================================================== >>>>>>> --- >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java >>>>>>> (original) >>>>>>> +++ >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java >>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>> @@ -62,6 +62,7 @@ import org.apache.aries.blueprint.reflec >>>>>>> import org.apache.aries.blueprint.utils.HeaderParser; >>>>>>> import org.apache.aries.blueprint.utils.JavaUtils; >>>>>>> import org.apache.aries.blueprint.utils.HeaderParser.PathElement; >>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>> import org.osgi.framework.Bundle; >>>>>>> import org.osgi.framework.BundleContext; >>>>>>> import org.osgi.framework.Constants; >>>>>>> @@ -812,9 +813,7 @@ public class BlueprintContainerImpl impl >>>>>>> if (timeoutFuture != null) { >>>>>>> timeoutFuture.cancel(false); >>>>>>> } >>>>>>> - if (registration != null) { >>>>>>> - registration.unregister(); >>>>>>> - } >>>>>>> + AriesFrameworkUtil.safeUnregisterService(registration); >>>>>>> if (handlerSet != null) { >>>>>>> handlerSet.removeListener(this); >>>>>>> handlerSet.destroy(); >>>>>>> @@ -845,9 +844,7 @@ public class BlueprintContainerImpl impl >>>>>>> if (timeoutFuture != null) { >>>>>>> timeoutFuture.cancel(false); >>>>>>> } >>>>>>> - if (registration != null) { >>>>>>> - registration.unregister(); >>>>>>> - } >>>>>>> + AriesFrameworkUtil.safeUnregisterService(registration); >>>>>>> if (handlerSet != null) { >>>>>>> handlerSet.removeListener(this); >>>>>>> handlerSet.destroy(); >>>>>>> >>>>>>> Modified: >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java >>>>>>> URL: >>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>> ============================================================================== >>>>>>> --- >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java >>>>>>> (original) >>>>>>> +++ >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintExtender.java >>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>> @@ -39,9 +39,10 @@ import org.apache.aries.blueprint.namesp >>>>>>> import org.apache.aries.blueprint.utils.HeaderParser; >>>>>>> import org.apache.aries.blueprint.utils.HeaderParser.PathElement; >>>>>>> import org.apache.aries.proxy.ProxyManager; >>>>>>> -import org.apache.aries.util.SingleServiceTracker; >>>>>>> -import >>>>>>> org.apache.aries.util.SingleServiceTracker.SingleServiceListener; >>>>>>> +import org.apache.aries.util.AriesFrameworkUtil; >>>>>>> import org.apache.aries.util.tracker.RecursiveBundleTracker; >>>>>>> +import org.apache.aries.util.tracker.SingleServiceTracker; >>>>>>> +import >>>>>>> org.apache.aries.util.tracker.SingleServiceTracker.SingleServiceListener; >>>>>>> import org.osgi.framework.Bundle; >>>>>>> import org.osgi.framework.BundleActivator; >>>>>>> import org.osgi.framework.BundleContext; >>>>>>> @@ -154,10 +155,9 @@ public class BlueprintExtender implement >>>>>>> bt.close(); >>>>>>> } >>>>>>> >>>>>>> - parserServiceReg.unregister(); >>>>>>> - >>>>>>> - if (quiesceParticipantReg != null) >>>>>>> - quiesceParticipantReg.unregister(); >>>>>>> + AriesFrameworkUtil.safeUnregisterService(parserServiceReg); >>>>>>> + >>>>>>> + >>>>>>> AriesFrameworkUtil.safeUnregisterService(quiesceParticipantReg); >>>>>>> >>>>>>> // Orderly shutdown of containers >>>>>>> while (!containers.isEmpty()) { >>>>>>> >>>>>>> Modified: >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java >>>>>>> URL: >>>>>>> http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java?rev=1067207&r1=1067206&r2=1067207&view=diff >>>>>>> ============================================================================== >>>>>>> --- >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java >>>>>>> (original) >>>>>>> +++ >>>>>>> aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java >>>>>>> Fri Feb 4 16:13:32 2011 >>>>>>> @@ -44,6 +44,7 @@ import org.apache.aries.blueprint.proxy. >>>>>>> import org. >>>>>> >>>>>> -- >>>>>> Cheers, >>>>>> Guillaume Nodet >>>>>> ------------------------ >>>>>> Blog: http://gnodet.blogspot.com/ >>>>>> ------------------------ >>>>>> Open Source SOA >>>>>> http://fusesource.com >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Cheers, >>>>> Guillaume Nodet >>>>> ------------------------ >>>>> Blog: http://gnodet.blogspot.com/ >>>>> ------------------------ >>>>> Open Source SOA >>>>> http://fusesource.com >>>>> >>>> >>>> >>>> >>>> -- >>>> Alasdair Nottingham >>>> [email protected] >>>> >>> >>> >>> >>> -- >>> Cheers, >>> Guillaume Nodet >>> ------------------------ >>> Blog: http://gnodet.blogspot.com/ >>> ------------------------ >>> Open Source SOA >>> http://fusesource.com >>> >> >> >> >> -- >> Alasdair Nottingham >> [email protected] >> > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com > -- Alasdair Nottingham [email protected]
