Uploaded image for project: 'Kudu'
  1. Kudu
  2. KUDU-2842

Data race in CatalogManager::GetTableLocations

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • 1.10.0
    • 1.11.0
    • master
    • None

    Description

      Saw this on a test run.

      I think the problem is that TSInfosDict is reused for all calls to BuildLocationsForTablet for a particular table, and the map inside it points to peer UUIDs by reference (i.e. StringPiece) instead of by copy. Thus, when a given BuildLocationsForTablet call completes, the tablet lock is released and the catalog manager is free to destroy that tablet's TabletInfo (i.e. via committing a mutation in ProcessTabletReport). But the very next call to BuildLocationsForTablet may cause TSInfosDict map keys to be read and compared, even though the memory backing those keys no longer exists.

      Assigning to Will because he committed 586e957f7 but cc'ing tlipcon as he was the original author of the code.

      Attachments

        1. test.txt
          725 kB
          Adar Dembo

        Issue Links

          Activity

            People

              awong Andrew Wong
              adar Adar Dembo
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: