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/
[2] https://github.com/apache/kudu/commit/
[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 <abukor@apache.org>
1 file changed