Details

    • Type: Bug
    • Status: Resolved
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: Impala 2.8.0
    • Fix Version/s: Impala 2.8.0
    • Component/s: Backend
    • Labels:

      Description

      An expected exception wasn't thrown in test_alloc_fail.py. It has happened twice recently.
      The crash in the test infrastructure code is due to the fact that it's expecting test_section['CATCH'] to be strings but it's in fact a list of strings. The flakiness in the test may be due to how the stress counter in free-pool.h is updated racily.

      select ndv(l_partkey), distinctpc(l_suppkey) from tpch.lineitem;
      
      12:52:45         if 'CATCH' in test_section:
      12:52:45 >         assert test_section['CATCH'].strip() == ''
      12:52:45 E         AttributeError: 'list' object has no attribute 'strip'
      

        Activity

        Hide
        kwho Michael Ho added a comment -

        https://github.com/apache/incubator-impala/commit/b1edca2a5b6eb66fc5c316157f968b267ee36b48

        IMPALA-4557: Fix flakiness with FLAGS_stress_free_pool_alloc

        FLAGS_stress_free_pool_alloc is a gflag for simulating malloc
        failure in debug builds. If set, FreePool::Allocate() and
        FreePool::Reallocate() will return NULL on every
        FLAGS_stress_free_pool_alloc allocations. The problem is that
        the counter for tracking number of allocations is updated
        racily by multiple threads, leading to non-determinism and
        flaky tests. This change fixes the problem by making the counter
        an AtomicInt32.

        Change-Id: I373035d209a0f3477650336ee6da458fa289dbe0
        Reviewed-on: http://gerrit.cloudera.org:8080/5281
        Reviewed-by: Jim Apple <jbapple-impala@apache.org>
        Reviewed-by: Dan Hecht <dhecht@cloudera.com>
        Tested-by: Internal Jenkins

        Show
        kwho Michael Ho added a comment - https://github.com/apache/incubator-impala/commit/b1edca2a5b6eb66fc5c316157f968b267ee36b48 IMPALA-4557 : Fix flakiness with FLAGS_stress_free_pool_alloc FLAGS_stress_free_pool_alloc is a gflag for simulating malloc failure in debug builds. If set, FreePool::Allocate() and FreePool::Reallocate() will return NULL on every FLAGS_stress_free_pool_alloc allocations. The problem is that the counter for tracking number of allocations is updated racily by multiple threads, leading to non-determinism and flaky tests. This change fixes the problem by making the counter an AtomicInt32. Change-Id: I373035d209a0f3477650336ee6da458fa289dbe0 Reviewed-on: http://gerrit.cloudera.org:8080/5281 Reviewed-by: Jim Apple <jbapple-impala@apache.org> Reviewed-by: Dan Hecht <dhecht@cloudera.com> Tested-by: Internal Jenkins

          People

          • Assignee:
            kwho Michael Ho
            Reporter:
            kwho Michael Ho
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development