Do we have some benchmark numbers to vet this change? We have some replicated log benchmarks.
Sent from my iPhone > On Feb 19, 2017, at 11:37 PM, haosd...@apache.org wrote: > > Repository: mesos > Updated Branches: > refs/heads/master 86ea327ae -> 74878e255 > > > Upgrade leveldb to 1.19. > > Leveldb in modern version is required to support s390x and arm64. > It's also required to replace default byte-wise comparator with > varint comparator in `src/log/leveldb.cpp`. > > Review: https://reviews.apache.org/r/51053/ > > > Project: http://git-wip-us.apache.org/repos/asf/mesos/repo > Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/74878e25 > Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/74878e25 > Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/74878e25 > > Branch: refs/heads/master > Commit: 74878e255bb099029dde2a03e0b1d22fecf16000 > Parents: 86ea327 > Author: Tomasz Janiszewski <jani...@gmail.com> > Authored: Mon Feb 20 12:24:44 2017 +0800 > Committer: Haosdent Huang <haosd...@apache.org> > Committed: Mon Feb 20 15:36:54 2017 +0800 > > ---------------------------------------------------------------------- > 3rdparty/Makefile.am | 4 +- > 3rdparty/cmake/Mesos3rdpartyConfigure.cmake | 2 +- > 3rdparty/cmake/Versions.cmake | 2 +- > 3rdparty/leveldb-1.19.patch | 30 ++++++++++++ > 3rdparty/leveldb-1.19.tar.gz | Bin 0 -> 220839 bytes > 3rdparty/leveldb-1.4.patch | 57 ----------------------- > 3rdparty/leveldb-1.4.tar.gz | Bin 198113 -> 0 bytes > 3rdparty/versions.am | 2 +- > LICENSE | 2 +- > src/Makefile.am | 2 +- > src/python/native_common/ext_modules.py.in | 4 +- > support/mesos-tidy/entrypoint.sh | 2 +- > 12 files changed, 40 insertions(+), 67 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/3rdparty/Makefile.am > ---------------------------------------------------------------------- > diff --git a/3rdparty/Makefile.am b/3rdparty/Makefile.am > index bbf9cfe..61d832b2 100644 > --- a/3rdparty/Makefile.am > +++ b/3rdparty/Makefile.am > @@ -296,11 +296,11 @@ BUILT_SOURCES += $(nodist_libgmock_la_SOURCES) > if WITH_BUNDLED_LEVELDB > # TODO(charles): Figure out PIC options in our configure.ac or create > # a configure.ac for leveldb. > -$(LEVELDB)/libleveldb.a: $(LEVELDB)-stamp > +$(LEVELDB)/out-static/libleveldb.a: $(LEVELDB)-stamp > cd $(LEVELDB) && \ > $(MAKE) $(AM_MAKEFLAGS) CC="$(CC)" CXX="$(CXX)" OPT="$(CXXFLAGS) -fPIC" > > -ALL_LOCAL += $(LEVELDB)/libleveldb.a > +ALL_LOCAL += $(LEVELDB)/out-static/libleveldb.a > endif > > if WITH_BUNDLED_ZOOKEEPER > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/3rdparty/cmake/Mesos3rdpartyConfigure.cmake > ---------------------------------------------------------------------- > diff --git a/3rdparty/cmake/Mesos3rdpartyConfigure.cmake > b/3rdparty/cmake/Mesos3rdpartyConfigure.cmake > index eeb2786..c606526 100755 > --- a/3rdparty/cmake/Mesos3rdpartyConfigure.cmake > +++ b/3rdparty/cmake/Mesos3rdpartyConfigure.cmake > @@ -47,7 +47,7 @@ endif (NOT WIN32) > # Convenience variables for "lflags", the symbols we pass to CMake to generate > # things like `-L/path/to/glog` or `-lglog`. > if (NOT WIN32) > - set(LEVELDB_LFLAG ${LEVELDB_ROOT}/libleveldb.a) > + set(LEVELDB_LFLAG ${LEVELDB_ROOT}/out-static/libleveldb.a) > set(ZOOKEEPER_LFLAG ${ZOOKEEPER_LIB}/lib/libzookeeper_mt.a) > else (NOT WIN32) > set(ZOOKEEPER_LFLAG zookeeper) > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/3rdparty/cmake/Versions.cmake > ---------------------------------------------------------------------- > diff --git a/3rdparty/cmake/Versions.cmake b/3rdparty/cmake/Versions.cmake > index ad23f38..9127263 100644 > --- a/3rdparty/cmake/Versions.cmake > +++ b/3rdparty/cmake/Versions.cmake > @@ -4,7 +4,7 @@ set(ELFIO_VERSION "3.2") > set(GLOG_VERSION "0.3.3") > set(GMOCK_VERSION "1.7.0") > set(HTTP_PARSER_VERSION "2.6.2") > -set(LEVELDB_VERSION "1.4") > +set(LEVELDB_VERSION "1.19") > set(LIBAPR_VERSION "1.5.2") > set(LIBEV_VERSION "4.22") > # TODO(hausdorff): (MESOS-3529) transition this back to a non-beta version. > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/3rdparty/leveldb-1.19.patch > ---------------------------------------------------------------------- > diff --git a/3rdparty/leveldb-1.19.patch b/3rdparty/leveldb-1.19.patch > new file mode 100644 > index 0000000..e281e95 > --- /dev/null > +++ b/3rdparty/leveldb-1.19.patch > @@ -0,0 +1,30 @@ > +diff --git a/build_detect_platform b/build_detect_platform > +index bb76c4f..c403e91 100755 > +--- a/build_detect_platform > ++++ b/build_detect_platform > +@@ -190,24 +190,7 @@ EOF > + COMMON_FLAGS="$COMMON_FLAGS -DLEVELDB_PLATFORM_POSIX" > + fi > + > +- # Test whether Snappy library is installed > +- # http://code.google.com/p/snappy/ > +- $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT 2>/dev/null <<EOF > +- #include <snappy.h> > +- int main() {} > +-EOF > +- if [ "$?" = 0 ]; then > +- COMMON_FLAGS="$COMMON_FLAGS -DSNAPPY" > +- PLATFORM_LIBS="$PLATFORM_LIBS -lsnappy" > +- fi > +- > +- # Test whether tcmalloc is available > +- $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -ltcmalloc 2>/dev/null <<EOF > +- int main() {} > +-EOF > +- if [ "$?" = 0 ]; then > +- PLATFORM_LIBS="$PLATFORM_LIBS -ltcmalloc" > +- fi > ++# Removed tests for TCMALLOC and SNAPPY to prevent additional dependencies. > + > + rm -f $CXXOUTPUT 2>/dev/null > + fi > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/3rdparty/leveldb-1.19.tar.gz > ---------------------------------------------------------------------- > diff --git a/3rdparty/leveldb-1.19.tar.gz b/3rdparty/leveldb-1.19.tar.gz > new file mode 100644 > index 0000000..6f15c06 > Binary files /dev/null and b/3rdparty/leveldb-1.19.tar.gz differ > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/3rdparty/leveldb-1.4.patch > ---------------------------------------------------------------------- > diff --git a/3rdparty/leveldb-1.4.patch b/3rdparty/leveldb-1.4.patch > deleted file mode 100644 > index b899f01..0000000 > --- a/3rdparty/leveldb-1.4.patch > +++ /dev/null > @@ -1,57 +0,0 @@ > -diff --git a/build_detect_platform b/build_detect_platform > -index b71bf02..864e5fb 100755 > ---- a/build_detect_platform > -+++ b/build_detect_platform > -@@ -128,24 +128,8 @@ EOF > - COMMON_FLAGS="$COMMON_FLAGS -DLEVELDB_PLATFORM_POSIX" > - fi > - > -- # Test whether Snappy library is installed > -- # http://code.google.com/p/snappy/ > -- $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF > -- #include <snappy.h> > -- int main() {} > --EOF > -- if [ "$?" = 0 ]; then > -- COMMON_FLAGS="$COMMON_FLAGS -DSNAPPY" > -- PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lsnappy" > -- fi > -+# Removed tests for TCMALLOC and SNAPPY to prevent additional dependencies. > - > -- # Test whether tcmalloc is available > -- $CXX $CFLAGS -x c++ - -o /dev/null -ltcmalloc 2>/dev/null <<EOF > -- int main() {} > --EOF > -- if [ "$?" = 0 ]; then > -- PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -ltcmalloc" > -- fi > - fi > - > - PLATFORM_CCFLAGS="$PLATFORM_CCFLAGS $COMMON_FLAGS" > -diff --git a/port/atomic_pointer.h b/port/atomic_pointer.h > -index 35ae550..b4769b3 100644 > ---- a/port/atomic_pointer.h > -+++ b/port/atomic_pointer.h > -@@ -36,6 +36,8 @@ > - #define ARCH_CPU_X86_FAMILY 1 > - #elif defined(__ARMEL__) > - #define ARCH_CPU_ARM_FAMILY 1 > -+#elif defined(__ppc__) || defined(__powerpc__) || defined(__powerpc64__) > -+#define ARCH_CPU_PPC_FAMILY 1 > - #endif > - > - namespace leveldb { > -@@ -83,6 +85,13 @@ inline void MemoryBarrier() { > - } > - #define LEVELDB_HAVE_MEMORY_BARRIER > - > -+// PPC > -+#elif defined(ARCH_CPU_PPC_FAMILY) && defined(__GNUC__) > -+inline void MemoryBarrier() { > -+ asm volatile("lwsync" : : : "memory"); > -+} > -+#define LEVELDB_HAVE_MEMORY_BARRIER > -+ > - #endif > - > - // AtomicPointer built using platform-specific MemoryBarrier() > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/3rdparty/leveldb-1.4.tar.gz > ---------------------------------------------------------------------- > diff --git a/3rdparty/leveldb-1.4.tar.gz b/3rdparty/leveldb-1.4.tar.gz > deleted file mode 100644 > index 2ddbc0c..0000000 > Binary files a/3rdparty/leveldb-1.4.tar.gz and /dev/null differ > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/3rdparty/versions.am > ---------------------------------------------------------------------- > diff --git a/3rdparty/versions.am b/3rdparty/versions.am > index 26f839c..b814470 100644 > --- a/3rdparty/versions.am > +++ b/3rdparty/versions.am > @@ -25,7 +25,7 @@ GLOG_VERSION = 0.3.3 > GMOCK_VERSION = 1.7.0 > GPERFTOOLS_VERSION = 2.5 > HTTP_PARSER_VERSION = 2.6.2 > -LEVELDB_VERSION = 1.4 > +LEVELDB_VERSION = 1.19 > LIBEV_VERSION = 4.22 > NVML_VERSION = 352.79 > PICOJSON_VERSION = 1.3.0 > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/LICENSE > ---------------------------------------------------------------------- > diff --git a/LICENSE b/LICENSE > index 7946d1d..f11970c 100644 > --- a/LICENSE > +++ b/LICENSE > @@ -428,7 +428,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > SUCH DAMAGE. > > > ====================================================================== > -For leveldb (3rdparty/leveldb-1.4.tar.gz): > +For leveldb (3rdparty/leveldb-1.19.tar.gz): > ====================================================================== > > Copyright (c) 2011 The LevelDB Authors. All rights reserved. > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/src/Makefile.am > ---------------------------------------------------------------------- > diff --git a/src/Makefile.am b/src/Makefile.am > index c21a073..89fc72b 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -171,7 +171,7 @@ MESOS_CPPFLAGS += -I../$(LEVELDB)/include > # the installed libmesos.la file to include leveldb in > # 'dependency_libs' (via '-L../3rdparty/leveldb -lleveldb'). > > -LIB_LEVELDB = ../$(LEVELDB)/libleveldb.a > +LIB_LEVELDB = ../$(LEVELDB)/out-static/libleveldb.a > else > LIB_LEVELDB = -lleveldb > LDADD += -lleveldb > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/src/python/native_common/ext_modules.py.in > ---------------------------------------------------------------------- > diff --git a/src/python/native_common/ext_modules.py.in > b/src/python/native_common/ext_modules.py.in > index 2d4a45e..e0bb335 100644 > --- a/src/python/native_common/ext_modules.py.in > +++ b/src/python/native_common/ext_modules.py.in > @@ -31,7 +31,7 @@ def _create_module(module_name): > ext_common_dir = os.path.join( > 'src', 'python', 'native_common') > > - leveldb = os.path.join('3rdparty', 'leveldb-1.4') > + leveldb = os.path.join('3rdparty', 'leveldb-1.19') > zookeeper = os.path.join('3rdparty', 'zookeeper-3.4.8', 'src', 'c') > libprocess = os.path.join('3rdparty', 'libprocess') > > @@ -74,7 +74,7 @@ def _create_module(module_name): > # For leveldb, we need to check for the presence of libleveldb.a, since > # it is possible to disable leveldb inside mesos. > libglog = os.path.join(abs_top_builddir, glog, '.libs', 'libglog.a') > - libleveldb = os.path.join(abs_top_builddir, leveldb, 'libleveldb.a') > + libleveldb = os.path.join(abs_top_builddir, leveldb, 'out-static', > 'libleveldb.a') > libzookeeper = os.path.join( > abs_top_builddir, zookeeper, '.libs', 'libzookeeper_mt.a') > libprotobuf = os.path.join( > > http://git-wip-us.apache.org/repos/asf/mesos/blob/74878e25/support/mesos-tidy/entrypoint.sh > ---------------------------------------------------------------------- > diff --git a/support/mesos-tidy/entrypoint.sh > b/support/mesos-tidy/entrypoint.sh > index 4f03a60..5dbaa60 100755 > --- a/support/mesos-tidy/entrypoint.sh > +++ b/support/mesos-tidy/entrypoint.sh > @@ -45,7 +45,7 @@ cmake --build 3rdparty --target http_parser-2.6.2 -- -j > $(nproc) > cmake --build 3rdparty --target libev-4.22 -- -j $(nproc) || true > cmake --build 3rdparty --target libevent-2.1.5-beta -- -j $(nproc) || true > > -cmake --build 3rdparty --target leveldb-1.4 -- -j $(nproc) > +cmake --build 3rdparty --target leveldb-1.19 -- -j $(nproc) > cmake --build 3rdparty --target nvml-352.79 -- -j $(nproc) > cmake --build 3rdparty --target picojson-1.3.0 -- -j $(nproc) > cmake --build 3rdparty --target protobuf-2.6.1 -- -j $(nproc) >