Skip to content

Commit

Permalink
fix ack listener bug (loggie-io#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
mmaxiaolei authored Dec 16, 2021
1 parent 505294c commit 05e6f78
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
15 changes: 10 additions & 5 deletions pkg/source/file/listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,16 @@ import (
)

const (
ackListenerName = "file-source-ack-listener"
ackListenerNamePrefix = "file-source-ack-listener"
)

type AckListener struct {
sourceName string
ackChainHandler *AckChainHandler
}

func (al *AckListener) Name() string {
return ackListenerName
return ackListenerNamePrefix + "-" + al.sourceName
}

func (al *AckListener) Stop() {
Expand All @@ -39,8 +40,12 @@ func (al *AckListener) Stop() {
func (al *AckListener) BeforeQueueConvertBatch(events []api.Event) {
//log.Info("append events len: %d", len(events))
ss := make([]*State, 0, len(events))
for _, event := range events {
ss = append(ss, getState(event))
for _, e := range events {
if al.sourceName == e.Source() {
ss = append(ss, getState(e))
}
}
if len(ss) > 0 {
al.ackChainHandler.appendChan <- ss
}
al.ackChainHandler.appendChan <- ss
}
17 changes: 10 additions & 7 deletions pkg/source/file/source.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ type Source struct {
out chan api.Event
productFunc api.ProductFunc
r *Reader
ackEnable bool
ackChainHandler *AckChainHandler
watcher *Watcher
watchTask *WatchTask
Expand Down Expand Up @@ -84,6 +85,7 @@ func (s *Source) Init(context api.Context) {
s.name = context.Name()
s.out = make(chan api.Event, s.sinkCount)

s.ackEnable = s.config.AckConfig.Enable
// init default multi agg timeout
mutiTimeout := s.config.ReaderConfig.MultiConfig.Timeout
inactiveTimeout := s.config.ReaderConfig.InactiveTimeout
Expand Down Expand Up @@ -113,10 +115,11 @@ func (s *Source) Start() {
s.multilineProcessor = GetOrCreateShareMultilineProcessor()
}
// register queue listener for ack
if s.config.AckConfig.Enable {
if s.ackEnable {
s.dbHandler = GetOrCreateShareDbHandler(s.config.DbConfig)
s.ackChainHandler = GetOrCreateShareAckChainHandler(s.sinkCount, s.config.AckConfig)
s.rc.RegisterListener(&AckListener{
sourceName: s.name,
ackChainHandler: s.ackChainHandler,
})
}
Expand Down Expand Up @@ -173,13 +176,13 @@ func (s *Source) ProductLoop(productFunc api.ProductFunc) {

func (s *Source) Commit(events []api.Event) {
// ack events
ss := make([]*State, 0, len(events))
for _, e := range events {
ss = append(ss, getState(e))
if s.ackEnable {
ss := make([]*State, 0, len(events))
for _, e := range events {
ss = append(ss, getState(e))
}
s.ackChainHandler.ackChan <- ss
}
//s.ackHandler.ackChan <- ss
s.ackChainHandler.ackChan <- ss
// release events
//event.CommonPool.PutAll(events)
s.eventPool.PutAll(events)
}

0 comments on commit 05e6f78

Please sign in to comment.