diff options
Diffstat (limited to 'weed/queue/log_buffer.go')
| -rw-r--r-- | weed/queue/log_buffer.go | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/weed/queue/log_buffer.go b/weed/queue/log_buffer.go index 5f8db140d..f24429479 100644 --- a/weed/queue/log_buffer.go +++ b/weed/queue/log_buffer.go @@ -46,8 +46,18 @@ func NewLogBuffer(flushInterval time.Duration, flushFn func(startTime, stopTime return lb } -func (m *LogBuffer) AddToBuffer(ts time.Time, key, data []byte) { +func (m *LogBuffer) AddToBuffer(key, data []byte) { + m.Lock() + defer func() { + m.Unlock() + if m.notifyFn != nil { + m.notifyFn() + } + }() + + // need to put the timestamp inside the lock + ts := time.Now() logEntry := &filer_pb.LogEntry{ TsNs: ts.UnixNano(), PartitionKeyHash: util.HashToInt32(key), @@ -58,14 +68,6 @@ func (m *LogBuffer) AddToBuffer(ts time.Time, key, data []byte) { size := len(logEntryData) - m.Lock() - defer func() { - m.Unlock() - if m.notifyFn != nil { - m.notifyFn() - } - }() - if m.pos == 0 { m.startTime = ts } @@ -153,18 +155,18 @@ func (m *LogBuffer) ReadFromBuffer(lastReadTime time.Time) (ts time.Time, buffer l, h := 0, len(m.idx)-1 /* - for i, pos := range m.idx { - logEntry, ts := readTs(m.buf, pos) - event := &filer_pb.FullEventNotification{} - proto.Unmarshal(logEntry.Data, event) - entry := event.EventNotification.OldEntry - if entry == nil { - entry = event.EventNotification.NewEntry + for i, pos := range m.idx { + logEntry, ts := readTs(m.buf, pos) + event := &filer_pb.FullEventNotification{} + proto.Unmarshal(logEntry.Data, event) + entry := event.EventNotification.OldEntry + if entry == nil { + entry = event.EventNotification.NewEntry + } + fmt.Printf("entry %d ts: %v offset:%d dir:%s name:%s\n", i, time.Unix(0, ts), pos, event.Directory, entry.Name) } - fmt.Printf("entry %d ts: %v offset:%d dir:%s name:%s\n", i, time.Unix(0, ts), pos, event.Directory, entry.Name) - } - fmt.Printf("l=%d, h=%d\n", l, h) - */ + fmt.Printf("l=%d, h=%d\n", l, h) + */ for l <= h { mid := (l + h) / 2 |
