Code cleanup.

master
jdl 2022-07-30 09:20:54 +02:00
parent 9b47a64827
commit 9107aa8818
2 changed files with 12 additions and 15 deletions

View File

@ -1,6 +1,7 @@
package kvstore
import (
"sync"
"time"
)
@ -8,29 +9,24 @@ var (
connTimeout = 16 * time.Second
pollInterval = 500 * time.Millisecond
modQSize = 1024
bufferPool = make(chan []byte, 1024)
poolBufSize = 4096
poolBufSize = 8192
bufferPool = sync.Pool{
New: func() any {
return make([]byte, poolBufSize)
},
}
)
func GetDataBuf(size int) []byte {
if size > poolBufSize {
return make([]byte, size)
}
select {
case b := <-bufferPool:
return b[:size]
default:
return make([]byte, poolBufSize)[:size]
}
return bufferPool.Get().([]byte)[:size]
}
func RecycleDataBuf(b []byte) {
if cap(b) != poolBufSize {
return
}
select {
case bufferPool <- b:
default:
}
bufferPool.Put(b)
}

View File

@ -28,14 +28,15 @@ func (kv *KV) SyncRecv(conn net.Conn) {
headerBuf := make([]byte, recHeaderSize)
nameBuf := make([]byte, 32)
afterIDBuf := make([]byte, 8)
afterSeqNum := kv.MaxSeqNum()
expectedSeqNum := afterSeqNum + 1
// Send fromID to the conn.
conn.SetWriteDeadline(time.Now().Add(connTimeout))
binary.LittleEndian.PutUint64(nameBuf, afterSeqNum)
if _, err := conn.Write(nameBuf); err != nil {
binary.LittleEndian.PutUint64(afterIDBuf, afterSeqNum)
if _, err := conn.Write(afterIDBuf); err != nil {
log.Printf("RecvWAL failed to send after sequence number: %v", err)
return
}