SlideShare a Scribd company logo
1 of 36
Download to read offline
Constructing

Distributed Doubly Linked List

without Distributed Locking
IEEE Peer-to-Peer Conference 2015
Sep 23rd–24th, 2015
Kota Abe, Osaka City University / NICT, Japan
Mikio Yoshida, BBR Inc., Japan
1
Outline
Background
What is distributed doubly linked list
Conventional approaches
The DDLL algorithm
Procedure for node insertion, deletion and traversal
Procedure for recovery from failure
Evaluation
Comparison with conventional algorithms
Conclusion
2
Outline
Background
What is distributed doubly linked list
Conventional approaches
The DDLL algorithm
Procedure for node insertion, deletion and traversal
Procedure for recovery from failure
Evaluation
Comparison with conventional algorithms
Conclusion
3
Distributed Doubly Linked List
aka Bidirectional Ring
Commonly used in structured

P2P networks
Chord, Chord#, Skip Graph, 

SkipNet, etc.
Structure
Pointer (e.g. IP address) to the next (successor) node
and previous (predecessor) node
We call right and left pointers
Sorted by node-specific key
Circular
4
0
2060
40
70 10
50 30
Maintaining Distributed Doubly Linked List
Challenges
Nodes are distributed and may be simultaneously
and independently inserted and deleted
Nodes may fail
5
u
p q
u
p q
Insertion Deletion
up q
Recovery
p q r
Traversal
u
p q
Conventional Approaches (1/2)
Eventual Consistency
Approach
Node insertion and deletion
temporarily breaks the list
structure
Stabilizing procedure recovers
6
p q
u
u
p q
Distributed Locking Approach
Use a lock🔒 to mutually exclude
node insertion / deletion
u
p q
JoinDone
JoinPoint
NewSuccAck
🔒
🔓
🔒
🔓
NewSucc
JoinReq
Chord
Atomic Ring Maintenance (Ghodsi)
u
p q
Conventional Approach (2/2)
Eventual Consistency
Approach
Pros 👍
Easy to recover from
failure
Cons 👎
No lookup consistency:
Lookup results may differ
depending on the querying
node
Distributed Locking Approach
Pros 👍
Lookup consistency
Cons 👎
Lock disturbs another
node insertion / deletion
When a node fails, locking
duration may be quite long
Recovery procedure is
rather complicated
Release a lock by timeout,
which may be premature
→ locks should not be used 

if possible
Outline
Background
What is distributed doubly linked list
Conventional approaches
The DDLL algorithm
Procedure for node insertion, deletion and
traversal
Procedure for recovery from failure
Evaluation
Comparison with conventional algorithms
Conclusion
8
Our Contribution — DDLL Algorithm
DDLL = Distributed algorithm for constructing
distributed doubly linked lists
Acronym of “Distributed Doubly Linked List”
Guarantees lookup consistency without using
distributed locking (in absence of failure)
Simple and Efficient
Proved correctness (insertion and deletion procedure)
Practical
Works with non-FIFO channels (e.g. UDP)
Used in our PIAX P2P platform as a foundation of Skip
Graph and Chord# implementations
9
Node Insertion
10
u
p q
u
p q
u
p q
u
p q
(1) u.l := p, u.r := q
(2) Update right link:
Change p’s right link to u
(3) Update left link:
Change q’s left link to u
u is going to be inserted

between p and q
Updating Right Link (1/3)
11
u
p q
v
u
qo
p has been deleted
We want to change p’s
right link only if

there is no conflict
u
p r
q has been deleted
q
p
Conflicts
another node has been
inserted between p and q
SetR message is used for updating a right link
SetR message contains:
new right node
expected right node of the recipient node
When a SetR request is accepted, p returns a SetRAck message
Otherwise, p returns SetRNak message
Updating Right Link (2/3)
12
u
p q
u
p q
SetR(u, q)
Please change your right link to me (u)

if your right link still points to q and

you has not initiated deletion
SetRAck
Ok!
Right links are always correct without using locking
Updating Right Link (3/3)
13
u
p q
v
another node has been
inserted between p and q
SetR(u, q)
p.r != q
Conflict case example:
u
p q
v
SetRNak
Sorry!
Updating Left Link (1/3)
p q
p q
uSetR(u, q)
Message Sequence
14
u
p q
u
v
u v
SetL(v)SetRAck
SetL(u)
SetRAck
p q
SetR(v, q)
Problem:
Multiple SetL messages arrive from different nodes

in arbitrary order (because we do not want to use locking)
Node must determine which SetL message is newer
!?
p q
Topology Change
v
Updating Left Link (2/3)
Solution:
SetL message contains a
sequence number (seq)
Each node holds a sequence
number for its right node (rseq)
rseq is transferred using
SetRAck
Each node holds the max
sequence number of SetL
messages received so far (lseq)
SetL message is accepted only
if msg.seq > lseq
15
p q
rseq = 0
lseq = 0
u
p q
rseq = 1SetRAck(1)
lseq = 0
SetL(u, 1)
u
p q
rseq = 1
lseq = 1
u
p q
rseq = 2
v
lseq = 2
u
p q
rseq = 2
v
SetL(u, 2)
lseq = 1
SetRAck(2)
Updating Left Link (3/3)
p q
uSetR(u, q, 0)
Message Sequence
16
u
p q
u
v
v
SetL(v, 2)
SetRAck(2)
SetL(u, 1)
p q
SetR(v, q)
How our scheme solves the previous case
p q
0
0
SetRAck(1)
0
0
1
0
0
0
2
0
0
2
This SetL message

is staled and ignored
Topology Change
Lock is not necessary !
lseq = 0
lseq = 2
rseq = 0
rseq = 1
rseq = 2
Node Insertion Sequence
u
p q
p q
i
u
p q
i
0
0
i
u
SetR(u, q, 0)
SetRAck(i+1)
SetL(u, i+1)
Message Sequence
17
Topology Change
qp
0
0
i+1
i+1
Node Deletion Sequence
u
p q
u
p q up q
SetR(q, u, i2+1)
SetRAck(i1+1)
SetL(p, i2+1)
Message Sequence
18
Topology Change
u
p q
i2 + 1
i2 + 1
i2
i2
i1
i1
i2 + 1
i2
i1+1 is not used
Insertion and Deletion
3 messages are required for insertion/deletion
A node is atomically inserted/deleted when SetR
message is accepted
If SetRNak message is received, application
retries insertion/deletion
Right links are always correct
Left links are correct when there is no SetL
message in transmission
No distributed locking
Does not require FIFO channel (UDP friendly)
19
Traversals
Every inserted node can be
looked up either rightward or
leftward
Traversing rightward: easy
Traversing leftward:
left links are not always correct
1. Node X visits q and fetches

q.l (= p)
2. X visits p and fetches p.l 

and p.r (= u)
3. X detects that u is missed

(because p.r != q) and X visits u
20
u
p q
X
1.visit
2.visit
Incorrect left link
3.visit
traversing leftward
Insertion Retry Optimization
Insertion requires pointers to the immediate left and right nodes
When an inserting node receives SetRNak, the node retries
Optimization: SetRNak contains the pointer to the right node
Extra messages can be eliminated

if p is not initiated deletion AND u ∈ (p, p.r)
2121
qp
vu SetR
SetRAck
SetL
qp
vu SetR
SetRAck
SetL
SetRNak
MyR(v)
GetR
SetRAck
SetL
SetRAck
SetL
Unoptimized
SetRNak(v)
SetR(u, v)
OptimizedSetR
SetR
SetR(u, v)
Handling failure
So far, no failure is assumed
DDLL algorithm considers:
Crash failure
Omission failure
Timing failure
In asynchronous network, it is impossible to
distinguish slow nodes and failed nodes
Erroneously suspected nodes are temporarily
removed but eventually recovered
22
}Omitted in this presentation
Recovery | Basic
Each node maintains a
neighbor node set N
N contains sufficient number of
left-side nodes
Each node u periodically finds
live closest left-side node v
u obtains v.r and v.rseq
If (v = u.l) ∧ (v.r = u)

∧ (v.rseq = u.lseq) then OK
23
A C
A C
A C
?
?BA C
rseq uv
lseq
uv
Otherwise, start recovery
B
B
B
SetR(C, B, ?)
Recovery | Sequence Number (1)
Let’s consider the
sequence number of
the recovered link
24
A C
A C
A C
i
i
i +1
i +1
i +1
B
B
B
SetR(C, B, i+1)
Assigning C.lseq + 1 ?
A C
A C
?
?
B
B
SetR(C, B, ?)
Recovery | Sequence Number (2)
Both A and X have
the same right node
(C) and the same
rseq (i +1)
25
A X
i +1
i
C
A
X
C
A
X
C
SetL
SetL
i +1
i +1
i +1
i +1
i +1
B
B
B
SetR(C, B, i +1)
C’s left link may rollback !
A X
i +1
CSetL
BX inserts between

B and C
B fails while SetL

to C is still in
transmission
C starts recovery

w/o noticing X
Subtle Case
Recovery | Sequence Number (3)
Solution:
Extend
sequence
number:
(recovery-
number, seq)
Recovery
number is
increased only
on recovery
Left links do
not rollback!
26
A X
(0, i +1)
(0, i)
C
A
X
C
A
X
C
SetL
SetL
(1, 0) (0, i +1)
(1, 0)
BA
(0, i)
(0, i)
C
B
B
B
SetR(C, B, (1, 0))
(0, i +1)
Outline
Background
What is distributed doubly linked list
Conventional approaches
The DDLL algorithm
Procedure for node insertion, deletion and traversal
Procedure for recovery from failure
Evaluation
Comparison with conventional algorithms
Conclusion
27
Evaluation
Comparison
DDLL(without optimization)
DDLL(with optimization)
Atomic Ring Maintenance (distributed-locking)
A. Ghodsi, “Distributed k-ary System: Algorithms for distributed hash
tables,” PhD Dissertation, KTH—Royal Institute of Technology, 2006.
Li’s algorithm (distributed locking, no finger table)
X. Li, et. al., “Concurrent maintenance of rings.” Distributed Comp., vol. 19,
no. 2, pp. 126–148, 2006.
Chord (eventual consistency, no finger table)
I. Stoica, et. al., “Chord: A scalable peer-to-peer lookup protocol for internet
applications,” IEEE/ACM Trans. on Net., vol. 11, no. 1, pp. 17–32, 2003.
28
Eval | Insertion Sequence
29
u
p q
Join(u)
Ack(p, q)
Grant(u)
🔒
🔓
🔒
🔓
Li’s
Done
u
p q
JoinReq
JoinDone
JoinPoint
NewSuccAck
🔒
🔓
🔒
🔓
Atomic Ring Maintenance
NewSucc
DDLL
qp
SetLSetRAck
u
SetR
Eval | Time for Concurrent Insertion
Simulated on a
discrete event
simulator
Insert an initial node
Insert n nodes in
parallel

(n = 1 to 100)
Measured time required
to converge all links
Time includes lookup
messages for
searching node
insertion position
30
0
20
40
60
80
100
120
0 20 40 60 80 100
time
# of simultaneously inserting nodes
DDLL(Opt)
DDLL(NoOpt)
Atomic
Li's
Chord
DDLL(Opt) converges quickly
Time to converge
time unit = one-way message

transmission time
Eval | # of Msgs for Concurrent Insertion
31
0
1
2
3
4
5
0 20 40 60 80 100
#ofmessages(x1000)
# of simultaneously inserting nodes
DDLL(Opt)
DDLL(NoOpt)
Atomic
Li's
Chord
# of messages to convergeMeasured # of
messages
required to
converge all links
DDLL(Opt) uses less messages
Outline
Background
What is distributed doubly linked list
Conventional approaches
The DDLL algorithm
Procedure for node insertion, deletion and traversal
Procedure for recovery from failure
Evaluation
Comparison with conventional algorithms
Conclusion
32
Conclusion
DDLL algorithm for constructing distributed doubly linked
lists
No distributed locking
Right links are always correct, Left links converge quickly
Maintains lookup consistency (in absence of failure)
More efficient than conventional algorithms
Recovery procedure is provided
No FIFO channel is required
Correctness proofs for insertion and deletion procedure
DDLL is suitable for ring-based structured P2P networks
Real example: DDLL is used as a foundation of Skip Graph
and Chord# implementations in PIAX P2P platform
33
Spare Slides
34
Recovery | Sequence Number (4)
X is excluded
from the linked
list but
eventually
returns
35
BA
X
C
(1, 0) (0, i +1)
(1, 0)
BA
X
C
(0, i +1)
(1, 0)
SetR(X, C, (0, 0))
BA
X
C
(0, 0) (1, 1)
(1, 0)
(1, 0)
BA
X
C
(0, i +1)
(1, 0)
(0, 0)
SetRAck((1,1))
(0, 0)
DDLL pseudo code
36
12 i f ( s ̸= out ∨ u ̸∈ (p, q)) then error ; f i
13 l , r , s := p , q , i n s
14 send SetR ( u , r , lseq ) to l
15 {Delete}
16 [ ] (A3 ) r e c e i v e Delete ( ) from app →
17 i f ( s ̸= in ) then error
18 e l s e i f ( u = r ) then {in case of the l a s t node}
19 s := out
20 e l s e s := del ; send SetR ( r , u , rseq + 1) to l ; f i
21 [ ] (A4 ) r e c e i v e SetR (rnew , rcur , rnewseq ) from v →
22 i f ( s = in ∧ r = rcur ) then
23 i f (rnew = v) then { i n s e r t i o n case}
24 send SetL (rnew , rseq + 1) to r
25 e l s e { d e l e t i o n case}
26 send SetL ( u , rnewseq ) to rnew ; f i
27 send SetRAck (rseq + 1) to v
28 r , rseq := rnew , rnewseq
29 e l s e send SetRNak ( ) to v ; f i
30 [ ] (A5 ) r e c e i v e SetRAck (rnewseq ) from v →
31 i f ( s = i n s ) then
32 s , rseq := in , rnewseq
33 e l s e i f ( s = del ) then
34 s := out ; f i
35 [ ] (A6 ) r e c e i v e SetRNak ( ) from v →
36 i f ( s = i n s ) then
37 s := out ; error {app r e t r i e s i n s e r t i o n l a t e r }
38 e l s e i f ( s = del ) then
39 s := in ; error ; f i {app r e t r i e s d e l e t i o n l a t e r }
40 [ ] (A7 ) r e c e i v e SetL (lnew , seq) from v →
41 i f (lseq< seq) then l , lseq := lnew , seq ; f i
42 end
Fig. 1: DDLL algorithm (without optimization)
are executed.
(A2) u sets u’s left link and right link to p and
h
n
m
t
i
s
f
u
m
s
i
f
b
f
p
s
c
u
m
a
B
1 process u
2 var s : {out , ins , in , del}
3 l , r : {p o i n t e r to a node or n i l }
4 lseq , rseq : { i n t e g e r or n i l }
5 i n i t s = out ; l = r = n i l ; lseq = 0; rseq = n i l
6 begin
7 {Create a l i n k e d l i s t }
8 (A1 ) r e c e i v e Create ( ) from app →
9 l , r , s , lseq , rseq := u , u , in , 0 , 0
10 { I n s e r t between p and q}
11 [ ] (A2 ) r e c e i v e I n s e r t ( p , q ) from app →
12 i f ( s ̸= out ∨ u ̸∈ (p, q)) then error ; f i
13 l , r , s := p , q , i n s
14 send SetR ( u , r , lseq ) to l
15 {Delete}
16 [ ] (A3 ) r e c e i v e Delete ( ) from app →
17 i f ( s ̸= in ) then error
18 e l s e i f ( u = r ) then {in case of the l a s t node}
19 s := out
20 e l s e s := del ; send SetR ( r , u , rseq + 1) to l ; f i
21 [ ] (A4 ) r e c e i v e SetR (rnew , rcur , rnewseq ) from v →
22 i f ( s = in ∧ r = rcur ) then
23 i f (rnew = v) then { i n s e r t i o n case}
24 send SetL (rnew , rseq + 1) to r
25 e l s e { d e l e t i o n case}
26 send SetL ( u , rnewseq ) to rnew ; f i
27 send SetRAck (rseq + 1) to v
28 r , rseq := rnew , rnewseq
29 e l s e send SetRNak ( ) to v ; f i
30 [ ] (A5 ) r e c e i v e SetRAck (rnewseq ) from v →
31 i f ( s = i n s ) then
32 s , rseq := in , rnewseq
33 e l s e i f ( s = del ) then
u (as the new left node) and p.rseq +1(= i+1) (as the
sequence number of the SetL message). Next, p sends
a SetRAck message to u to notify that the insertion
was successful. Because left(q) is changed from p to u,
the incremented right sequence number for q should be
transferred from p to u. For this purpose, the SetRAck
message contains p.rseq +1(= i+1). Finally, p changes
p.r to u and p.rseq to 0 (rnewseq). Because u’s right link
has already been set to q, the rightward linked list is
never interrupted, even for a moment. Note that at this
moment, p.rseq = u.lseq holds.
(A5) On receiving the SetRAck message, u confirms
that u is successfully inserted. Node u updates u.s to
in to indicate that u is inserted, and sets u.rseq to i+1.
(A7) On receiving the SetL message, q compares the
sequence number of the SetL message with q.lseq. If the
former is larger (we assume this case), q updates q.l to
u and q.lseq to i+1. Otherwise, q ignores the message.
In the scenario above, it is assumed that a SetRAck
message is sent to u in A4. If a SetRNak message is
sent (i.e., in the case of insertion failure), then (A6) u.s

More Related Content

What's hot

Lessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting ReplicationLessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting ReplicationSveta Smirnova
 
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...DataStax
 
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...ScyllaDB
 
Seastar metrics
Seastar metricsSeastar metrics
Seastar metricsScyllaDB
 
Evolution of MySQL Parallel Replication
Evolution of MySQL Parallel Replication Evolution of MySQL Parallel Replication
Evolution of MySQL Parallel Replication Mydbops
 
Introduction to unsupervised learning: outlier detection
Introduction to unsupervised learning: outlier detectionIntroduction to unsupervised learning: outlier detection
Introduction to unsupervised learning: outlier detectionJoseph Itopa Abubakar
 
MySQL Timeout Variables Explained
MySQL Timeout Variables Explained MySQL Timeout Variables Explained
MySQL Timeout Variables Explained Mydbops
 
Master master vs master-slave database
Master master vs master-slave databaseMaster master vs master-slave database
Master master vs master-slave databaseWipro
 
NoSQL Data Architecture Patterns
NoSQL Data ArchitecturePatternsNoSQL Data ArchitecturePatterns
NoSQL Data Architecture PatternsMaynooth University
 
Monitor Apache Spark 3 on Kubernetes using Metrics and Plugins
Monitor Apache Spark 3 on Kubernetes using Metrics and PluginsMonitor Apache Spark 3 on Kubernetes using Metrics and Plugins
Monitor Apache Spark 3 on Kubernetes using Metrics and PluginsDatabricks
 
Hardware Provisioning
Hardware ProvisioningHardware Provisioning
Hardware ProvisioningMongoDB
 
Apriori and Eclat algorithm in Association Rule Mining
Apriori and Eclat algorithm in Association Rule MiningApriori and Eclat algorithm in Association Rule Mining
Apriori and Eclat algorithm in Association Rule MiningWan Aezwani Wab
 
Postgres vs Mongo / Олег Бартунов (Postgres Professional)
Postgres vs Mongo / Олег Бартунов (Postgres Professional)Postgres vs Mongo / Олег Бартунов (Postgres Professional)
Postgres vs Mongo / Олег Бартунов (Postgres Professional)Ontico
 
How to use histograms to get better performance
How to use histograms to get better performanceHow to use histograms to get better performance
How to use histograms to get better performanceMariaDB plc
 
ScyllaDBユーザー勉強会 #1
ScyllaDBユーザー勉強会 #1ScyllaDBユーザー勉強会 #1
ScyllaDBユーザー勉強会 #1Changhwan Lee
 
OpeVPN on Mikrotik
OpeVPN on MikrotikOpeVPN on Mikrotik
OpeVPN on MikrotikGLC Networks
 
InnoDB Performance Optimisation
InnoDB Performance OptimisationInnoDB Performance Optimisation
InnoDB Performance OptimisationMydbops
 

What's hot (20)

Ensemble learning
Ensemble learningEnsemble learning
Ensemble learning
 
Lessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting ReplicationLessons Learned: Troubleshooting Replication
Lessons Learned: Troubleshooting Replication
 
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
Replication and Consistency in Cassandra... What Does it All Mean? (Christoph...
 
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
How to Secure Your Scylla Deployment: Authorization, Encryption, LDAP Authent...
 
Seastar metrics
Seastar metricsSeastar metrics
Seastar metrics
 
Evolution of MySQL Parallel Replication
Evolution of MySQL Parallel Replication Evolution of MySQL Parallel Replication
Evolution of MySQL Parallel Replication
 
Introduction to unsupervised learning: outlier detection
Introduction to unsupervised learning: outlier detectionIntroduction to unsupervised learning: outlier detection
Introduction to unsupervised learning: outlier detection
 
MySQL Timeout Variables Explained
MySQL Timeout Variables Explained MySQL Timeout Variables Explained
MySQL Timeout Variables Explained
 
Linear Regression
Linear RegressionLinear Regression
Linear Regression
 
Master master vs master-slave database
Master master vs master-slave databaseMaster master vs master-slave database
Master master vs master-slave database
 
NoSQL Data Architecture Patterns
NoSQL Data ArchitecturePatternsNoSQL Data ArchitecturePatterns
NoSQL Data Architecture Patterns
 
Monitor Apache Spark 3 on Kubernetes using Metrics and Plugins
Monitor Apache Spark 3 on Kubernetes using Metrics and PluginsMonitor Apache Spark 3 on Kubernetes using Metrics and Plugins
Monitor Apache Spark 3 on Kubernetes using Metrics and Plugins
 
Hardware Provisioning
Hardware ProvisioningHardware Provisioning
Hardware Provisioning
 
Distributed computing with spark
Distributed computing with sparkDistributed computing with spark
Distributed computing with spark
 
Apriori and Eclat algorithm in Association Rule Mining
Apriori and Eclat algorithm in Association Rule MiningApriori and Eclat algorithm in Association Rule Mining
Apriori and Eclat algorithm in Association Rule Mining
 
Postgres vs Mongo / Олег Бартунов (Postgres Professional)
Postgres vs Mongo / Олег Бартунов (Postgres Professional)Postgres vs Mongo / Олег Бартунов (Postgres Professional)
Postgres vs Mongo / Олег Бартунов (Postgres Professional)
 
How to use histograms to get better performance
How to use histograms to get better performanceHow to use histograms to get better performance
How to use histograms to get better performance
 
ScyllaDBユーザー勉強会 #1
ScyllaDBユーザー勉強会 #1ScyllaDBユーザー勉強会 #1
ScyllaDBユーザー勉強会 #1
 
OpeVPN on Mikrotik
OpeVPN on MikrotikOpeVPN on Mikrotik
OpeVPN on Mikrotik
 
InnoDB Performance Optimisation
InnoDB Performance OptimisationInnoDB Performance Optimisation
InnoDB Performance Optimisation
 

Viewers also liked

A comparison of dense region detectors for image search and fine grained clas...
A comparison of dense region detectors for image search and fine grained clas...A comparison of dense region detectors for image search and fine grained clas...
A comparison of dense region detectors for image search and fine grained clas...I3E Technologies
 
Ag comité des œuvres sociales saint quentin lundi 1 juin 2015 d gayraud
Ag comité des œuvres sociales saint quentin lundi 1 juin 2015 d gayraudAg comité des œuvres sociales saint quentin lundi 1 juin 2015 d gayraud
Ag comité des œuvres sociales saint quentin lundi 1 juin 2015 d gayraudDominique Gayraud
 
TYPES OF HUMAN TRAFFICKING PREVALENT IN NEPAL
TYPES OF HUMAN TRAFFICKING PREVALENT IN NEPALTYPES OF HUMAN TRAFFICKING PREVALENT IN NEPAL
TYPES OF HUMAN TRAFFICKING PREVALENT IN NEPALAashish Mishra
 
A novel active learning method in relevance feedback for content based remote...
A novel active learning method in relevance feedback for content based remote...A novel active learning method in relevance feedback for content based remote...
A novel active learning method in relevance feedback for content based remote...I3E Technologies
 
Progetto mappatura CSO per Banca Cassa di Risparmio di Firenze
Progetto mappatura CSO per Banca Cassa di Risparmio di FirenzeProgetto mappatura CSO per Banca Cassa di Risparmio di Firenze
Progetto mappatura CSO per Banca Cassa di Risparmio di FirenzeBusiness Resiliente
 
Elena fraga total life changes lunes no cambiar sin permiso
Elena fraga total life changes lunes   no cambiar sin permisoElena fraga total life changes lunes   no cambiar sin permiso
Elena fraga total life changes lunes no cambiar sin permisoElena Fraga
 
Régionales 2015 : Les intentions de vote des Français à un mois du scrutin
Régionales 2015 : Les intentions de vote des Français à un mois du scrutinRégionales 2015 : Les intentions de vote des Français à un mois du scrutin
Régionales 2015 : Les intentions de vote des Français à un mois du scrutinIpsos France
 
The Working Time Records an Employer Must Keep in ireland
The Working Time Records an Employer Must Keep in irelandThe Working Time Records an Employer Must Keep in ireland
The Working Time Records an Employer Must Keep in irelandTerry Gorry
 
Indigenous Peoples of the Philippines
Indigenous Peoples of the PhilippinesIndigenous Peoples of the Philippines
Indigenous Peoples of the PhilippinesMonte Christo
 

Viewers also liked (11)

A comparison of dense region detectors for image search and fine grained clas...
A comparison of dense region detectors for image search and fine grained clas...A comparison of dense region detectors for image search and fine grained clas...
A comparison of dense region detectors for image search and fine grained clas...
 
Ag comité des œuvres sociales saint quentin lundi 1 juin 2015 d gayraud
Ag comité des œuvres sociales saint quentin lundi 1 juin 2015 d gayraudAg comité des œuvres sociales saint quentin lundi 1 juin 2015 d gayraud
Ag comité des œuvres sociales saint quentin lundi 1 juin 2015 d gayraud
 
Realidad virtual
Realidad virtualRealidad virtual
Realidad virtual
 
TYPES OF HUMAN TRAFFICKING PREVALENT IN NEPAL
TYPES OF HUMAN TRAFFICKING PREVALENT IN NEPALTYPES OF HUMAN TRAFFICKING PREVALENT IN NEPAL
TYPES OF HUMAN TRAFFICKING PREVALENT IN NEPAL
 
A novel active learning method in relevance feedback for content based remote...
A novel active learning method in relevance feedback for content based remote...A novel active learning method in relevance feedback for content based remote...
A novel active learning method in relevance feedback for content based remote...
 
Progetto mappatura CSO per Banca Cassa di Risparmio di Firenze
Progetto mappatura CSO per Banca Cassa di Risparmio di FirenzeProgetto mappatura CSO per Banca Cassa di Risparmio di Firenze
Progetto mappatura CSO per Banca Cassa di Risparmio di Firenze
 
Prodec activites 2010
Prodec activites 2010Prodec activites 2010
Prodec activites 2010
 
Elena fraga total life changes lunes no cambiar sin permiso
Elena fraga total life changes lunes   no cambiar sin permisoElena fraga total life changes lunes   no cambiar sin permiso
Elena fraga total life changes lunes no cambiar sin permiso
 
Régionales 2015 : Les intentions de vote des Français à un mois du scrutin
Régionales 2015 : Les intentions de vote des Français à un mois du scrutinRégionales 2015 : Les intentions de vote des Français à un mois du scrutin
Régionales 2015 : Les intentions de vote des Français à un mois du scrutin
 
The Working Time Records an Employer Must Keep in ireland
The Working Time Records an Employer Must Keep in irelandThe Working Time Records an Employer Must Keep in ireland
The Working Time Records an Employer Must Keep in ireland
 
Indigenous Peoples of the Philippines
Indigenous Peoples of the PhilippinesIndigenous Peoples of the Philippines
Indigenous Peoples of the Philippines
 

Similar to Constructing Distributed Doubly Linked Lists without Distributed Locking

Tensor Spectral Clustering
Tensor Spectral ClusteringTensor Spectral Clustering
Tensor Spectral ClusteringAustin Benson
 
Foot-mounted Inertial Navigation Made Easy
Foot-mounted Inertial Navigation Made EasyFoot-mounted Inertial Navigation Made Easy
Foot-mounted Inertial Navigation Made Easyoblu.io
 
LeastSquaresParameterEstimation.ppt
LeastSquaresParameterEstimation.pptLeastSquaresParameterEstimation.ppt
LeastSquaresParameterEstimation.pptStavrovDule2
 
Scalable Constrained Spectral Clustering
Scalable Constrained Spectral ClusteringScalable Constrained Spectral Clustering
Scalable Constrained Spectral Clustering1crore projects
 
Cycle’s topological optimizations and the iterative decoding problem on gener...
Cycle’s topological optimizations and the iterative decoding problem on gener...Cycle’s topological optimizations and the iterative decoding problem on gener...
Cycle’s topological optimizations and the iterative decoding problem on gener...Usatyuk Vasiliy
 
DCE: A NOVEL DELAY CORRELATION MEASUREMENT FOR TOMOGRAPHY WITH PASSIVE REAL...
DCE: A NOVEL DELAY CORRELATION  MEASUREMENT FOR TOMOGRAPHY WITH PASSIVE  REAL...DCE: A NOVEL DELAY CORRELATION  MEASUREMENT FOR TOMOGRAPHY WITH PASSIVE  REAL...
DCE: A NOVEL DELAY CORRELATION MEASUREMENT FOR TOMOGRAPHY WITH PASSIVE REAL...ijdpsjournal
 
Observer design for descriptor linear systems
Observer design for descriptor linear systemsObserver design for descriptor linear systems
Observer design for descriptor linear systemsMahendra Gupta
 
Network Bandwidth Allocation.ppt
Network Bandwidth Allocation.pptNetwork Bandwidth Allocation.ppt
Network Bandwidth Allocation.pptAliIssa53
 
MVPA with SpaceNet: sparse structured priors
MVPA with SpaceNet: sparse structured priorsMVPA with SpaceNet: sparse structured priors
MVPA with SpaceNet: sparse structured priorsElvis DOHMATOB
 
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdfreservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdfRTEFGDFGJU
 
High Data Availability and Consistency for Distributed Hash Tables Deployed ...
High Data Availability and Consistency for Distributed Hash Tables  Deployed ...High Data Availability and Consistency for Distributed Hash Tables  Deployed ...
High Data Availability and Consistency for Distributed Hash Tables Deployed ...pedjak
 
Availability of a Redundant System with Two Parallel Active Components
Availability of a Redundant System with Two Parallel Active ComponentsAvailability of a Redundant System with Two Parallel Active Components
Availability of a Redundant System with Two Parallel Active Componentstheijes
 
5.1.3. Chord.pptx
5.1.3. Chord.pptx5.1.3. Chord.pptx
5.1.3. Chord.pptxAnusuya123
 
N byte error detecting and correcting code using reedsolomon
N byte error detecting and correcting code using reedsolomonN byte error detecting and correcting code using reedsolomon
N byte error detecting and correcting code using reedsolomoneSAT Publishing House
 

Similar to Constructing Distributed Doubly Linked Lists without Distributed Locking (20)

Tensor Spectral Clustering
Tensor Spectral ClusteringTensor Spectral Clustering
Tensor Spectral Clustering
 
UofT_ML_lecture.pptx
UofT_ML_lecture.pptxUofT_ML_lecture.pptx
UofT_ML_lecture.pptx
 
Foot-mounted Inertial Navigation Made Easy
Foot-mounted Inertial Navigation Made EasyFoot-mounted Inertial Navigation Made Easy
Foot-mounted Inertial Navigation Made Easy
 
3.01.Lists.pptx
3.01.Lists.pptx3.01.Lists.pptx
3.01.Lists.pptx
 
Birch
BirchBirch
Birch
 
LeastSquaresParameterEstimation.ppt
LeastSquaresParameterEstimation.pptLeastSquaresParameterEstimation.ppt
LeastSquaresParameterEstimation.ppt
 
Scalable Constrained Spectral Clustering
Scalable Constrained Spectral ClusteringScalable Constrained Spectral Clustering
Scalable Constrained Spectral Clustering
 
Cycle’s topological optimizations and the iterative decoding problem on gener...
Cycle’s topological optimizations and the iterative decoding problem on gener...Cycle’s topological optimizations and the iterative decoding problem on gener...
Cycle’s topological optimizations and the iterative decoding problem on gener...
 
DCE: A NOVEL DELAY CORRELATION MEASUREMENT FOR TOMOGRAPHY WITH PASSIVE REAL...
DCE: A NOVEL DELAY CORRELATION  MEASUREMENT FOR TOMOGRAPHY WITH PASSIVE  REAL...DCE: A NOVEL DELAY CORRELATION  MEASUREMENT FOR TOMOGRAPHY WITH PASSIVE  REAL...
DCE: A NOVEL DELAY CORRELATION MEASUREMENT FOR TOMOGRAPHY WITH PASSIVE REAL...
 
Observer design for descriptor linear systems
Observer design for descriptor linear systemsObserver design for descriptor linear systems
Observer design for descriptor linear systems
 
Data structure-question-bank
Data structure-question-bankData structure-question-bank
Data structure-question-bank
 
Network Bandwidth Allocation.ppt
Network Bandwidth Allocation.pptNetwork Bandwidth Allocation.ppt
Network Bandwidth Allocation.ppt
 
MVPA with SpaceNet: sparse structured priors
MVPA with SpaceNet: sparse structured priorsMVPA with SpaceNet: sparse structured priors
MVPA with SpaceNet: sparse structured priors
 
Rbd best
Rbd bestRbd best
Rbd best
 
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdfreservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
 
High Data Availability and Consistency for Distributed Hash Tables Deployed ...
High Data Availability and Consistency for Distributed Hash Tables  Deployed ...High Data Availability and Consistency for Distributed Hash Tables  Deployed ...
High Data Availability and Consistency for Distributed Hash Tables Deployed ...
 
Adaptive dynamic programming algorithm for uncertain nonlinear switched systems
Adaptive dynamic programming algorithm for uncertain nonlinear switched systemsAdaptive dynamic programming algorithm for uncertain nonlinear switched systems
Adaptive dynamic programming algorithm for uncertain nonlinear switched systems
 
Availability of a Redundant System with Two Parallel Active Components
Availability of a Redundant System with Two Parallel Active ComponentsAvailability of a Redundant System with Two Parallel Active Components
Availability of a Redundant System with Two Parallel Active Components
 
5.1.3. Chord.pptx
5.1.3. Chord.pptx5.1.3. Chord.pptx
5.1.3. Chord.pptx
 
N byte error detecting and correcting code using reedsolomon
N byte error detecting and correcting code using reedsolomonN byte error detecting and correcting code using reedsolomon
N byte error detecting and correcting code using reedsolomon
 

More from Kota Abe

構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案と評価
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案と評価構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案と評価
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案と評価Kota Abe
 
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案Kota Abe
 
WebRTCを用いたWebブラウザ間構造化P2Pネットワークの実現
WebRTCを用いたWebブラウザ間構造化P2Pネットワークの実現WebRTCを用いたWebブラウザ間構造化P2Pネットワークの実現
WebRTCを用いたWebブラウザ間構造化P2Pネットワークの実現Kota Abe
 
WebRTCを用いた耐故障性の高い
ウェブブラウザ間構造化P2Pネットワークの実現
WebRTCを用いた耐故障性の高い
ウェブブラウザ間構造化P2Pネットワークの実現WebRTCを用いた耐故障性の高い
ウェブブラウザ間構造化P2Pネットワークの実現
WebRTCを用いた耐故障性の高い
ウェブブラウザ間構造化P2Pネットワークの実現Kota Abe
 
高いChurn耐性と検索性能を持つキー順序保存型構造化オーバレイネットワークSuzakuの提案と評価
高いChurn耐性と検索性能を持つキー順序保存型構造化オーバレイネットワークSuzakuの提案と評価高いChurn耐性と検索性能を持つキー順序保存型構造化オーバレイネットワークSuzakuの提案と評価
高いChurn耐性と検索性能を持つキー順序保存型構造化オーバレイネットワークSuzakuの提案と評価Kota Abe
 
KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現
KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現
KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現Kota Abe
 
P2Pネットワークにおける経路長あるいは経路表サイズの最大値を柔軟に設定可能な経路表構築方式
P2Pネットワークにおける経路長あるいは経路表サイズの最大値を柔軟に設定可能な経路表構築方式P2Pネットワークにおける経路長あるいは経路表サイズの最大値を柔軟に設定可能な経路表構築方式
P2Pネットワークにおける経路長あるいは経路表サイズの最大値を柔軟に設定可能な経路表構築方式Kota Abe
 
構造化P2Pネットワークにおけるコンテンツの人気度を考慮したショートカットリンクの生成方法とその評価
構造化P2Pネットワークにおけるコンテンツの人気度を考慮したショートカットリンクの生成方法とその評価構造化P2Pネットワークにおけるコンテンツの人気度を考慮したショートカットリンクの生成方法とその評価
構造化P2Pネットワークにおけるコンテンツの人気度を考慮したショートカットリンクの生成方法とその評価Kota Abe
 
高速な挿入と検索が可能なSkip Graphの改良
高速な挿入と検索が可能なSkip Graphの改良高速な挿入と検索が可能なSkip Graphの改良
高速な挿入と検索が可能なSkip Graphの改良Kota Abe
 
Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案
Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案
Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案Kota Abe
 
距離が付加された要素集合をコンパクトに表現できるDistance Bloom Filterの提案とP2Pネットワークにおける最短経路探索への応用
距離が付加された要素集合をコンパクトに表現できるDistance Bloom Filterの提案とP2Pネットワークにおける最短経路探索への応用距離が付加された要素集合をコンパクトに表現できるDistance Bloom Filterの提案とP2Pネットワークにおける最短経路探索への応用
距離が付加された要素集合をコンパクトに表現できるDistance Bloom Filterの提案とP2Pネットワークにおける最短経路探索への応用Kota Abe
 
Chord#における経路表の維持管理コスト削減手法
Chord#における経路表の維持管理コスト削減手法Chord#における経路表の維持管理コスト削減手法
Chord#における経路表の維持管理コスト削減手法Kota Abe
 
区間をキーとして保持する分散KVSの効率的な実現法
区間をキーとして保持する分散KVSの効率的な実現法区間をキーとして保持する分散KVSの効率的な実現法
区間をキーとして保持する分散KVSの効率的な実現法Kota Abe
 
P2PネットワークにおけるSkip GraphとBloom Filterを用いた効率的な複数キーワード検索手法の提案
P2PネットワークにおけるSkip GraphとBloom Filterを用いた効率的な複数キーワード検索手法の提案P2PネットワークにおけるSkip GraphとBloom Filterを用いた効率的な複数キーワード検索手法の提案
P2PネットワークにおけるSkip GraphとBloom Filterを用いた効率的な複数キーワード検索手法の提案Kota Abe
 
P2Pシステム上での安定したサービス提供基盤musasabi
P2Pシステム上での安定したサービス提供基盤musasabiP2Pシステム上での安定したサービス提供基盤musasabi
P2Pシステム上での安定したサービス提供基盤musasabiKota Abe
 
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
構造化オーバーレイネットワークに適した分散双方向連結リストDDLLKota Abe
 

More from Kota Abe (16)

構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案と評価
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案と評価構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案と評価
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案と評価
 
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案
構造化オーバーレイネットワークを用いた条件付きマルチキャストの提案
 
WebRTCを用いたWebブラウザ間構造化P2Pネットワークの実現
WebRTCを用いたWebブラウザ間構造化P2Pネットワークの実現WebRTCを用いたWebブラウザ間構造化P2Pネットワークの実現
WebRTCを用いたWebブラウザ間構造化P2Pネットワークの実現
 
WebRTCを用いた耐故障性の高い
ウェブブラウザ間構造化P2Pネットワークの実現
WebRTCを用いた耐故障性の高い
ウェブブラウザ間構造化P2Pネットワークの実現WebRTCを用いた耐故障性の高い
ウェブブラウザ間構造化P2Pネットワークの実現
WebRTCを用いた耐故障性の高い
ウェブブラウザ間構造化P2Pネットワークの実現
 
高いChurn耐性と検索性能を持つキー順序保存型構造化オーバレイネットワークSuzakuの提案と評価
高いChurn耐性と検索性能を持つキー順序保存型構造化オーバレイネットワークSuzakuの提案と評価高いChurn耐性と検索性能を持つキー順序保存型構造化オーバレイネットワークSuzakuの提案と評価
高いChurn耐性と検索性能を持つキー順序保存型構造化オーバレイネットワークSuzakuの提案と評価
 
KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現
KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現
KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現
 
P2Pネットワークにおける経路長あるいは経路表サイズの最大値を柔軟に設定可能な経路表構築方式
P2Pネットワークにおける経路長あるいは経路表サイズの最大値を柔軟に設定可能な経路表構築方式P2Pネットワークにおける経路長あるいは経路表サイズの最大値を柔軟に設定可能な経路表構築方式
P2Pネットワークにおける経路長あるいは経路表サイズの最大値を柔軟に設定可能な経路表構築方式
 
構造化P2Pネットワークにおけるコンテンツの人気度を考慮したショートカットリンクの生成方法とその評価
構造化P2Pネットワークにおけるコンテンツの人気度を考慮したショートカットリンクの生成方法とその評価構造化P2Pネットワークにおけるコンテンツの人気度を考慮したショートカットリンクの生成方法とその評価
構造化P2Pネットワークにおけるコンテンツの人気度を考慮したショートカットリンクの生成方法とその評価
 
高速な挿入と検索が可能なSkip Graphの改良
高速な挿入と検索が可能なSkip Graphの改良高速な挿入と検索が可能なSkip Graphの改良
高速な挿入と検索が可能なSkip Graphの改良
 
Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案
Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案
Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案
 
距離が付加された要素集合をコンパクトに表現できるDistance Bloom Filterの提案とP2Pネットワークにおける最短経路探索への応用
距離が付加された要素集合をコンパクトに表現できるDistance Bloom Filterの提案とP2Pネットワークにおける最短経路探索への応用距離が付加された要素集合をコンパクトに表現できるDistance Bloom Filterの提案とP2Pネットワークにおける最短経路探索への応用
距離が付加された要素集合をコンパクトに表現できるDistance Bloom Filterの提案とP2Pネットワークにおける最短経路探索への応用
 
Chord#における経路表の維持管理コスト削減手法
Chord#における経路表の維持管理コスト削減手法Chord#における経路表の維持管理コスト削減手法
Chord#における経路表の維持管理コスト削減手法
 
区間をキーとして保持する分散KVSの効率的な実現法
区間をキーとして保持する分散KVSの効率的な実現法区間をキーとして保持する分散KVSの効率的な実現法
区間をキーとして保持する分散KVSの効率的な実現法
 
P2PネットワークにおけるSkip GraphとBloom Filterを用いた効率的な複数キーワード検索手法の提案
P2PネットワークにおけるSkip GraphとBloom Filterを用いた効率的な複数キーワード検索手法の提案P2PネットワークにおけるSkip GraphとBloom Filterを用いた効率的な複数キーワード検索手法の提案
P2PネットワークにおけるSkip GraphとBloom Filterを用いた効率的な複数キーワード検索手法の提案
 
P2Pシステム上での安定したサービス提供基盤musasabi
P2Pシステム上での安定したサービス提供基盤musasabiP2Pシステム上での安定したサービス提供基盤musasabi
P2Pシステム上での安定したサービス提供基盤musasabi
 
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
構造化オーバーレイネットワークに適した分散双方向連結リストDDLL
 

Recently uploaded

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Recently uploaded (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Constructing Distributed Doubly Linked Lists without Distributed Locking

  • 1. Constructing
 Distributed Doubly Linked List
 without Distributed Locking IEEE Peer-to-Peer Conference 2015 Sep 23rd–24th, 2015 Kota Abe, Osaka City University / NICT, Japan Mikio Yoshida, BBR Inc., Japan 1
  • 2. Outline Background What is distributed doubly linked list Conventional approaches The DDLL algorithm Procedure for node insertion, deletion and traversal Procedure for recovery from failure Evaluation Comparison with conventional algorithms Conclusion 2
  • 3. Outline Background What is distributed doubly linked list Conventional approaches The DDLL algorithm Procedure for node insertion, deletion and traversal Procedure for recovery from failure Evaluation Comparison with conventional algorithms Conclusion 3
  • 4. Distributed Doubly Linked List aka Bidirectional Ring Commonly used in structured
 P2P networks Chord, Chord#, Skip Graph, 
 SkipNet, etc. Structure Pointer (e.g. IP address) to the next (successor) node and previous (predecessor) node We call right and left pointers Sorted by node-specific key Circular 4 0 2060 40 70 10 50 30
  • 5. Maintaining Distributed Doubly Linked List Challenges Nodes are distributed and may be simultaneously and independently inserted and deleted Nodes may fail 5 u p q u p q Insertion Deletion up q Recovery p q r Traversal
  • 6. u p q Conventional Approaches (1/2) Eventual Consistency Approach Node insertion and deletion temporarily breaks the list structure Stabilizing procedure recovers 6 p q u u p q Distributed Locking Approach Use a lock🔒 to mutually exclude node insertion / deletion u p q JoinDone JoinPoint NewSuccAck 🔒 🔓 🔒 🔓 NewSucc JoinReq Chord Atomic Ring Maintenance (Ghodsi) u p q
  • 7. Conventional Approach (2/2) Eventual Consistency Approach Pros 👍 Easy to recover from failure Cons 👎 No lookup consistency: Lookup results may differ depending on the querying node Distributed Locking Approach Pros 👍 Lookup consistency Cons 👎 Lock disturbs another node insertion / deletion When a node fails, locking duration may be quite long Recovery procedure is rather complicated Release a lock by timeout, which may be premature → locks should not be used 
 if possible
  • 8. Outline Background What is distributed doubly linked list Conventional approaches The DDLL algorithm Procedure for node insertion, deletion and traversal Procedure for recovery from failure Evaluation Comparison with conventional algorithms Conclusion 8
  • 9. Our Contribution — DDLL Algorithm DDLL = Distributed algorithm for constructing distributed doubly linked lists Acronym of “Distributed Doubly Linked List” Guarantees lookup consistency without using distributed locking (in absence of failure) Simple and Efficient Proved correctness (insertion and deletion procedure) Practical Works with non-FIFO channels (e.g. UDP) Used in our PIAX P2P platform as a foundation of Skip Graph and Chord# implementations 9
  • 10. Node Insertion 10 u p q u p q u p q u p q (1) u.l := p, u.r := q (2) Update right link: Change p’s right link to u (3) Update left link: Change q’s left link to u u is going to be inserted
 between p and q
  • 11. Updating Right Link (1/3) 11 u p q v u qo p has been deleted We want to change p’s right link only if
 there is no conflict u p r q has been deleted q p Conflicts another node has been inserted between p and q
  • 12. SetR message is used for updating a right link SetR message contains: new right node expected right node of the recipient node When a SetR request is accepted, p returns a SetRAck message Otherwise, p returns SetRNak message Updating Right Link (2/3) 12 u p q u p q SetR(u, q) Please change your right link to me (u) if your right link still points to q and you has not initiated deletion SetRAck Ok!
  • 13. Right links are always correct without using locking Updating Right Link (3/3) 13 u p q v another node has been inserted between p and q SetR(u, q) p.r != q Conflict case example: u p q v SetRNak Sorry!
  • 14. Updating Left Link (1/3) p q p q uSetR(u, q) Message Sequence 14 u p q u v u v SetL(v)SetRAck SetL(u) SetRAck p q SetR(v, q) Problem: Multiple SetL messages arrive from different nodes
 in arbitrary order (because we do not want to use locking) Node must determine which SetL message is newer !? p q Topology Change v
  • 15. Updating Left Link (2/3) Solution: SetL message contains a sequence number (seq) Each node holds a sequence number for its right node (rseq) rseq is transferred using SetRAck Each node holds the max sequence number of SetL messages received so far (lseq) SetL message is accepted only if msg.seq > lseq 15 p q rseq = 0 lseq = 0 u p q rseq = 1SetRAck(1) lseq = 0 SetL(u, 1) u p q rseq = 1 lseq = 1 u p q rseq = 2 v lseq = 2 u p q rseq = 2 v SetL(u, 2) lseq = 1 SetRAck(2)
  • 16. Updating Left Link (3/3) p q uSetR(u, q, 0) Message Sequence 16 u p q u v v SetL(v, 2) SetRAck(2) SetL(u, 1) p q SetR(v, q) How our scheme solves the previous case p q 0 0 SetRAck(1) 0 0 1 0 0 0 2 0 0 2 This SetL message
 is staled and ignored Topology Change Lock is not necessary ! lseq = 0 lseq = 2 rseq = 0 rseq = 1 rseq = 2
  • 17. Node Insertion Sequence u p q p q i u p q i 0 0 i u SetR(u, q, 0) SetRAck(i+1) SetL(u, i+1) Message Sequence 17 Topology Change qp 0 0 i+1 i+1
  • 18. Node Deletion Sequence u p q u p q up q SetR(q, u, i2+1) SetRAck(i1+1) SetL(p, i2+1) Message Sequence 18 Topology Change u p q i2 + 1 i2 + 1 i2 i2 i1 i1 i2 + 1 i2 i1+1 is not used
  • 19. Insertion and Deletion 3 messages are required for insertion/deletion A node is atomically inserted/deleted when SetR message is accepted If SetRNak message is received, application retries insertion/deletion Right links are always correct Left links are correct when there is no SetL message in transmission No distributed locking Does not require FIFO channel (UDP friendly) 19
  • 20. Traversals Every inserted node can be looked up either rightward or leftward Traversing rightward: easy Traversing leftward: left links are not always correct 1. Node X visits q and fetches
 q.l (= p) 2. X visits p and fetches p.l 
 and p.r (= u) 3. X detects that u is missed
 (because p.r != q) and X visits u 20 u p q X 1.visit 2.visit Incorrect left link 3.visit traversing leftward
  • 21. Insertion Retry Optimization Insertion requires pointers to the immediate left and right nodes When an inserting node receives SetRNak, the node retries Optimization: SetRNak contains the pointer to the right node Extra messages can be eliminated
 if p is not initiated deletion AND u ∈ (p, p.r) 2121 qp vu SetR SetRAck SetL qp vu SetR SetRAck SetL SetRNak MyR(v) GetR SetRAck SetL SetRAck SetL Unoptimized SetRNak(v) SetR(u, v) OptimizedSetR SetR SetR(u, v)
  • 22. Handling failure So far, no failure is assumed DDLL algorithm considers: Crash failure Omission failure Timing failure In asynchronous network, it is impossible to distinguish slow nodes and failed nodes Erroneously suspected nodes are temporarily removed but eventually recovered 22 }Omitted in this presentation
  • 23. Recovery | Basic Each node maintains a neighbor node set N N contains sufficient number of left-side nodes Each node u periodically finds live closest left-side node v u obtains v.r and v.rseq If (v = u.l) ∧ (v.r = u)
 ∧ (v.rseq = u.lseq) then OK 23 A C A C A C ? ?BA C rseq uv lseq uv Otherwise, start recovery B B B SetR(C, B, ?)
  • 24. Recovery | Sequence Number (1) Let’s consider the sequence number of the recovered link 24 A C A C A C i i i +1 i +1 i +1 B B B SetR(C, B, i+1) Assigning C.lseq + 1 ? A C A C ? ? B B SetR(C, B, ?)
  • 25. Recovery | Sequence Number (2) Both A and X have the same right node (C) and the same rseq (i +1) 25 A X i +1 i C A X C A X C SetL SetL i +1 i +1 i +1 i +1 i +1 B B B SetR(C, B, i +1) C’s left link may rollback ! A X i +1 CSetL BX inserts between
 B and C B fails while SetL
 to C is still in transmission C starts recovery
 w/o noticing X Subtle Case
  • 26. Recovery | Sequence Number (3) Solution: Extend sequence number: (recovery- number, seq) Recovery number is increased only on recovery Left links do not rollback! 26 A X (0, i +1) (0, i) C A X C A X C SetL SetL (1, 0) (0, i +1) (1, 0) BA (0, i) (0, i) C B B B SetR(C, B, (1, 0)) (0, i +1)
  • 27. Outline Background What is distributed doubly linked list Conventional approaches The DDLL algorithm Procedure for node insertion, deletion and traversal Procedure for recovery from failure Evaluation Comparison with conventional algorithms Conclusion 27
  • 28. Evaluation Comparison DDLL(without optimization) DDLL(with optimization) Atomic Ring Maintenance (distributed-locking) A. Ghodsi, “Distributed k-ary System: Algorithms for distributed hash tables,” PhD Dissertation, KTH—Royal Institute of Technology, 2006. Li’s algorithm (distributed locking, no finger table) X. Li, et. al., “Concurrent maintenance of rings.” Distributed Comp., vol. 19, no. 2, pp. 126–148, 2006. Chord (eventual consistency, no finger table) I. Stoica, et. al., “Chord: A scalable peer-to-peer lookup protocol for internet applications,” IEEE/ACM Trans. on Net., vol. 11, no. 1, pp. 17–32, 2003. 28
  • 29. Eval | Insertion Sequence 29 u p q Join(u) Ack(p, q) Grant(u) 🔒 🔓 🔒 🔓 Li’s Done u p q JoinReq JoinDone JoinPoint NewSuccAck 🔒 🔓 🔒 🔓 Atomic Ring Maintenance NewSucc DDLL qp SetLSetRAck u SetR
  • 30. Eval | Time for Concurrent Insertion Simulated on a discrete event simulator Insert an initial node Insert n nodes in parallel
 (n = 1 to 100) Measured time required to converge all links Time includes lookup messages for searching node insertion position 30 0 20 40 60 80 100 120 0 20 40 60 80 100 time # of simultaneously inserting nodes DDLL(Opt) DDLL(NoOpt) Atomic Li's Chord DDLL(Opt) converges quickly Time to converge time unit = one-way message
 transmission time
  • 31. Eval | # of Msgs for Concurrent Insertion 31 0 1 2 3 4 5 0 20 40 60 80 100 #ofmessages(x1000) # of simultaneously inserting nodes DDLL(Opt) DDLL(NoOpt) Atomic Li's Chord # of messages to convergeMeasured # of messages required to converge all links DDLL(Opt) uses less messages
  • 32. Outline Background What is distributed doubly linked list Conventional approaches The DDLL algorithm Procedure for node insertion, deletion and traversal Procedure for recovery from failure Evaluation Comparison with conventional algorithms Conclusion 32
  • 33. Conclusion DDLL algorithm for constructing distributed doubly linked lists No distributed locking Right links are always correct, Left links converge quickly Maintains lookup consistency (in absence of failure) More efficient than conventional algorithms Recovery procedure is provided No FIFO channel is required Correctness proofs for insertion and deletion procedure DDLL is suitable for ring-based structured P2P networks Real example: DDLL is used as a foundation of Skip Graph and Chord# implementations in PIAX P2P platform 33
  • 35. Recovery | Sequence Number (4) X is excluded from the linked list but eventually returns 35 BA X C (1, 0) (0, i +1) (1, 0) BA X C (0, i +1) (1, 0) SetR(X, C, (0, 0)) BA X C (0, 0) (1, 1) (1, 0) (1, 0) BA X C (0, i +1) (1, 0) (0, 0) SetRAck((1,1)) (0, 0)
  • 36. DDLL pseudo code 36 12 i f ( s ̸= out ∨ u ̸∈ (p, q)) then error ; f i 13 l , r , s := p , q , i n s 14 send SetR ( u , r , lseq ) to l 15 {Delete} 16 [ ] (A3 ) r e c e i v e Delete ( ) from app → 17 i f ( s ̸= in ) then error 18 e l s e i f ( u = r ) then {in case of the l a s t node} 19 s := out 20 e l s e s := del ; send SetR ( r , u , rseq + 1) to l ; f i 21 [ ] (A4 ) r e c e i v e SetR (rnew , rcur , rnewseq ) from v → 22 i f ( s = in ∧ r = rcur ) then 23 i f (rnew = v) then { i n s e r t i o n case} 24 send SetL (rnew , rseq + 1) to r 25 e l s e { d e l e t i o n case} 26 send SetL ( u , rnewseq ) to rnew ; f i 27 send SetRAck (rseq + 1) to v 28 r , rseq := rnew , rnewseq 29 e l s e send SetRNak ( ) to v ; f i 30 [ ] (A5 ) r e c e i v e SetRAck (rnewseq ) from v → 31 i f ( s = i n s ) then 32 s , rseq := in , rnewseq 33 e l s e i f ( s = del ) then 34 s := out ; f i 35 [ ] (A6 ) r e c e i v e SetRNak ( ) from v → 36 i f ( s = i n s ) then 37 s := out ; error {app r e t r i e s i n s e r t i o n l a t e r } 38 e l s e i f ( s = del ) then 39 s := in ; error ; f i {app r e t r i e s d e l e t i o n l a t e r } 40 [ ] (A7 ) r e c e i v e SetL (lnew , seq) from v → 41 i f (lseq< seq) then l , lseq := lnew , seq ; f i 42 end Fig. 1: DDLL algorithm (without optimization) are executed. (A2) u sets u’s left link and right link to p and h n m t i s f u m s i f b f p s c u m a B 1 process u 2 var s : {out , ins , in , del} 3 l , r : {p o i n t e r to a node or n i l } 4 lseq , rseq : { i n t e g e r or n i l } 5 i n i t s = out ; l = r = n i l ; lseq = 0; rseq = n i l 6 begin 7 {Create a l i n k e d l i s t } 8 (A1 ) r e c e i v e Create ( ) from app → 9 l , r , s , lseq , rseq := u , u , in , 0 , 0 10 { I n s e r t between p and q} 11 [ ] (A2 ) r e c e i v e I n s e r t ( p , q ) from app → 12 i f ( s ̸= out ∨ u ̸∈ (p, q)) then error ; f i 13 l , r , s := p , q , i n s 14 send SetR ( u , r , lseq ) to l 15 {Delete} 16 [ ] (A3 ) r e c e i v e Delete ( ) from app → 17 i f ( s ̸= in ) then error 18 e l s e i f ( u = r ) then {in case of the l a s t node} 19 s := out 20 e l s e s := del ; send SetR ( r , u , rseq + 1) to l ; f i 21 [ ] (A4 ) r e c e i v e SetR (rnew , rcur , rnewseq ) from v → 22 i f ( s = in ∧ r = rcur ) then 23 i f (rnew = v) then { i n s e r t i o n case} 24 send SetL (rnew , rseq + 1) to r 25 e l s e { d e l e t i o n case} 26 send SetL ( u , rnewseq ) to rnew ; f i 27 send SetRAck (rseq + 1) to v 28 r , rseq := rnew , rnewseq 29 e l s e send SetRNak ( ) to v ; f i 30 [ ] (A5 ) r e c e i v e SetRAck (rnewseq ) from v → 31 i f ( s = i n s ) then 32 s , rseq := in , rnewseq 33 e l s e i f ( s = del ) then u (as the new left node) and p.rseq +1(= i+1) (as the sequence number of the SetL message). Next, p sends a SetRAck message to u to notify that the insertion was successful. Because left(q) is changed from p to u, the incremented right sequence number for q should be transferred from p to u. For this purpose, the SetRAck message contains p.rseq +1(= i+1). Finally, p changes p.r to u and p.rseq to 0 (rnewseq). Because u’s right link has already been set to q, the rightward linked list is never interrupted, even for a moment. Note that at this moment, p.rseq = u.lseq holds. (A5) On receiving the SetRAck message, u confirms that u is successfully inserted. Node u updates u.s to in to indicate that u is inserted, and sets u.rseq to i+1. (A7) On receiving the SetL message, q compares the sequence number of the SetL message with q.lseq. If the former is larger (we assume this case), q updates q.l to u and q.lseq to i+1. Otherwise, q ignores the message. In the scenario above, it is assumed that a SetRAck message is sent to u in A4. If a SetRNak message is sent (i.e., in the case of insertion failure), then (A6) u.s