diff --git a/README.md b/README.md index bc901e3..a40dd4d 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,9 @@ An in-process, in-memory database for Go. ## TO DO +* [ ] wal: shipping_test: secondary too far behind +* [ ] wal: writer_test: call RecvWAL twice +* [ ] wal: writer_test double start / stop * [ ] kvstore: tests * [ ] wal: writer lock via flock? diff --git a/wal/writer.go b/wal/writer.go index 3587666..6a1ac2e 100644 --- a/wal/writer.go +++ b/wal/writer.go @@ -138,6 +138,8 @@ func (w *Writer) RecvWAL(conn net.Conn) { } defer w.recvLock.Unlock() + timeout := 16 * time.Second + headerBuf := make([]byte, recHeaderSize) buf := make([]byte, 8) @@ -145,7 +147,7 @@ func (w *Writer) RecvWAL(conn net.Conn) { expectedSeqNum := afterSeqNum + 1 // Send fromID to the conn. - conn.SetWriteDeadline(time.Now().Add(time.Minute)) + conn.SetWriteDeadline(time.Now().Add(timeout)) binary.LittleEndian.PutUint64(buf, afterSeqNum) if _, err := conn.Write(buf); err != nil { log.Printf("RecvWAL failed to send after sequence number: %v", err) @@ -158,7 +160,7 @@ func (w *Writer) RecvWAL(conn net.Conn) { defer w.stop() for { - conn.SetReadDeadline(time.Now().Add(time.Minute)) + conn.SetReadDeadline(time.Now().Add(timeout)) if _, err := conn.Read(headerBuf); err != nil { log.Printf("RecvWAL failed to read header: %v", err) return