From 9387011faa9f679255071e2c6e0feb2d92ece227 Mon Sep 17 00:00:00 2001 From: Mike Winstead Date: Sun, 20 Jan 2019 09:29:27 -0800 Subject: [PATCH 1/2] Enhancement #207 * Adds SequenceNumber accessor to Lock struct --- zk/lock.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/zk/lock.go b/zk/lock.go index 3c35a427..c626a6d7 100644 --- a/zk/lock.go +++ b/zk/lock.go @@ -148,3 +148,10 @@ func (l *Lock) Unlock() error { l.seq = 0 return nil } + +// SequenceNumber returns the sequence number generated by zookeeper which is +// unique to the current lock acquisition. This function should only be called +// once a lock has been acquired and not after it has been released +func (l *Lock) SequenceNumber() int { + return l.seq +} From 1c344f92958850782d6ba11b11ca16618dc55f72 Mon Sep 17 00:00:00 2001 From: Mike Winstead Date: Fri, 25 Jan 2019 09:16:02 -0800 Subject: [PATCH 2/2] enhancement/207 * Adds stanza in test for Sequence Number --- zk/lock_test.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/zk/lock_test.go b/zk/lock_test.go index 8a3478a3..a7bc96d4 100644 --- a/zk/lock_test.go +++ b/zk/lock_test.go @@ -23,6 +23,13 @@ func TestLock(t *testing.T) { if err := l.Lock(); err != nil { t.Fatal(err) } + + lockSequenceNumber := l.SequenceNumber() + if 0 == lockSequenceNumber { + t.Fatal("expected non-zero lock sequence number once " + + "initially acquired") + } + if err := l.Unlock(); err != nil { t.Fatal(err) }