Hi,

  I had somehow lengthy discussion with Juris about config modules, 
versions and dependency resolution.

  Recently added default modules that are specified in tc.properties 
made whole picture little more messy, especially if take Maven into the 
equation.

  To summarize, DSO configuration modules that are used at runtime can 
come from several places:

-- l1.configbundles.default entry in tc.properties:
l1.configbundles.default = 
excludes-config;guimodels-config;jdk15-preinst-config;spring-config;standard-config

-- modules declared in tc-config.xml
    <modules>
      <module name="clustered-ehcache-1.3" version="1.0.0"/>
    </modules>

-- transitive dependencies listed in manifest.mf of any other module. 
Foe example for clustered-hibernate-3.1.2 we currently have:
  Bundle-SymbolicName: org.terracotta.modules.clustered-hibernate-3.1.2
  Bundle-Version: 1.0.0
  Require-Bundle: org.terracotta.modules.modules_common,
     org.terracotta.modules.clustered-cglib-2.1.3

  If you think about above examples, they leave lots of assumptions 
about what modules versions should be used and it could lead to some 
nasty issues at the runtime.

  For some reason I thought it been agreed that we should always 
explicitly specify all versions and also use -SNAPSHOTS between 
releases, but it doesn't seem like it been changed in existing modules, 
except that tcbuild is adding -SNAPSHOT suffix to the nightly build jars 
deployed to maven repo.

  So, above configuration snippets should be changed as the following:

l1.configbundles.default = 
excludes-config,1.0.0-SNAPSHOT;guimodels-config,1.0.0-SNAPSHOT;jdk15-preinst-config,1.0.0-SNAPSHOT;spring-config,1.0.0-SNAPSHOT;standard-config,1.0.0-SNAPSHOT
 
  Bundle-SymbolicName: org.terracotta.modules.clustered-hibernate-3.1.2
  Bundle-Version: 1.0.0-SNAPSHOT
  Require-Bundle: 
org.terracotta.modules.modules_common;bundle-version="1.0.0.SNAPSHOT",
     
org.terracotta.modules.clustered-cglib-2.1.3;bundle-version="1.0.0.SNAPSHOT"

  note that we can't use "-" for SNAPSHOT suffix in the bundle version, 
because OSGi prohibits that, so we may need some mapping in our module 
jar resolver code.

  Then at release/code freeze time someone will have to do a quite 
verbose operation and change all those versions to the release versions.

  Any thoughts?

  regards,
  Eugene


_______________________________________________
tc-dev mailing list
[email protected]
http://lists.terracotta.org/mailman/listinfo/tc-dev

Reply via email to