IMPALA-1863: Avoid deadlock across fragment instances

In the case that the BlockingJoinNode runs the build asynchrously in one
fragment instance but not another, a deadlock between the instances is
possible (see IMPALA-1863 for the details).  To avoid this deadlock
potential, close the bulid side child on error, which will deregister
any datastream receivers from that side, breaking the cycle that leads
to the deadlock.

Change-Id: I2de06615897b4bcaa5855449a98984f11c948dc4
Reviewed-on: http://gerrit.cloudera.org:8080/242
Reviewed-by: Dan Hecht <dhecht@cloudera.com>
Tested-by: Internal Jenkins

Conflicts:

	be/src/exec/blocking-join-node.cc
This commit is contained in:
Dan Hecht
2015-03-16 18:33:14 -07:00
committed by ishaan
parent 47fb68cd13
commit 47032fa789
2 changed files with 25 additions and 19 deletions

View File

@@ -20,7 +20,6 @@ from copy import copy
from tests.beeswax.impala_beeswax import ImpalaBeeswaxException
from tests.common.test_vector import *
from tests.common.impala_test_suite import *
from tests.common.skip import skip_if_s3_jira
class TestQueryMemLimitScaling(ImpalaTestSuite):
"""Test class to do functional validation of per query memory limits. """
@@ -76,7 +75,6 @@ class TestExprMemUsage(ImpalaTestSuite):
"select count(*) from lineitem where lower(l_comment) = 'hello'", exec_options,
table_format=vector.get_value('table_format'))
@skip_if_s3_jira(reason="IMPALA-1863")
class TestTpchMemLimitError(ImpalaTestSuite):
EXPECTED_ERROR_MSG = "Memory limit exceeded"