Uploaded image for project: 'Giraph'
  1. Giraph
  2. GIRAPH-462

Multithreading breaks out-of-core graph

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      Claudio Martella pointed out this issue: when using multithreaded computation in conjunction with out-of-core graph, we incur in a race condition. The compute threads share the same DiskBackedPartitionStore, whose getPartition() method is not meant to be thread-safe. When two threads request two out-of-core partitions concurrently, they both try to load it to the same slot.
      The result is that we can lose the reference to one of the two partitions (which will not be written back to disk) and we can incur in a NullPointerException when both threads are trying to offload the currently loaded partition to disk.

      I ran this test to confirm the issue:
      https://gist.github.com/4429628
      All tests pass except the one that uses both out-of-core graph and multiple compute threads.
      The error is the following:
      https://gist.github.com/4429650

        Attachments

        1. GIRAPH-461.patch
          45 kB
          Claudio Martella

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                apresta Alessandro Presta
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: