Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Papers we Love PDX

Papers we Love PDX

Detection of Mutual Inconsistency in Distributed Systems

Caitie McCaffrey

June 28, 2016
Tweet

More Decks by Caitie McCaffrey

Other Decks in Technology

Transcript

  1. “In some environments it is desirable or necessary to permit

    users to continue modifying resources such as files when the network is partitioned”
  2. “Files are not stored redundantly but are kept on removable

    storage media which can be carried around during prolonged partitions. Thus availability & consistency are simultaneously achieved” Disk Toting
  3. Origin Points • System wide unique identifier generated when the

    file is created • Immutable attribute of the file • Suggested: Creation Time & Creation Site Pair • Detect Name Conflicts
  4. “Each partition can break into sub partitions and/or merge with

    other partitions many times before the entire network finally becomes connected” The Partition Problem
  5. ABCD AB CD D BC A Partition Graph T0 T0

    T0 T1 T1 No Conflict! T1
  6. ABCD AB CD D BC A BCD Partition Graph T0

    T0 T0 T1 T1 T2 Conflict!
  7. ABCD AB CD D BC A BCD ABCD Partition Graph

    T0 T0 T0 T2 T1 T3 T2 T2 Conflict!
  8. “What is more difficult is to find a mechanism which

    detects version conflicts only when they are real”
  9. Version Vectors “A Version Vector for a file f is

    a sequence of n pairs, where n is the number of sites at which f is stored … the ith vector entry counts the number Vi of updates to f made at site Si” <A:9, B:7, C:22, D:3>
  10. Version Vectors • For each update of f on site

    Si we increment the Sith component of the version vector • When conflicts are reconciled the Max Sith entry is set in the version vector • Version vectors encode the partial order defined by the partition graph
  11. ABCD AB CD Partition Graph <A:0, B:0, C:0, D:0> <A:0,

    B:0, C:0, D:0> <A:0, B:0, C:0, D:0>
  12. ABCD AB CD Partition Graph <A:0, B:0, C:0, D:0> <A:0,

    B:0, C:0, D:0> <A:1, B:0, C:0, D:0>
  13. ABCD AB CD D BC A Partition Graph T2 <A:0,

    B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:1, B:0, C:0, D:0>
  14. ABCD AB CD D BC A Partition Graph T2 <A:0,

    B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> No Conflict!
  15. ABCD AB CD D BC A Partition Graph T2 <A:0,

    B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:1, B:0, C:0, D:0>
  16. ABCD AB CD D BC A Partition Graph T2 <A:0,

    B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:2, B:0, C:0, D:0> <A:1, B:0, C:1, D:0>
  17. ABCD AB CD D BC A BCD Partition Graph T2

    <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:2, B:0, C:0, D:0> <A:1, B:0, C:1, D:0>
  18. ABCD AB CD D BC A BCD Partition Graph T2

    <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:2, B:0, C:0, D:0> <A:1, B:0, C:1, D:0> No Conflict!
  19. ABCD AB CD D BC A BCD Partition Graph T2

    <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:2, B:0, C:0, D:0> <A:1, B:0, C:1, D:0> <A:1, B:0, C:1, D:0>
  20. ABCD AB CD D BC A BCD Partition Graph T2

    <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:2, B:0, C:0, D:0> <A:1, B:0, C:1, D:0> <A:1, B:0, C:1, D:0> ABCD
  21. ABCD AB CD D BC A BCD ABCD Partition Graph

    T2 <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:0, B:0, C:0, D:0> <A:1, B:0, C:0, D:0> <A:2, B:0, C:0, D:0> <A:1, B:0, C:1, D:0> <A:1, B:0, C:1, D:0> Conflict!
  22. Conflict Resolution “A conflict detection mechanism, while valuable, has increased

    effect if there is also a method for reconciling conflicts automatically”
  23. Conflict Resolution “Clearly, conflict reconciliation must take into account the

    semantics of the operations which were done to the data object in conflict”