mirror of https://github.com/ledisdb/ledisdb.git
use async notify
This commit is contained in:
parent
0a64b592d5
commit
6d293ce152
|
@ -83,10 +83,7 @@ func syncCommand(c *client) error {
|
||||||
c.lastLogID = logId - 1
|
c.lastLogID = logId - 1
|
||||||
|
|
||||||
if c.ack != nil && logId > c.ack.id {
|
if c.ack != nil && logId > c.ack.id {
|
||||||
select {
|
asyncNotifyUint64(c.ack.ch, logId)
|
||||||
case c.ack.ch <- logId:
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
c.ack = nil
|
c.ack = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,10 +54,7 @@ func newMaster(app *App) *master {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *master) Close() {
|
func (m *master) Close() {
|
||||||
select {
|
ledis.AsyncNotify(m.quit)
|
||||||
case m.quit <- struct{}{}:
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
|
|
||||||
if m.conn != nil {
|
if m.conn != nil {
|
||||||
m.conn.Close()
|
m.conn.Close()
|
||||||
|
@ -262,11 +259,15 @@ func (app *App) removeSlave(c *client) {
|
||||||
delete(app.slaves, c)
|
delete(app.slaves, c)
|
||||||
|
|
||||||
if c.ack != nil {
|
if c.ack != nil {
|
||||||
select {
|
asyncNotifyUint64(c.ack.ch, c.lastLogID)
|
||||||
case c.ack.ch <- c.lastLogID:
|
|
||||||
default:
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func asyncNotifyUint64(ch chan uint64, v uint64) {
|
||||||
|
select {
|
||||||
|
case ch <- v:
|
||||||
|
default:
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *App) publishNewLog(l *rpl.Log) {
|
func (app *App) publishNewLog(l *rpl.Log) {
|
||||||
|
|
Loading…
Reference in New Issue