Stamatis Zampetakis created IMPALA-15761:
--------------------------------------------
Summary: TestIcebergWriterLimit fails intermittently with
different file count
Key: IMPALA-15761
URL: https://issues.apache.org/jira/browse/IMPALA-15761
Project: IMPALA
Issue Type: Bug
Reporter: Stamatis Zampetakis
The TestIcebergWriterLimit failed in a [recent Jenkins
run|https://jenkins.impala.io/job/ubuntu-20.04-from-scratch/10933/] due to a
different file count generated by a [CTAS
command|https://github.com/apache/impala/blob/3126fa631c7f7b8945af1c3656ae16472508c87d/testdata/workloads/functional-query/queries/QueryTest/iceberg-writer-limit.test#L6].
{noformat}
---- QUERY
# -- CTAS (unpartitioned, no limit) --
# Sanity: without MAX_FS_WRITERS, mt_dop=4 produces multiple data files.
set mt_dop=4;
CREATE TABLE ins_no_limit STORED BY ICEBERG
AS SELECT id, string_col FROM functional_parquet.alltypes ORDER BY id;
====
---- QUERY
SELECT count(*) FROM $DATABASE.ins_no_limit.`files` WHERE content = 0;
---- RESULTS
12
{noformat}
The test expects 12 files to be created but it seems that in the Jenkins run
only 11 were created.
{noformat}
query_test/test_iceberg.py:3463: in test_writer_limit
self.run_test_case('QueryTest/iceberg-writer-limit', vector,
self = <test_iceberg.TestIcebergWriterLimit object at
0x7fc738696b50>
unique_database = 'test_writer_limit_80ff6c8e'
vector = "table_format: parquet/none" | "protocol: hs2" |
"exec_option: {'abort_on_error': 1, 'batch_size': 0, 'disable_codegen': False,
'disable_codegen_rows_threshold': 5000, 'exec_single_node_rows_threshold': 0,
'num_nodes': 0, 'test_replan': 1}"
common/impala_test_suite.py:1090: in run_test_case
self.__verify_results_and_errors(vector, test_section,
_ImpalaTestSuite__exec_in_hive = <function
ImpalaTestSuite.run_test_case.<locals>.__exec_in_hive at 0x7fc738898d60>
_ImpalaTestSuite__exec_in_impala = <function
ImpalaTestSuite.run_test_case.<locals>.__exec_in_impala at 0x7fc738898ae0>
_ImpalaTestSuite__exec_in_trino = <function
ImpalaTestSuite.run_test_case.<locals>.__exec_in_trino at 0x7fc738898e00>
catch_section_name = 'CATCH'
current_error = None
encoding = None
exec_fn = <function
ImpalaTestSuite.run_test_case.<locals>.__exec_in_impala at 0x7fc738898ae0>
exec_options = {'abort_on_error': 1, 'batch_size': 0,
'disable_codegen': False, 'disable_codegen_rows_threshold': 5000, ...}
failed_count = 0
impalad_client = <tests.common.impala_connection.ImpylaHS2Connection
object at 0x7fc738694090>
lineage_log_dir = ''
multiple_impalad = False
protocol = 'hs2'
query = 'SELECT count(*) FROM
test_writer_limit_80ff6c8e.ins_no_limit.`files` WHERE content = 0'
query_section = 'SELECT count(*) FROM $DATABASE.ins_no_limit.`files`
WHERE content = 0;\n'
remaining = 0
result = <tests.common.impala_connection.ImpylaHS2ResultSet object
at 0x7fc738629050>
result_list = []
results_section_name = 'RESULTS'
rt_profile_info = None
sections = [defaultdict(<class 'str'>, {'QUERY': '# -- CTAS
(unpartitioned, no limit) --\n# Sanity: without MAX_FS_WRITERS, mt_do...
exactly 1 position delete file.\nset mt_dop=4;\nset max_fs_writers=1;\nDELETE
FROM del_v2 WHERE id % 2 = 0;\n'}), ...]
self = <test_iceberg.TestIcebergWriterLimit object at
0x7fc738696b50>
table_format_info = <tests.common.test_dimensions.TableFormatInfo
object at 0x7fc73a5d7050>
target_impalad_clients =
[<tests.common.impala_connection.ImpylaHS2Connection object at 0x7fc738694090>]
test_file_name = 'QueryTest/iceberg-writer-limit'
test_file_vars = None
test_section = defaultdict(<class 'str'>, {'QUERY': 'SELECT count(*)
FROM $DATABASE.ins_no_limit.`files` WHERE content = 0;\n', 'RESULTS': '12\n',
'TYPES': 'BIGINT\n'})
total_count = 2
use_db = 'test_writer_limit_80ff6c8e'
user = None
vector = "table_format: parquet/none" | "protocol: hs2" |
"exec_option: {'abort_on_error': 1, 'batch_size': 0, 'disable_codegen': False,
'disable_codegen_rows_threshold': 5000, 'exec_single_node_rows_threshold': 0,
'num_nodes': 0, 'test_replan': 1}"
common/impala_test_suite.py:852: in __verify_results_and_errors
verify_raw_results(test_section, result, vector,
replace_filenames_with_placeholder = True
result = <tests.common.impala_connection.ImpylaHS2ResultSet object
at 0x7fc738629050>
result_section = 'RESULTS'
result_section_name = 'RESULTS'
section_name = 'ERRORS'
self = <test_iceberg.TestIcebergWriterLimit object at
0x7fc738696b50>
test_section = defaultdict(<class 'str'>, {'QUERY': 'SELECT count(*)
FROM $DATABASE.ins_no_limit.`files` WHERE content = 0;\n', 'RESULTS': '12\n',
'TYPES': 'BIGINT\n'})
type_section = 'TYPES'
use_db = 'test_writer_limit_80ff6c8e'
vector = "table_format: parquet/none" | "protocol: hs2" |
"exec_option: {'abort_on_error': 1, 'batch_size': 0, 'disable_codegen': False,
'disable_codegen_rows_threshold': 5000, 'exec_single_node_rows_threshold': 0,
'num_nodes': 0, 'test_replan': 1}"
common/test_result_verifier.py:505: in verify_raw_results
VERIFIER_MAP[verifier](expected, actual)
actual = <tests.common.test_result_verifier.QueryTestResult object
at 0x7fc7387cea10>
actual_labels = ['COUNT(*)']
actual_types = ['BIGINT']
exec_result = <tests.common.impala_connection.ImpylaHS2ResultSet object
at 0x7fc738629050>
expected = <tests.common.test_result_verifier.QueryTestResult object
at 0x7fc7387ce310>
expected_results = '12\n'
expected_results_list = ['12']
expected_types = ['BIGINT']
file_format = 'parquet'
is_raw_string = False
order_matters = False
protocol = 'hs2'
replace_filenames = True
result_section = 'RESULTS'
section = 'BIGINT\n'
test_section = defaultdict(<class 'str'>, {'QUERY': 'SELECT count(*)
FROM $DATABASE.ins_no_limit.`files` WHERE content = 0;\n', 'RESULTS': '12\n',
'TYPES': 'BIGINT\n'})
type_section = 'TYPES'
update_section = False
vector = "table_format: parquet/none" | "protocol: hs2" |
"exec_option: {'abort_on_error': 1, 'batch_size': 0, 'disable_codegen': False,
'disable_codegen_rows_threshold': 5000, 'exec_single_node_rows_threshold': 0,
'num_nodes': 0, 'test_replan': 1}"
verifier = None
common/test_result_verifier.py:296: in verify_query_result_is_equal
assert expected_results == actual_results
E assert Comparing QueryTestResults (expected vs actual):
E 12 != 11
actual_results = <tests.common.test_result_verifier.QueryTestResult
object at 0x7fc7387cea10>
expected_results = <tests.common.test_result_verifier.QueryTestResult
object at 0x7fc7387ce310>
{noformat}
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)