You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by ab...@apache.org on 2022/10/05 16:41:41 UTC

[kudu] 01/02: KUDU-3404 disable TLS in glog

This is an automated email from the ASF dual-hosted git repository.

abukor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git

commit eacfee6fe2a9d323985225af0174ea6bb161f090
Author: Marton Greber <gr...@gmail.com>
AuthorDate: Tue Oct 4 22:07:43 2022 +0200

    KUDU-3404 disable TLS in glog
    
    Glog 0.4.0 introduced support for using thread local storage for its
    buffer. This feature is controlled by the WITH_TLS CMake variable, and
    it defaults to ON. [1] When Kudu upgraded to glog 0.6.0 as part of the
    Apple Silicon (M Series) fixes [2], it increased the thread local
    storage usage by >30000 bytes.
    
    This is a problem for Impala, because Impala starts a JVM. There are
    certain JVM threads (like the "reaper thread") that have very small
    stacks (e.g. 32KB) and with glibc the TLS space is allocated at the
    expense of stack space. [3] 30k of TLS usage leaves very little for the
    reaper thread. There are a series of bugs where the Java reaper thread
    hits a StackOverflowException because of high TLS usage. [4] This can
    cause various symptoms including hangs.
    To resolve Impala's problem, it would be useful to build
    libkudu_client.so with glog's WITH_TLS=OFF.
    
    [1] https://github.com/google/glog/commit/
        2df0ca34aa3000dadf76633ca700abf0bf50756d
    [2] https://github.com/apache/kudu/commit/
        543e128d473f8f7836e605bba8cd6512fa918550
    [3] https://sourceware.org/bugzilla/show_bug.cgi?id=11787
    [4] JDK bugs: JDK-8217475, JDK-8225035
    
    Change-Id: I6b2151f7355ebb6a9ea120e5aa675c81eb3842ab
    Reviewed-on: http://gerrit.cloudera.org:8080/19089
    Tested-by: Kudu Jenkins
    Reviewed-by: Attila Bukor <ab...@apache.org>
---
 thirdparty/build-definitions.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/thirdparty/build-definitions.sh b/thirdparty/build-definitions.sh
index ced8791ca..8dae63614 100644
--- a/thirdparty/build-definitions.sh
+++ b/thirdparty/build-definitions.sh
@@ -456,6 +456,7 @@ build_glog() {
       -DCMAKE_SHARED_LINKER_FLAGS="$EXTRA_LDFLAGS $EXTRA_LIBS -Wl,-rpath,$PREFIX/lib" \
       -DBUILD_SHARED_LIBS=$SHARED \
       -DBUILD_TESTING=OFF \
+      -DWITH_TLS=OFF \
       $EXTRA_CMAKE_FLAGS \
       $GLOG_SOURCE
     ${NINJA:-make} -j$PARALLEL $EXTRA_MAKEFLAGS install