Commit Graph

650 Commits

Author SHA1 Message Date
Jim Apple
01b5973c40 single_node_perf_run.py: clean up newly-added testdata
In single_node_perf_run.py, restore_workloads() can make the tree
"dirty", and when a tree is dirty, git won't let you switch branches
in a way that clobbers the dirty file contents:

    $ cd $(mktemp -d)
    $ git init .
    Initialized empty Git repository in /tmp/tmp.H0NxzTXLUj/.git/
    $ touch foo && git add foo && git commit -a -m "foo"
    [master (root-commit) 3776149] foo
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 foo
    $ git checkout -b ok_foo && echo "ok" >> foo && git commit -a -m "foo is ok"
    Switched to a new branch 'ok_foo'
    [ok_foo 9fd5bde] foo is ok
     1 file changed, 1 insertion(+)
    $ git checkout master && echo "not ok" >> foo
    Switched to branch 'master'
    $ git checkout ok_foo
    error: Your local changes to the following files would be overwritten by checkout:
            foo
    Please, commit your changes or stash them before you can switch branches.
    Aborting

Discovered when testing single_node_perf_run with
https://gerrit.cloudera.org/#/c/7153/; after this commit, that patch
works with single_node_perf_run.py

Change-Id: Id0220f3cd7a26d2627e40cd432c23815a6d65ea4
Reviewed-on: http://gerrit.cloudera.org:8080/7291
Reviewed-by: Jim Apple <jbapple-impala@apache.org>
Tested-by: Impala Public Jenkins
2017-07-11 00:12:24 +00:00
Thomas Tauber-Marshall
3ca5a76682 Bump Kudu version to bbed78c
Change-Id: I595a291885756b3e9138a67e747389cb7fdf7133
Reviewed-on: http://gerrit.cloudera.org:8080/7334
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-30 00:46:37 +00:00
Tim Armstrong
9b0d71faaa Bump toolchain version
Bump the versions to keep things in sync with native-toolchain master.

The new toolchain version includes fixes to compile with GCC 7,
including a backported boost patch.

Change-Id: I6e6ee4d654987b026c12fae27c946f02448da0ff
Reviewed-on: http://gerrit.cloudera.org:8080/7306
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Reviewed-by: Lars Volker <lv@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-27 22:52:07 +00:00
David Knupp
29d2587bd6 IMPALA-5517: Allow IMPALA_LOGS_DIR to be overridden
Tested by exporting a different IMPALA_LOGS_DIR path, then confirming
that it was not changed by sourcing impala-config.sh.

Change-Id: I4028813bd4f53815139225abd57845bb304ae3e4
Reviewed-on: http://gerrit.cloudera.org:8080/7197
Reviewed-by: David Knupp <dknupp@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-22 01:25:15 +00:00
Thomas Tauber-Marshall
3008a7e664 IMPALA-5540: Revert Sentry version back to 5.13
Sentry has now fixed the problem on their end, so we can
return to using 5.13.

Change-Id: Ie4c29a69c90b0c5d06e17b46a837c880290f3b17
Reviewed-on: http://gerrit.cloudera.org:8080/7247
Reviewed-by: Henry Robinson <henry@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-21 21:23:12 +00:00
Matthew Jacobs
605a2711f6 Bump Kudu version to c0798a9
Change-Id: I3523f2b769cff6ab3a6aac97ec36f6bb3bda5e0f
Reviewed-on: http://gerrit.cloudera.org:8080/7246
Reviewed-by: Thomas Tauber-Marshall <tmarshall@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-21 20:07:30 +00:00
Henry Robinson
abd4ddac3e Bump thrift toolchain version to 0.9.0-p9
The toolchain has already been built at least once with 0.9.0-p9
installed, so a good idea to bump this now in case we forget next time
someone wants to upgrade a dependency.

Change-Id: I3ba43d0ca24445c69b2931aff0b7fc92ebd5edbf
Reviewed-on: http://gerrit.cloudera.org:8080/7238
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-21 03:36:12 +00:00
Henry Robinson
352ad55dbf IMPALA-5530: Revert Sentry version to 5.12
Temporary version revert while address the root cause of IMPALA-5530.

Testing: passed FE and EE automated tests.

Change-Id: I605dd2f8b83638359641e4d2506631e62a245cae
Reviewed-on: http://gerrit.cloudera.org:8080/7230
Reviewed-by: Alex Behm <alex.behm@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-20 20:31:19 +00:00
Taras Bobrovytsky
a07253a814 Increment version to 2.10.0-SNAPSHOT
Change-Id: I884fd141a20c09968b8934c407856090f731b4a9
Reviewed-on: http://gerrit.cloudera.org:8080/7214
Reviewed-by: Jim Apple <jbapple-impala@apache.org>
Tested-by: Impala Public Jenkins
2017-06-17 02:30:11 +00:00
Henry Robinson
d6abb29dc9 IMPALA-4669: [KUTIL] Import kudu_util library from kudu@314c9d8
Update LICENSE.txt and rat_exclude_files.txt

Change-Id: I6d89384730b60354b5fae2b1472183d2a561d170
Reviewed-on: http://gerrit.cloudera.org:8080/5714
Reviewed-by: Henry Robinson <henry@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-17 00:42:48 +00:00
Jim Apple
de9f5230eb IMPALA-5482: fix git checkout when workloads are modified
When git checkout would overwrite changes, it fails and alerts the
user to do something with the changes. This patch removes any changes
to files induced by the workload copy-and-paste.

Testing: using a patch provided by Lars Volker that touched
testdata/workloads/ (https://gerrit.cloudera.org/#/c/7073/), I was
able to reproduce the problem he saw and see that this patch fixed it.

Change-Id: I9a0d004c353eb4b547aeaf3c56289594326653d7
Reviewed-on: http://gerrit.cloudera.org:8080/7145
Reviewed-by: Lars Volker <lv@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-11 18:20:22 +00:00
Matthew Jacobs
fda539a1dc Bump Kudu version for 1.4.0-RC1
Change-Id: Icee687aa00e79274ecc1d53235f23253f8f338df
Reviewed-on: http://gerrit.cloudera.org:8080/7093
Tested-by: Impala Public Jenkins
Reviewed-by: Lars Volker <lv@cloudera.com>
2017-06-06 16:17:32 +00:00
Thomas Tauber-Marshall
9400af6178 IMPALA-5428: update external hadoop ecosystem versions
This patch updates the versions of the Hadoop ecosystem components that
we used to run system/integration tests with Impala - Hadoop, Sentry,
HBase, Hive, Parquet, and Kudu.

The necessary tarballs are in S3, and I privately tested that an
exhaustive build+tests succeeds.

Change-Id: Ib96c7532d381e1527dfc653709c6ecba3bbd16c4
Reviewed-on: http://gerrit.cloudera.org:8080/7076
Reviewed-by: Thomas Tauber-Marshall <tmarshall@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-06 05:05:21 +00:00
Matthew Jacobs
5089aecdd4 Bump toolchain patch versions: boost, crcutil, breakpad
Several toolchain commits have recently gone in. A new
toolchain build was produced, and this updates Impala to use
the latest versions.

See:
6e726b4b81
f0105fd355

Tested with an exhaustive build.

Change-Id: Id416659cf8efeee941e1160f7de8a1bbf5d04384
Reviewed-on: http://gerrit.cloudera.org:8080/7085
Reviewed-by: Lars Volker <lv@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-06 03:40:29 +00:00
Thomas Tauber-Marshall
ce31572792 IMPALA-5426: Update Hive schema script to 1.1.0
A recent update to Hive changed its schema, which is causing
the metastore not to come up when run against the latest version
of Hive as we've hard coded the Hive schema script version in
bin/create-test-configuration.sh to an old version.

This patch updates the version to the latest. The schema script
is included in Hive in the toolchain and the new version will
already be present.

By itself, this patch does not actually change the Hive schema
by default as the version we usually build against doesn't have
the change. A following patch will update impala-config.sh to pull
in the latest version of Hive.

In the long run, we should switch to using Hive's schema tool,
which can do this for us automatically (IMPALA-5430).

Testing:
- Ran an exhaustive private Jenkins build that passed.

Change-Id: I9ea3269c1f95f76d8c02b76a5dea3ca3aa324b70
Reviewed-on: http://gerrit.cloudera.org:8080/7072
Reviewed-by: Lars Volker <lv@cloudera.com>
Tested-by: Impala Public Jenkins
2017-06-05 21:09:16 +00:00
Jim Apple
07a7138817 Add a script to test performance on a developer machine
This is a migration from an old and broken script from another
repository. Example use:

    bin/single_node_perf_run.py --ninja --workloads targeted-perf \
      --load --scale 4 --iterations 20 --num_impalads 3 \
      --start_minicluster --query_names PERF_AGG-Q3 \
      $(git rev-parse HEAD~1) $(git rev-parse HEAD)

The script can load data, run benchmarks, and compare the statistics
of those runs for significant differences in performance. It glues
together buildall.sh, bin/load-data.py, bin/run-workload.py, and
tests/benchmark/report_benchmark_results.py.

Change-Id: I70ba7f3c28f612a370915615600bf8dcebcedbc9
Reviewed-on: http://gerrit.cloudera.org:8080/6818
Reviewed-by: Jim Apple <jbapple-impala@apache.org>
Tested-by: Impala Public Jenkins
2017-05-31 08:10:48 +00:00
Thomas Tauber-Marshall
bbca087939 Bumped Kudu version to 795c435
This is needed for IMPALA-5167.

Change-Id: I925f5d746dcb497e17ab6f85217da9fcee1d4c00
Reviewed-on: http://gerrit.cloudera.org:8080/6975
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-05-25 20:59:38 +00:00
Sailesh Mukil
50bd015f2d IMPALA-5333: Add support for Impala to work with ADLS
This patch leverages the AdlFileSystem in Hadoop to allow
Impala to talk to the Azure Data Lake Store. This patch has
functional changes as well as adds test infrastructure for
testing Impala over ADLS.

We do not support ACLs on ADLS since the Hadoop ADLS
connector does not integrate ADLS ACLs with Hadoop users/groups.

For testing, we use the azure-data-lake-store-python client
from Microsoft. This client seems to have some consistency
issues. For example, a drop table through Impala will delete
the files in ADLS, however, listing that directory through
the python client immediately after the drop, will still show
the files. This behavior is unexpected since ADLS claims to be
strongly consistent. Some tests have been skipped due to this
limitation with the tag SkipIfADLS.slow_client. Tracked by
IMPALA-5335.

The azure-data-lake-store-python client also only works on CentOS 6.6
and over, so the python dependencies for Azure will not be downloaded
when the TARGET_FILESYSTEM is not "adls". While running ADLS tests,
the expectation will be that it runs on a machine that is at least
running CentOS 6.6.
Note: This is only a test limitation, not a functional one. Clusters
with older OSes like CentOS 6.4 will still work with ADLS.

Added another dependency to bootstrap_build.sh for the ADLS Python
client.

Testing: Ran core tests with and without TARGET_FILESYSTEM as
'adls' to make sure that all tests pass and that nothing breaks.

Change-Id: Ic56b9988b32a330443f24c44f9cb2c80842f7542
Reviewed-on: http://gerrit.cloudera.org:8080/6910
Tested-by: Impala Public Jenkins
Reviewed-by: Sailesh Mukil <sailesh@cloudera.com>
2017-05-25 19:35:24 +00:00
Jim Apple
514e04ea4f Ninja support: use MAKE_CMD in run-backend-tests.sh when possible
Without this, buildall.sh -ninja fails to run the backend tests or
runs them with the Makefiles that were created when buildall.sh was
last run without the -ninja flag.

Change-Id: Idb920dd4b08d8ef5fbc0bf1ea1b424a0c544e1db
Reviewed-on: http://gerrit.cloudera.org:8080/6942
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins
2017-05-22 04:51:19 +00:00
Lars Volker
8afb59045e IMPALA-5187, IMPALA-5208: Bump Breakpad Version, undo IMPALA-3794
This change switches to a new Breakpad version, which includes fixes for
Breakpad bugs #681 and #728. The toolchain change was reviewed here:
https://gerrit.cloudera.org/6866

The change also undoes the workaround introduced in IMPALA-3794.

In addition to running test_breakpad.py in a loop for a while, I tested
Then I verified that the test fails with the old toolchain version
(88e5b2) and works with the new one (ffe3e4).

To test #728 I added a sleep() call before SendContinueSignalToChild()
and then killed the parent process, manually observing that the child
would die, too.

Change-Id: Ic541ccd565f2bb51f68c085747fc47ae8c905d19
Reviewed-on: http://gerrit.cloudera.org:8080/6883
Reviewed-by: Lars Volker <lv@cloudera.com>
Tested-by: Impala Public Jenkins
2017-05-17 15:19:12 +00:00
Henry Robinson
d1910a39fc IMPALA-5174: Bump gflags to 2.2.0-p1
This gflags patch adds DEFINE_int32_hidden() etc. macros, which suppress
flags from appearing in /varz, --help and other flag enumerations.

Our toolchain glog is statically linked against gflags, and therefore
had to be rebuilt, however its version number did not change. You will
likely need to do the following:

rm -rf ${IMPALA_TOOLCHAIN_DIR}/glog-0.3.4-p2/

before running bin/bootstrap_toolchain.py, otherwise building Impala may
fail with a linking error.

Change-Id: Ibc09a750879a8eae8b3549b9438241cb7c4448ed
Reviewed-on: http://gerrit.cloudera.org:8080/6889
Reviewed-by: Lars Volker <lv@cloudera.com>
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-05-17 09:11:05 +00:00
Matthew Jacobs
060b80fd9a Bump Kudu version to 7533364
Change-Id: I88dc2d425bd3aff70c95d51818d0450709123d27
Reviewed-on: http://gerrit.cloudera.org:8080/6797
Tested-by: Impala Public Jenkins
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
2017-05-11 03:30:25 +00:00
Tim Armstrong
fd62a7f774 IMPALA-5245: fix ASAN buffer-allocator-test
* Use the allocator_may_return_null=1 ASAN option so that the allocation
  just fails instead of crashing the process.
* Work around an bug in the implementation of the option where
  posix_memalign() does not return ENOMEM. I filed an upstream bug
  https://bugs.llvm.org/show_bug.cgi?id=32968.

Change-Id: I2f295f841b8b6e7996d54bdf2dfc0a092dcb864c
Reviewed-on: http://gerrit.cloudera.org:8080/6819
Reviewed-by: Jim Apple <jbapple-impala@apache.org>
Tested-by: Impala Public Jenkins
2017-05-09 01:25:03 +00:00
Tim Armstrong
25ba76287e IMPALA-5207,IMPALA-5214: distcc fixes
enable_distcc should reset IMPALA_DISTCC_ENABLED, otherwise
disable_distcc is not reversible.

Remove the requirement of a toolchain at /opt/Impala-Toolchain. We can
easily identify paths starting with $IMPALA_TOOLCHAIN and remap them in
distcc.sh.

Testing:
Did a local build with distcc with IMPALA_TOOLCHAIN at a different
location. Tried toggling disable_distcc and enable_distcc.

Change-Id: Ic6456d0101cd15287c543cb576be6cd2391f1f26
Reviewed-on: http://gerrit.cloudera.org:8080/6655
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-05-08 22:38:00 +00:00
Tim Armstrong
bdad90e695 IMPALA-5184: build fe against both Hive 1 & 2 APIs
This adds a compatibility shim layer with Hive 1 and Hive 2
implementations. The version-specific code lives in
fe/src/compat-hive-$IMPALA_HIVE_MAJOR_VERSION and
common/thrift/hive-$IMPALA_HIVE_MAJOR_VERSION-api/

The shim adds wrapper methods to handle differing method signatures
and and config variables that changed slightly.

Some thrift classes were also moved from the 'cli' to 'rpc' package.
We work around these by implementing subclasses with the same name
in a different package for compatibility or by implementing shim
methods that operate on the classes. We also need to change the
package in the TCLIService.thrift, which is done with a
search-and-replace.

Also avoid the sticky config variable problem with some of the source
paths by requiring an _OVERRIDE suffix on the variable to override it
from the environment.

Testing:
Made sure that I could build Impala on master as normal, and also
with the following config overrides in bin/impala-config-local.sh:

  export IMPALA_HADOOP_VERSION=3.0.0-alpha1-cdh6.x-SNAPSHOT
  export IMPALA_HBASE_VERSION=2.0.0-cdh6.x-SNAPSHOT
  export IMPALA_HIVE_VERSION=2.1.0-cdh6.x-SNAPSHOT
  export IMPALA_SENTRY_VERSION=1.5.1-cdh6.x-SNAPSHOT
  export IMPALA_PARQUET_VERSION=1.5.0-cdh6.x-SNAPSHOT

I manually assembled the dependencies by copying the following files
from the Hive 2 source and from a Hadoop 3 build:
$CDH_COMPONENTS_HOME/hive-2.1.0-cdh6.x-SNAPSHOT/src/metastore/if/hive_metastore.thrift
$CDH_COMPONENTS_HOME/hadoop-3.0.0-alpha1-cdh6.x-SNAPSHOT/lib/native/*
$CDH_COMPONENTS_HOME/hadoop-3.0.0-alpha1-cdh6.x-SNAPSHOT/include/hdfs.h

Change-Id: Ifbc265281c04fe3136bc3c920dbac966742ce09a
Reviewed-on: http://gerrit.cloudera.org:8080/5538
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins
2017-05-08 21:36:36 +00:00
Thomas Tauber-Marshall
920641ffdc IMPALA-5080: OutOfMemory PermGen space
A previous fix for this increased the MaxPermGen size.
However, during the review process an extraneous character
was accidentally inserted that rendered the fix ineffective.

Testing:
- Ran the test, test_java_udfs, in a loop for a while.

Change-Id: If0096384e419c0a059f555d325314e46e7ebfdb8
Reviewed-on: http://gerrit.cloudera.org:8080/6790
Reviewed-by: Alex Behm <alex.behm@cloudera.com>
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-05-04 01:30:26 +00:00
Thomas Tauber-Marshall
a2a0825b2f Bump Kudu version to 238249c
This will pull in the Kudu client partitioner API, which is needed for
IMPALA-3742.

Change-Id: I92587a8061ce70ecd9dac4889bda550636982767
Reviewed-on: http://gerrit.cloudera.org:8080/6718
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-05-01 20:04:55 +00:00
Dimitris Tsirogiannis
e2c53a8bdf IMPALA-5147: Add the ability to exclude hosts from query execution
This commit introduces a new startup option, termed 'is_executor',
that determines whether an impalad process can execute query fragments.
The 'is_executor' option determines if a specific host will be included
in the scheduler's backend configuration and hence included in
scheduling decisions.

Testing:
- Added a customer cluster test.
- Added a new scheduler test.

Change-Id: I5d2ff7f341c9d2b0649e4d14561077e166ad7c4d
Reviewed-on: http://gerrit.cloudera.org:8080/6628
Reviewed-by: Dimitris Tsirogiannis <dtsirogiannis@cloudera.com>
Tested-by: Impala Public Jenkins
2017-04-26 01:45:40 +00:00
Jim Apple
72cf359ff3 IMPALA-4544: ASAN should ignore SEGV and leaks
The environment variable ASAN_OPTIONS had always bee set to
"handle_segv=0 detect_leaks=0" on Jenkins ASAN jobs in the pre-Apache
era, but this had slipped through the cracks.

Change-Id: I055aa25d5ca41419bf3fc8a30a8fb8774ab05b18
Reviewed-on: http://gerrit.cloudera.org:8080/6600
Reviewed-by: Jim Apple <jbapple-impala@apache.org>
Tested-by: Impala Public Jenkins
2017-04-22 20:46:09 +00:00
Jim Apple
634c2f7b9f IMPALA-5031: Apply UBSan options to catalogd
catalogd runs some C++ code, and that code can have undefined
behavior. This patch sets up the catalogd environment to give stack
traces and it excludes the libstdc++ undefined behavior from causing a
warning to be printed, as described in commit b41c2114f4.

Change-Id: I520f8620d9b9f516ca5c55da5294de619e8e2d8f
Reviewed-on: http://gerrit.cloudera.org:8080/6652
Reviewed-by: Jim Apple <jbapple-impala@apache.org>
Tested-by: Impala Public Jenkins
2017-04-20 03:18:54 +00:00
Thomas Tauber-Marshall
1fa331537a IMPALA-5080: OutOfMemory PermGen space
The problem is that over time our usage of PermGen space has
gradually gone up, recently hitting a point where we may run
out during testing. The fix is to increase the allowed max
perm gen space.

The default is 64mb on 32bit systems and 82mb on 64bit systems.
After bumping it up to 128mb, I haven't seen any failures on my
machine.

I also verified that this is not a leak by running the test,
test_java_udfs, 10 times, checking the perm gen usage with jmap,
running it a further 300 times, and checking that the perm gen
usage remained the same.

Change-Id: Iccfb69cdf7958e053890089db6a82ad491fb5b9d
Reviewed-on: http://gerrit.cloudera.org:8080/6642
Tested-by: Impala Public Jenkins
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
2017-04-18 20:02:44 +00:00
Michael Brown
75980d891a IMPALA-5171: update RAT excluded files list
This commit

IMPALA-5140: improve docs building guidelines

renamed a file, but the RAT exclusion list wasn't update. This patch
fixes the exclusion.

Change-Id: I07c64ba2fda7a996f24a49417e3e5485872589f7
Reviewed-on: http://gerrit.cloudera.org:8080/6561
Reviewed-by: Jim Apple <jbapple-impala@apache.org>
Tested-by: Impala Public Jenkins
2017-04-05 22:27:20 +00:00
Tim Armstrong
fd1b40d571 IMPALA-4701: make distcc work reliably with clang
The previous compiler-switching method in distcc had some problems:
* It duplicated logic from CMakeLists.txt in choosing flags to pass to
  clang
* In order to switch to ASAN, you needed to remember to change distcc
  settings.
* The wrapper script approach interacted badly with ccache - GCC and
  Clang-generated artifacts would be treated as equivalent by ccache,
  meaning that if you accidentally build with the wrong compiler setting
  and the artifacts got into the cache you needed to clear ccache.

Instead of using environment variables to set the compiler, we now
pass the compiler as an argument to distcc.sh and set things up
in CMakeLists.txt the same way as ccache. Switching to/from
clang builds now requires no extra step (aside from cleaning
out the cmake-generated files with clean.sh).

Also changes the name of the config file

Testing:
Tested switching between debug and asan builds locally.

Change-Id: I199b245fb14b6c3484b66339a7d4b37d74755af7
Reviewed-on: http://gerrit.cloudera.org:8080/6493
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins
2017-04-03 22:48:05 +00:00
Matthew Jacobs
a7bd260a4c IMPALA-4226, IMPALA-4227: Bump Breakpad version
Change-Id: I89cbcc3f5cc742a0f5700f3985c02482bdfd03d0
Reviewed-on: http://gerrit.cloudera.org:8080/6513
Reviewed-by: Lars Volker <lv@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-30 19:10:11 +00:00
Dimitris Tsirogiannis
296df3c826 IMPALA-4041: Limit catalog and admission control updates to coordinators
With this commit we add the ability to limit catalog updates to a
limited set of coordinator nodes. A new startup option, termed
'is_coordinator' is added to indicate if a node is a coordinator.
Coordinators accept connections through HS2 and Beeswax interfaces
and can also participate in query execution. Non-coordinator nodes
do not receive catalog updates from the statestore, do not initialize
a query scheduler and cannot accept Beeswax and HS2 client connections.

Testing:
- Added a custom cluster test that launches a cluster in which the
number of coordinators is less than the cluster size and runs a number
of smoke queries.
- Successfully run exhaustive tests.

Change-Id: I5f2c74abdbcd60ac050efa323616bd41182ceff3
Reviewed-on: http://gerrit.cloudera.org:8080/6344
Reviewed-by: Dimitris Tsirogiannis <dtsirogiannis@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-28 22:27:25 +00:00
Lars Volker
e98c88f233 IMPALA-5110: Add deb support to dump_breakpad_symbols.py
Change-Id: I524d2fe4660551c2fe4ff190b7e5bbb33d986b10
Reviewed-on: http://gerrit.cloudera.org:8080/6462
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-27 22:24:21 +00:00
Matthew Jacobs
52ab7ce501 Bump Kudu client version to 16dd6e4
Also sets the Java client version to
1.4.0-cdh5.12.0-SNAPSHOT

Change-Id: I9a8074640a6b93b5a65a1e0e2f22c7fe78754ad1
Reviewed-on: http://gerrit.cloudera.org:8080/6423
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-22 02:50:05 +00:00
Henry Robinson
2544f2394c IMPALA-5057: Upgrade glog (0.3.4-p2) and gflags (2.2.0)
Change-Id: If5c8718c67f021e18b3b95178b077fc147d6fcee
Reviewed-on: http://gerrit.cloudera.org:8080/6436
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-21 02:38:22 +00:00
Laszlo Gaal
aafcda0c9b IMPALA-4846: Upgrade Snappy to 1.1.4
Change-Id: I2f3439019ae22bbcf4db7f731e45ba5f7899fcc2
Reviewed-on: http://gerrit.cloudera.org:8080/6428
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Reviewed-by: Henry Robinson <henry@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-20 22:59:03 +00:00
Jim Apple
58e0753029 IMPALA-5031: Suppress noisy UBSAN errors from Thrift.
This suppresses a Thrift undefined behavior error in which a negative
value is left-shifted. See THRIFT-2026 for tracking.

One example backtrace from the expr-test backend test:

    /thrift/protocol/TCompactProtocol.tcc:375:13: runtime error: left shift of negative value -1
    #0 0x2b02fe247996 in apache::thrift::protocol::TCompactProtocolT<apache::thrift::transport::TMemoryBuffer>::i64ToZigzag(long) /thrift/protocol/TCompactProtocol.tcc:375:13
    #1 0x2b02fe247674 in apache::thrift::protocol::TCompactProtocolT<apache::thrift::transport::TMemoryBuffer>::writeI64(long) /thrift/protocol/TCompactProtocol.tcc:242:24
    #2 0x2b02fe239504 in apache::thrift::protocol::TVirtualProtocol<apache::thrift::protocol::TCompactProtocolT<apache::thrift::transport::TMemoryBuffer>, apache::thrift::protocol::TProtocolDefaults>::writeI64_virt(long) /thrift/protocol/TVirtualProtocol.h:409:12
    #3 0x2b03014a3a06 in apache::thrift::protocol::TProtocol::writeI64(long) /thrift/protocol/TProtocol.h:453:12
    #4 0x2b0301d55c02 in impala::TRuntimeProfileNode::write(apache::thrift::protocol::TProtocol*) const /generated-sources/gen-cpp/RuntimeProfile_types.cpp:827:11
    #5 0x2b0301d59e34 in impala::TRuntimeProfileTree::write(apache::thrift::protocol::TProtocol*) const /generated-sources/gen-cpp/RuntimeProfile_types.cpp:1017:15
    #6 0x2b02f6f8c7be in impala::Status impala::ThriftSerializer::Serialize<impala::TRuntimeProfileTree>(impala::TRuntimeProfileTree*, unsigned int*, unsigned char**) /src/rpc/thrift-util.h:67:7
    #7 0x2b02f6f0d23e in impala::Status impala::ThriftSerializer::Serialize<impala::TRuntimeProfileTree>(impala::TRuntimeProfileTree*, std::vector<unsigned char, std::allocator<unsigned char> >*) /src/rpc/thrift-util.h:54:31
    #8 0x2b02f6eec934 in impala::RuntimeProfile::SerializeToArchiveString(std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >*) const /src/util/runtime-profile.cc:727:19
    #9 0x2b02f6eec640 in impala::RuntimeProfile::SerializeToArchiveString() const /src/util/runtime-profile.cc:718:3
    #10 0x2b02feda626c in impala::ImpalaServer::ArchiveQuery(impala::ImpalaServer::QueryExecState const&) /src/service/impala-server.cc:671:39
    #11 0x2b02fedb57b0 in impala::ImpalaServer::UnregisterQuery(impala::TUniqueId const&, bool, impala::Status const*) /src/service/impala-server.cc:972:3
    #12 0x2b02ff15b666 in impala::ImpalaServer::close(beeswax::QueryHandle const&) /src/service/impala-beeswax-server.cc:236:29
    #13 0x2b030177dc14 in beeswax::BeeswaxServiceProcessor::process_close(int, apache::thrift::protocol::TProtocol*, apache::thrift::protocol::TProtocol*, void*) /generated-sources/gen-cpp/BeeswaxService.cpp:3543:5
    #14 0x2b0301763825 in beeswax::BeeswaxServiceProcessor::dispatchCall(apache::thrift::protocol::TProtocol*, apache::thrift::protocol::TProtocol*, std::string const&, int, void*) /generated-sources/gen-cpp/BeeswaxService.cpp:2952:3
    #15 0x2b03016bc2d6 in impala::ImpalaServiceProcessor::dispatchCall(apache::thrift::protocol::TProtocol*, apache::thrift::protocol::TProtocol*, std::string const&, int, void*) /generated-sources/gen-cpp/ImpalaService.cpp:1673:12
    #16 0x2b02f650138e in apache::thrift::TDispatchProcessor::process(boost::shared_ptr<apache::thrift::protocol::TProtocol>, boost::shared_ptr<apache::thrift::protocol::TProtocol>, void*) /thrift/TDispatchProcessor.h:121:12
    #17 0x1d4080a in apache::thrift::server::TThreadPoolServer::Task::run() (/build/debug/exprs/expr-test+0x1d4080a)
    #18 0x1d23e38 in apache::thrift::concurrency::ThreadManager::Worker::run() (/build/debug/exprs/expr-test+0x1d23e38)
    #19 0x2b02fe2be520 in impala::ThriftThread::RunRunnable(boost::shared_ptr<apache::thrift::concurrency::Runnable>, impala::Promise<unsigned long>*) /src/rpc/thrift-thread.cc:64:3
    #20 0x2b02fe2c4c6b in boost::_mfi::mf2<void, impala::ThriftThread, boost::shared_ptr<apache::thrift::concurrency::Runnable>, impala::Promise<unsigned long>*>::operator()(impala::ThriftThread*, boost::shared_ptr<apache::thrift::concurrency::Runnable>, impala::Promise<unsigned long>*) const /boost/bind/mem_fn_template.hpp:280:16
    #21 0x2b02fe2c498a in void boost::_bi::list3<boost::_bi::value<impala::ThriftThread*>, boost::_bi::value<boost::shared_ptr<apache::thrift::concurrency::Runnable> >, boost::_bi::value<impala::Promise<unsigned long>*> >::operator()<boost::_mfi::mf2<void, impala::ThriftThread, boost::shared_ptr<apache::thrift::concurrency::Runnable>, impala::Promise<unsigned long>*>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf2<void, impala::ThriftThread, boost::shared_ptr<apache::thrift::concurrency::Runnable>, impala::Promise<unsigned long>*>&, boost::_bi::list0&, int) /boost/bind/bind.hpp:392:9
    #22 0x2b02fe2c444b in boost::_bi::bind_t<void, boost::_mfi::mf2<void, impala::ThriftThread, boost::shared_ptr<apache::thrift::concurrency::Runnable>, impala::Promise<unsigned long>*>, boost::_bi::list3<boost::_bi::value<impala::ThriftThread*>, boost::_bi::value<boost::shared_ptr<apache::thrift::concurrency::Runnable> >, boost::_bi::value<impala::Promise<unsigned long>*> > >::operator()() /boost/bind/bind_template.hpp:20:16
    #23 0x2b02fe2c3709 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf2<void, impala::ThriftThread, boost::shared_ptr<apache::thrift::concurrency::Runnable>, impala::Promise<unsigned long>*>, boost::_bi::list3<boost::_bi::value<impala::ThriftThread*>, boost::_bi::value<boost::shared_ptr<apache::thrift::concurrency::Runnable> >, boost::_bi::value<impala::Promise<unsigned long>*> > >, void>::invoke(boost::detail::function::function_buffer&) /boost/function/function_template.hpp:153:11
    #24 0x2b02f70085d4 in boost::function0<void>::operator()() const /boost/function/function_template.hpp:766:14
    #25 0x2b02f6ff9710 in impala::Thread::SuperviseThread(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*) /src/util/thread.cc:325:3
    #26 0x2b02f7021783 in void boost::_bi::list4<boost::_bi::value<std::string>, boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::Promise<long>*> >::operator()<void (*)(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*), boost::_bi::list0&, int) /boost/bind/bind.hpp:457:9
    #27 0x2b02f70210ab in boost::_bi::bind_t<void, void (*)(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*), boost::_bi::list4<boost::_bi::value<std::string>, boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::Promise<long>*> > >::operator()() /boost/bind/bind_template.hpp:20:16
    #28 0x2b02f701faf5 in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(std::string const&, std::string const&, boost::function<void ()>, impala::Promise<long>*), boost::_bi::list4<boost::_bi::value<std::string>, boost::_bi::value<std::string>, boost::_bi::value<boost::function<void ()> >, boost::_bi::value<impala::Promise<long>*> > > >::run() /boost/thread/detail/thread.hpp:116:17
    #29 0xfaa189 in thread_proxy (/build/debug/exprs/expr-test+0xfaa189)
    #30 0x2b0305c5e183 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8183)
    #31 0x2b0305f6e37c in clone (/lib/x86_64-linux-gnu/libc.so.6+0xfa37c)

Change-Id: I74ece2157048e8cd24c2536c0a292d9c21f719b9
Reviewed-on: http://gerrit.cloudera.org:8080/6425
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-20 19:31:56 +00:00
Jim Apple
b41c2114f4 IMPALA-5031: Suppress noisy UBSAN errors.
The current version of the standard C++ library that Impala is often
compiled with (libstdc++ 4.9.2) contains some undefined behavior. This
patch prevents that behavior from showing up in UBSAN errors.

The behavior in question is in violation of chapter 5 ("Expressions")
paragraph 4: "If during the evaluation of an expression, the result is
not mathematically defined or not in the range of representable values
for its type, the behavior is undefined." The bitwise complement of an
enumeration value does not necessarily produce another value of the
same enumeration, so the following can exhibit undefined behavior:

    enum _Ios_Fmtflags {
      _S_boolalpha = 1L << 0,
      _S_dec = 1L << 1,
      _S_fixed = 1L << 2,
      _S_hex = 1L << 3,
      _S_internal = 1L << 4,
      _S_left = 1L << 5,
      _S_oct = 1L << 6,
      _S_right = 1L << 7,
      _S_scientific = 1L << 8,
      _S_showbase = 1L << 9,
      _S_showpoint = 1L << 10,
      _S_showpos = 1L << 11,
      _S_skipws = 1L << 12,
      _S_unitbuf = 1L << 13,
      _S_uppercase = 1L << 14,
      _S_adjustfield = _S_left | _S_right | _S_internal,
      _S_basefield = _S_dec | _S_oct | _S_hex,
      _S_floatfield = _S_scientific | _S_fixed,
      _S_ios_fmtflags_end = 1L << 16
    };

    _Ios_Fmtflags operator~(_Ios_Fmtflags __a) {
      return _Ios_Fmtflags(~static_cast<int>(__a));
    }

This patch also fixes some omissions from the last UBSAN patch and
sets the UBSAN environment variables in all the useful locations.

Change-Id: Iac7a568ccc2d90ee174ccc286c108d0b28018fbb
Reviewed-on: http://gerrit.cloudera.org:8080/6378
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-17 19:57:08 +00:00
Tim Armstrong
1bda28c485 IMPALA-5025: Update binutils to 2.26.1
This release includes the fix for IMPALA-3507 and the fix for
https://sourceware.org/bugzilla/show_bug.cgi?id=19520, which
made libImpalaUdf.a unusable by older linkers.

Change-Id: Idcc00efc13b1ff4fe8ce3aafcff0b7880908ad5b
Reviewed-on: http://gerrit.cloudera.org:8080/6287
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-09 08:03:29 +00:00
Lars Volker
408d0aec33 IMPALA-5034: Update Breakpad to newer version
This will give us better support for DWARF version 4, support for
redaction of sensitive data, and a multitude of bug fixes.

The Breakpad project does not do releases, so we update to a somewhat
arbitrary commit:

commit 88e5b2c8806bac3f2c80d2fe80094be5bd371601
Author: Scott Graham <scottmg@chromium.org>
Date:   Tue Feb 28 11:14:04 2017 -0800

Change-Id: I77eb54c0a9a3ad5d59994b22ef47da5817a7e858
Reviewed-on: http://gerrit.cloudera.org:8080/6273
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-08 21:33:15 +00:00
Michael Brown
61c32a903b IMPALA-5033: infra: update Hadoop ecosystem components
This patch updates the versions of the Hadoop ecosystem components that
we used to run system/integration tests with Impala, including Hadoop,
Sentry, HBase, and Hive.

The necessary tarballs are in S3, and I privately tested that an
exhaustive build+tests succeeds.

Change-Id: I1e71db140fa60dad5132def5287363b050380b83
Reviewed-on: http://gerrit.cloudera.org:8080/6268
Reviewed-by: Michael Brown <mikeb@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-07 03:59:18 +00:00
Dimitris Tsirogiannis
60c1c6e81b IMPALA-4966: Add flatbuffers to build
FlatBuffers version 1.6.0 is already included in the toolchain. This
commit adds it to the build system.

Change-Id: I2ca255ddf08ac846b454bfa1470ed67b1338d2b0
Reviewed-on: http://gerrit.cloudera.org:8080/6180
Reviewed-by: Dimitris Tsirogiannis <dtsirogiannis@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-02 09:43:03 +00:00
Jim Apple
93eb8ccbed Add a build flag for the undefined behavior sanitizer, aka "ubsan".
Ubsan checks for undefined behavior according to the C++
standard. Some of this behavior has been known to be exploited by
optimizing compilers to produce bizarre results, like taking both
branches of a conditional.

This patch only adds build options; fixing the errors ubsan finds, as
well as adding any tests that a build is free from ubsan errors, are
not covered in this patch.

Change-Id: I03044c657ac171daa0648f833bbbeed7bdde49cb
Reviewed-on: http://gerrit.cloudera.org:8080/6186
Reviewed-by: Dan Hecht <dhecht@cloudera.com>
Tested-by: Impala Public Jenkins
2017-03-01 03:09:17 +00:00
Henry Robinson
674d313251 IMPALA-4983: Set toolchain version to include LZ4 build flags
This bumps the toolchain version to include a change that compiles LZ4
with -O3.

Due to a limitation in the way the toolchain version dependencies,
existing downloads of LZ4 1.7.5 will not be updated. Therefore to ensure
you have the most recent binaries, do the following:

rm -rf ${IMPALA_TOOLCHAIN}/lz4-1.7.5/
cd ${IMPALA_HOME} && . bin/impala-config.sh
bin/bootstrap_toolchain.py

Change-Id: Ie9244188d44523227bab487a58f23954c4727c71
Reviewed-on: http://gerrit.cloudera.org:8080/6165
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-02-28 03:36:35 +00:00
Matthew Jacobs
ed711330fc IMPALA-4934: Disable Kudu OpenSSL initialization
Bumps the Kudu version to include the change to the client
that allows Impala to disable SSL initialization.

In authentication.cc, after Impala initializes OpenSSL,
Impala then disables Kudu's OpenSSL init.

Fixed a python test case that started failing after bumping
the Kudu client version.

Change-Id: I3f13f3af512c6d771979638da593685524c73086
Reviewed-on: http://gerrit.cloudera.org:8080/6056
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: Impala Public Jenkins
2017-02-22 05:06:20 +00:00
Michael Brown
9414d53a89 IMPALA-4904,IMPALA-4914: add targeted-stress to exhaustive tests
This patch allows any test suites whose workload is "targeted-stress" to
be run in so-called "exhaustive" mode. Before this patch, only suites
whose workload was "functional-query" would be run exhaustively. More on
this flaw is in IMPALA-3947.

The net effects are:

1. We fix IMPALA-4904, which allows test_ddl_stress to start running
   again.
2. We also improve the situation in IMPALA-4914 by getting
   TestSpillStress to run, though we don't fix its
   not-running-concurrently problem.

The other mini-cluster stress tests were disabled in this commit:
  IMPALA-2605: Omit the sort and mini stress tests
so they are not directly affected here.

I also tried to clarify what "exhaustive" means in some of our shell
scripts, via help text and comments.

An exhaustive build+test run showed test_ddl_stress and TestSpillStress
now get run and passed. This adds roughly 12 minutes to a build that's
on the order of 13-14 hours.

Change-Id: Ie6bd5bbd380e636d680368e908519b042d79dfec
Reviewed-on: http://gerrit.cloudera.org:8080/6002
Tested-by: Impala Public Jenkins
Reviewed-by: Jim Apple <jbapple-impala@apache.org>
2017-02-21 21:12:36 +00:00
Henry Robinson
d2ae45b0a9 IMPALA-4926: Upgrade LZ4 to 1.7.5
LZ4 has deprecated the method names LZ4_compress and LZ4_uncompress, so
rename those to their new versions LZ4_compress_default() and
LZ4_decompress_fast() respectively. Otherwise no changes are required
for compatibility with LZ4 1.7.5.

Change-Id: I10e4561d0e940fa15ca8248c8277acfc6dff3da3
Reviewed-on: http://gerrit.cloudera.org:8080/6030
Reviewed-by: Jim Apple <jbapple-impala@apache.org>
Tested-by: Impala Public Jenkins
2017-02-18 04:33:07 +00:00