Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace...

97
Debugging Distributed Systems with Why-Across-Time Provenance Michael Whittaker, Cristina Teodoropol, Peter Alvaro, Joseph M. Hellerstein

Transcript of Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace...

Page 1: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Debugging Distributed Systems with

Why-Across-Time Provenance

Michael Whittaker, Cristina Teodoropol, Peter Alvaro, Joseph M. Hellerstein

Page 2: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Reasoning about the causes of events in a

distributed system is hard

Page 3: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Causality

Page 4: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose
Page 5: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose
Page 6: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose
Page 7: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose
Page 8: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose
Page 9: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose
Page 10: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose
Page 11: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Causality is general-purpose but too coarse-grained

Page 12: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose
Page 13: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-Provenance

Page 14: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-ProvenanceR

x y

10 20

10 40

600 700

S

y z

20 30

40 50

700 800

Database Instance I

r1

r2

r3

s1

s2

s3

Page 15: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-ProvenanceR

x y

10 20

10 40

600 700

S

y z

20 30

40 50

700 800

Database Instance I

SELECT x FROM R, S WHERE R.y = S.y

SQL Query Q

r1

r2

r3

s1

s2

s3

Page 16: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-ProvenanceR

x y

10 20

10 40

600 700

S

y z

20 30

40 50

700 800

Database Instance I

SELECT x FROM R, S WHERE R.y = S.y

SQL Query Q

x

10

600

Output Q(I)

r1

r2

r3

s1

s2

s3

Page 17: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-ProvenanceR

x y

10 20

10 40

600 700

S

y z

20 30

40 50

700 800

Database Instance I

SELECT x FROM R, S WHERE R.y = S.y

SQL Query Q

x

10

600 Output Tuple tOutput Q(I)

r1

r2

r3

s1

s2

s3

Page 18: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

A subinstance I’ of I is a witness of t if t is in Q(I’)

Page 19: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-ProvenanceR

x y

10 20

10 40

600 700

S

y z

20 30

40 50

700 800

Database Subinstance I’

SELECT x FROM R, S WHERE R.y = S.y

SQL Query Q

r1

r2

r3

s1

s2

s3

Page 20: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-ProvenanceR

x y

10 20

10 40

600 700

S

y z

20 30

40 50

700 800

Database Subinstance I’

SELECT x FROM R, S WHERE R.y = S.y

SQL Query Q

x

10

Output Tuple tOutput Q(I’)

r1

r2

r3

s1

s2

s3

Page 21: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

A witness I’ of t is a minimal witness of t if no

proper subinstance of I’ is also a witness of t

Page 22: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-ProvenanceR

x y

10 20

10 40

600 700

S

y z

20 30

40 50

700 800

Database Subinstance I’

SELECT x FROM R, S WHERE R.y = S.y

SQL Query Q

x

10

Output Tuple tOutput Q(I’)

r1

r2

r3

s1

s2

s3

Page 23: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-ProvenanceR

x y

10 20

10 40

600 700

S

y z

20 30

40 50

700 800

Database Subinstance I’

SELECT x FROM R, S WHERE R.y = S.y

SQL Query Q

x

10

Output Tuple tOutput Q(I’)

r1

r2

r3

s1

s2

s3

Page 24: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-ProvenanceR

x y

10 20

10 40

600 700

S

y z

20 30

40 50

700 800

Database Subinstance I’

SELECT x FROM R, S WHERE R.y = S.y

SQL Query Q

Output Tuple t

x

10

Output Q(I’)

r1

r2

r3

s1

s2

s3

Page 25: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

The why-provenance of t is the set of minimal

witnesses of t

Page 26: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Why-provenance is fine-grained but not generally

applicable

Page 27: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Causality is general-purpose but too coarse-

grained

Why-provenance is fine-grained but not generally

applicable

Page 28: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-provenance is general-purpose and fine-

grained

Page 29: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-provenance generalizes why-provenance from static

relational databases to arbitrary state machines

Page 30: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-provenance is to state machines what why-provenance is to relational databases

Page 31: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance

Page 32: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance

Database Instance I

Rx y

10 2010 40700 800

Page 33: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance

Database Instance I Query Q

Rx y

10 2010 40700 800

SELECT x FROM R, S WHERE R.y = S.y

Page 34: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance

Database Instance I Query Q Output Tuple t

Rx y

10 2010 40700 800

SELECT x FROM R, S WHERE R.y = S.y

x10700

Page 35: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance

Database Instance I Query Q Output Tuple t

State Machine M

Rx y

10 2010 40700 800

SELECT x FROM R, S WHERE R.y = S.y

x10700

Page 36: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance

Database Instance I Query Q Output Tuple t

State Machine M Input Trace T

Rx y

10 2010 40700 800

SELECT x FROM R, S WHERE R.y = S.y

x10700

a b c d

Page 37: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance

Database Instance I Query Q Output Tuple t

State Machine M Input Trace T Input i, Output o

Rx y

10 2010 40700 800

SELECT x FROM R, S WHERE R.y = S.y

x10700

a b c d get(x); 1

Page 38: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 1: Key-Value Store

Page 39: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 1: Key-Value Store

set(x,1) set(y,2)Trace T

Page 40: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 1: Key-Value Store

set(x,1) set(y,2)Trace T

Input i get(x)

Page 41: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 1: Key-Value Store

set(x,1) set(y,2)Trace T

Input i get(x)

Output o 1

Page 42: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 1: Key-Value Store

set(x,1) set(y,2)Trace T

Input i get(x)

Output o 1

Page 43: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Lessons

1.The “cause” of an output o should be a subtrace of the input that suffices to generate o. We call such a subtrace a witness of o.

Page 44: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 1: Key-Value Store

set(x,1) set(y,2)Trace T

Input i get(x)

Output o 1

Page 45: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 1: Key-Value Store

set(x,1) set(y,2)Trace T

Input i get(x)

Output o 1

Page 46: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Lessons

1.The “cause” of an output o is a subtrace of the input that suffices to generate o. We call such a subtrace a witness of o.

2.The cause of an output o should be a “minimal” witness of o.

Page 47: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 1: Key-Value Store

set(x,1) set(y,2)Trace T

Input i get(x)

Output o 1

Page 48: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 1: Key-Value Store

set(x,1) set(y,2)Trace T

Input i get(x)

Output o 1

Page 49: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 2: Boolean Formulas

Page 50: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 2: Boolean Formulas

set(a) set(b) set(c) set(d)Trace T

Page 51: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 2: Boolean Formulas

set(a) set(b) set(c) set(d)Trace T

Input i eval((a and d) or (b and c))

Page 52: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 2: Boolean Formulas

set(a) set(b) set(c) set(d)Trace T

Input i eval((a and d) or (b and c))

Output o true

Page 53: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

set(a) set(b) set(c) set(d)Trace T

Input i eval((a and d) or (b and c))

Output o true

Example 2: Boolean Formulas

Page 54: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

set(a) set(b) set(c) set(d)Trace T

Input i eval((a and d) or (b and c))

Output o true

Example 2: Boolean Formulas

Page 55: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Lessons

1.The “cause” of an output o is a subtrace of the input that suffices to generate o. We call such a subtrace a witness of o.

2.The cause of an output o should be a “minimal” witness of o.

3.An output o could have multiple “minimal” witnesses.

Page 56: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Page 57: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Page 58: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Page 59: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Page 60: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Page 61: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 62: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 63: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 64: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 65: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 66: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 67: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 68: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 69: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Lessons1.The “cause” of an output o is a subtrace of

the input that suffices to generate o. We call such a subtrace a witness of o.

2.The cause of an output o should be a “minimal” witness of o.

3.An output o could have multiple “minimal” witnesses.

4.If a witness is a “cause” of an output o, then all supertraces of the witness should be too.

Page 70: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 71: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example 3: Negation

set(a) set(b) set(c)Trace T

Input i eval((a and not b) or c)

Output o true

Page 72: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance

Page 73: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance• Given state machine M, trace T, input i,

and output o.

Page 74: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance• Given state machine M, trace T, input i,

and output o. • A witness of o is a subtrace of T that

suffices to produce o.

Page 75: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance• Given state machine M, trace T, input i,

and output o. • A witness of o is a subtrace of T that

suffices to produce o. • A witness T’ of o is closed under

supertrace in T if every supertrace of T’ in T is also a witness of o.

Page 76: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance• Given state machine M, trace T, input i,

and output o. • A witness of o is a subtrace of T that

suffices to produce o. • A witness T’ of o is closed under

supertrace in T if every supertrace of T’ in T is also a witness of o.

• The wat-provenance of o is the set of minimal witnesses of o that are closed under supertrace in T.

Page 77: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-provenance is general-purpose and fine-grained

Causality is general-purpose but too coarse-grained

Why-provenance is fine-grained but not generally applicable

Page 78: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing wat-provenance

Page 79: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-provenance is general-purpose and fine-grained

Causality is general-purpose but too coarse-grained

Why-provenance is fine-grained but not generally applicable

Page 80: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-provenance is general-purpose and fine-grained but hard to compute

Causality is general-purpose but too coarse-grained and easy to compute

Why-provenance is fine-grained but not generally applicable and easy to compute

Page 81: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Causal History

Page 82: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Causal HistoryUse vector clocks

Page 83: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Why-Provenance

Page 84: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Why-ProvenanceCompute it explicitly

Page 85: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Wat-Provenance

State Machine Implementation

Page 86: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Wat-Provenance

State Machine Implementation Wat-Provenance

Infer

Page 87: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Wat-Provenance

State Machine Implementation Wat-Provenance

InferCode Analysis

Page 88: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Wat-Provenance

State Machine Implementation Wat-Provenance

InferCode Analysis

State Machine Interface

Page 89: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Wat-Provenance

State Machine Implementation Wat-Provenance

InferCode Analysis

State Machine Interface Wat-Provenance

Specify

Page 90: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Computing Wat-Provenance

State Machine Implementation Wat-Provenance

InferCode Analysis

State Machine Interface Wat-ProvenanceWat-Provenance Spec

Specify

Page 91: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example: Key-Value Store

set(d,1) set(a,3) set(e,1) set(f,4)

Input i = get(b)

Output o = 1

Trace T

Page 92: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example: Key-Value Store

set(b,2) set(a,1) set(c,2) set(b,1) set(a,3) set(d,1) set(a,0)

Input i = get(b)

Output o = 1

Trace T

Page 93: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example: Key-Value Store

set(b,2) set(a,1) set(c,2) set(b,1) set(a,3) set(d,1) set(a,0)

Input i = get(b)

Output o = 1

Trace T

English wat-provenance specification: The wat-provenance of a get of key k is

the most recent set to k.

Page 94: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Example: Key-Value Store

def get_prov(T: List[Request], i: GetRequest): for a in reversed(T): if (isinstance(a, SetRequest) and a.key == i.key): return {[a]} return {[]}

Python wat-provenance specification:

English wat-provenance specification: The wat-provenance of a get of key k is

the most recent set to k.

Page 95: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Wat-Provenance SpecificationsSimple wat-provenance specifications are

not uncommon:

•Key-Value Stores•Object Stores•Distributed File Systems•Coordination Services•Load Balancers•Stateless Services

Page 96: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

What is wat-provenance?

How do you compute wat-provenance?

How do you use wat-provenance?

What are the limitations of wat-provenace?

Come to my poster!

Page 97: Debugging Distributed Systems with Why-Across-Time Provenance · 2018. 11. 13. · under supertrace in T. Wat-provenance is general-purpose and fine-grained Causality is general-purpose

Thank you!