Cassandra
  1. Cassandra
  2. CASSANDRA-1888

Replace lib/high-scale-lib.jar with equivalent from maven central repository

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Fix Version/s: 0.7.1
    • Component/s: None
    • Labels:
      None

      Description

      As part of my effort to get Cassandra published to Maven Central, there are a number of libraries which Cassandra depends on but which are not available in Maven Central.

      Perhaps the most interesting of these is the Public Domain high-scale-lib.jar

      The author is an XML build tool hater (and that includes ANT), and the artifact itself contains a lot of unusual cruft... .CVS folders, etc. The build process uses a build.java, that effectively is a rewrite of Make in java with the Makefile embedded in the build.java.

      I have rebuilt the artifacts and published them to the Maven Central repository. As part of the requirements for publishing to Maven Central are to publish a javadoc.jar and a sources.jar with gpg signatures, etc. It was easier to take the source code and transform it into a Maven project. The project is hosted at github: http://stephenc.github.com/high-scale-lib

      I have published the following versions, all signed with by stephenc@apache.org PGP key
      1.0.0
      1.0.1
      1.1.0
      1.1.1
      1.1.2

      These should all be equivalent to the releases by Cliff Click, with the only exception being 1.1.1.

      For 1.1.1 Cliff's original build script did not run the Unit tests correctly, one of the unit tests consistently fails even on his build process due to an invalid assumption that element ordering is preserved across serialization for NonBlockingIdentityHashMap. He fixed the test in 1.1.2, so I back-ported the test change. The code however remains as is.

      In any case, can we change the version of high-scale-lib.jar in the lib directory to the version from maven central
      http://repo1.maven.org/maven2/com/github/stephenc/high-scale-lib/high-scale-lib/1.1.1/high-scale-lib-1.1.1.jar
      [The current version used by Cassandra is 1.1.1]

      Or if perhaps even consider upgrading to 1.1.2 [though I can appreciate that this could be considered riskier]

      My justification for the change is so that I can be sure that consumers of a Maven Central distribution of Cassandra will have exactly the same dependencies, which have been tested as part of the Cassandra release process, and not just the "Stephen's very damn sure they are the same" dependencies

        Issue Links

          Activity

          Hide
          Stephen Connolly added a comment -

          svn diff is not co-operating

          Index: lib/high-scale-lib.jar
          ===================================================================
          Cannot display: file marked as a binary type.
          svn:mime-type = application/octet-stream

          Show
          Stephen Connolly added a comment - svn diff is not co-operating Index: lib/high-scale-lib.jar =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
          Show
          Stephen Connolly added a comment - curl -o lib/high-scale-lib.jar http://repo1.maven.org/maven2/com/github/stephenc/high-scale-lib/high-scale-lib/1.1.1/high-scale-lib-1.1.1.jar
          Hide
          Jonathan Ellis added a comment -

          I tried to find a list of changes from 1.1.1 to 1.1.2 but sourceforge defeated me. What a terrible site. Any pointers?

          Show
          Jonathan Ellis added a comment - I tried to find a list of changes from 1.1.1 to 1.1.2 but sourceforge defeated me. What a terrible site. Any pointers?
          Hide
          Stephen Connolly added a comment -

          Here is the long answer:

          https://github.com/stephenc/high-scale-lib/commit/5c460d6858f552bd9b0c0710c393f1440c1a0c58

          Here is the shorter answer

          https://github.com/stephenc/high-scale-lib/commit/2d63f18a07e62c62e5e72666a35d36bacbe95798

          Here is my summary:

          • Improved hash distribution
          • Optimized the get(key) to only call key.hashCode() once per get(key)
          • Some tweaking of the put logic that escapes me somewhat!
          • Added a test case to the test suite
          Show
          Stephen Connolly added a comment - Here is the long answer: https://github.com/stephenc/high-scale-lib/commit/5c460d6858f552bd9b0c0710c393f1440c1a0c58 Here is the shorter answer https://github.com/stephenc/high-scale-lib/commit/2d63f18a07e62c62e5e72666a35d36bacbe95798 Here is my summary: Improved hash distribution Optimized the get(key) to only call key.hashCode() once per get(key) Some tweaking of the put logic that escapes me somewhat! Added a test case to the test suite
          Show
          Eric Evans added a comment - I committed 1.1.1 from ( http://repo1.maven.org/maven2/com/github/stephenc/high-scale-lib/high-scale-lib/1.1.1/high-scale-lib-1.1.1.jar ).
          Hide
          Jonathan Ellis added a comment -

          created CASSANDRA-1942 to upgrade to 1.1.2 in 0.8

          Show
          Jonathan Ellis added a comment - created CASSANDRA-1942 to upgrade to 1.1.2 in 0.8

            People

            • Assignee:
              Stephen Connolly
              Reporter:
              Stephen Connolly
              Reviewer:
              Eric Evans
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development