Merge lp:~chipaca/ubuntu-push/no-more-retrier-lock into lp:ubuntu-push/automatic

Proposed by John Lenton
Status: Merged
Approved by: John Lenton
Approved revision: 384
Merged at revision: 381
Proposed branch: lp:~chipaca/ubuntu-push/no-more-retrier-lock
Merge into: lp:ubuntu-push/automatic
Prerequisite: lp:~chipaca/ubuntu-push/no-more-session-close
Diff against target: 57 lines (+5/-14)
1 file modified
client/session/session.go (+5/-14)
To merge this branch: bzr merge lp:~chipaca/ubuntu-push/no-more-retrier-lock
Reviewer Review Type Date Requested Status
Samuele Pedroni Approve
Review via email: mp+253183@code.launchpad.net

Commit message

Get rid of session.RetrierLock.

To post a comment you must log in.
Revision history for this message
Samuele Pedroni (pedronis) wrote :

good :) !

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'client/session/session.go'
--- client/session/session.go 2015-03-17 11:12:42 +0000
+++ client/session/session.go 2015-03-17 11:12:42 +0000
@@ -159,7 +159,6 @@
159 proto protocol.Protocol159 proto protocol.Protocol
160 pingInterval time.Duration160 pingInterval time.Duration
161 retrier util.AutoRedialer161 retrier util.AutoRedialer
162 retrierLock sync.Mutex
163 cookie string162 cookie string
164 // status163 // status
165 stateLock sync.RWMutex164 stateLock sync.RWMutex
@@ -400,8 +399,6 @@
400}399}
401400
402func (sess *clientSession) stopRedial() {401func (sess *clientSession) stopRedial() {
403 sess.retrierLock.Lock()
404 defer sess.retrierLock.Unlock()
405 if sess.retrier != nil {402 if sess.retrier != nil {
406 sess.retrier.Stop()403 sess.retrier.Stop()
407 sess.retrier = nil404 sess.retrier = nil
@@ -414,24 +411,16 @@
414 sess.setShouldDelay()411 sess.setShouldDelay()
415 }412 }
416 time.Sleep(sess.redialDelay(sess))413 time.Sleep(sess.redialDelay(sess))
417 sess.retrierLock.Lock()
418 defer sess.retrierLock.Unlock()
419 if sess.retrier != nil {414 if sess.retrier != nil {
420 panic("session AutoRedial: unexpected non-nil retrier.")415 panic("session AutoRedial: unexpected non-nil retrier.")
421 }416 }
422 sess.retrier = util.NewAutoRedialer(sess)417 sess.retrier = util.NewAutoRedialer(sess)
423 sess.lastAutoRedial = time.Now()418 sess.lastAutoRedial = time.Now()
424 go func() {419 go func(retrier util.AutoRedialer) {
425 sess.retrierLock.Lock()
426 retrier := sess.retrier
427 sess.retrierLock.Unlock()
428 if retrier == nil {
429 sess.Log.Debugf("session autoredialer skipping retry: retrier has been set to nil.")
430 return
431 }
432 sess.Log.Debugf("session autoredialier launching Redial goroutine")420 sess.Log.Debugf("session autoredialier launching Redial goroutine")
421 // if the redialer has been stopped before calling Redial(), it'll return 0.
433 sess.doneCh <- retrier.Redial()422 sess.doneCh <- retrier.Redial()
434 }()423 }(sess.retrier)
435}424}
436425
437func (sess *clientSession) doClose(resetCookie bool) {426func (sess *clientSession) doClose(resetCookie bool) {
@@ -718,6 +707,8 @@
718 sess.Log.Infof("session shutting down.")707 sess.Log.Infof("session shutting down.")
719 break Loop708 break Loop
720 case n := <-sess.doneCh:709 case n := <-sess.doneCh:
710 // if n == 0, the redialer aborted. If you do
711 // anything other than log it, keep that in mind.
721 sess.Log.Debugf("connected after %d attempts.", n)712 sess.Log.Debugf("connected after %d attempts.", n)
722 case err := <-sess.errCh:713 case err := <-sess.errCh:
723 sess.errHandler(err)714 sess.errHandler(err)

Subscribers

People subscribed via source and target branches