Qpid
  1. Qpid
  2. QPID-3504

add the bdb backed store implementation for the Java broker to our ASF repo as an optional build module

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.13
    • Component/s: Java Broker
    • Labels:
      None

      Description

      Email to the dev list from a couple weeks ago:

      Hi all,

      As some of you no doubt already know the Java broker has a few configuration/message store implementations, with there currently being Memory, Derby (to be split into truly generic JDBC + Derby implementations at some point), and BDB Java Edition backed implementations of the interfaces. Although the store code itself for the last of these implementations carries the Apache Licence v2.0 it depends on a library licenced under the Sleepycat licence [1], which is classed as a Category X dependency here at Apache and so can't be distributed by the project. As a result, this store implementation has always been hosted elsewhere and I recently began looking into moving it to Apache Extras. Having done so I was instead left with the impression that it would actually be possible to move the code into our ASF repo. This was reinforced after further investigation lead me to instances of other Apache projects that currently are or have previously been doing roughly what I thought to be allowable. I have since enquired on this possibility over on legal-discuss and my question was answered positively [2].

      Based on this I propose to do the following:

      • Move the BDB based store code into our ASF repo as the basis of an optional component that is not compiled by the build process by default, and is not referred to in the shipping broker configuration.
      • Add targets to our Ant build to allow downloading the BDB jar (with warning that it is Sleepycat licenced) and building the associated store module.
      • Improve the documentation describing how users would update their configuration to use the optional component, and where to download the necessary BDB dependency it requires (again with warning it is Sleepycat licenced).

      I think this will be easier going forward both for us developers and for users, but this is a heads up in case there are those in the community particularly against such a change being made; if so please speak up now, as I hope to get round to doing this in the not too distance future.

      Robbie

      [1] http://www.oracle.com/technetwork/database/berkeleydb/downloads/jeoslicense-086837.html
      [2] http://s.apache.org/nP

        Activity

        Hide
        Robbie Gemmell added a comment -

        The bdbstore module has been added as an optional part of the build. It is enabled by setting the -Dmodules.opt=bdbstore property, either in the build command or using the newly-added build.overrides file. The build warns about the licence of the BDB JE dependency during build and download, which can be performed eitehr explicitly by running ant -f bdbstore/build.xml download-bdb in a standalone fashion, inline with the build by adding -Ddownload-bdb=true to a build command.

        The qpid-server unix script has been updated to pull optional jars into the broker classpath from the /lib/opt dir if it is present, to allow an easy way of providing the dependency for end users. The qpid-server.bat file still needs to be updated.

        Show
        Robbie Gemmell added a comment - The bdbstore module has been added as an optional part of the build. It is enabled by setting the -Dmodules.opt=bdbstore property, either in the build command or using the newly-added build.overrides file. The build warns about the licence of the BDB JE dependency during build and download, which can be performed eitehr explicitly by running ant -f bdbstore/build.xml download-bdb in a standalone fashion, inline with the build by adding -Ddownload-bdb=true to a build command. The qpid-server unix script has been updated to pull optional jars into the broker classpath from the /lib/opt dir if it is present, to allow an easy way of providing the dependency for end users. The qpid-server.bat file still needs to be updated.
        Hide
        Alex Rudyy added a comment - - edited

        The attached patch which changes windows start script and adds %QPID_HOME%\lib\opt\ into CLASSPATH in order to include all optional dependencies like BDB je.jar.

        Show
        Alex Rudyy added a comment - - edited The attached patch which changes windows start script and adds %QPID_HOME%\lib\opt\ into CLASSPATH in order to include all optional dependencies like BDB je.jar.
        Hide
        Robbie Gemmell added a comment -

        Patch applied.

        Show
        Robbie Gemmell added a comment - Patch applied.
        Hide
        Robbie Gemmell added a comment -

        Keith, could you review these changes please? Thanks, Robbie.

        Show
        Robbie Gemmell added a comment - Keith, could you review these changes please? Thanks, Robbie.
        Hide
        Keith Wall added a comment -

        Reviewed, no comments from me.

        Show
        Keith Wall added a comment - Reviewed, no comments from me.

          People

          • Assignee:
            Keith Wall
            Reporter:
            Robbie Gemmell
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development