@@ -22,7 +22,6 @@ import (
2222
2323 "github.com/lf-edge/ekuiper/contract/v2/api"
2424
25- "github.com/lf-edge/ekuiper/v2/internal/conf"
2625 "github.com/lf-edge/ekuiper/v2/internal/pkg/def"
2726 kctx "github.com/lf-edge/ekuiper/v2/internal/topo/context"
2827 "github.com/lf-edge/ekuiper/v2/internal/xsql"
@@ -50,15 +49,19 @@ type SinkNode struct {
5049// 1. Set cache settings to enable diskCache
5150// 2. Set resendInterval and bufferLength will use bufferLength as the memory cache
5251// 3. By default, drop if it cannot sends out.
53- func newSinkNode (ctx api.StreamContext , name string , rOpt def.RuleOption , eoflimit int , sc * conf. SinkConf , isRetry bool ) * SinkNode {
52+ func newSinkNode (ctx api.StreamContext , name string , rOpt def.RuleOption , eoflimit int , sc * SinkConf , isRetry bool ) * SinkNode {
5453 // set collect retry according to cache setting
5554 retry := time .Duration (sc .ResendInterval )
5655 if (sc .EnableCache || isRetry ) && retry <= 0 {
5756 // default retry interval to 100ms
5857 retry = 100 * time .Millisecond
5958 }
6059 // Sink input channel as buffer
61- rOpt .BufferLength = sc .MemoryCacheThreshold
60+ if isRetry || (sc .EnableCache && ! sc .ResendAlterQueue ) {
61+ rOpt .BufferLength = sc .MemoryCacheThreshold
62+ } else {
63+ rOpt .BufferLength = sc .BufferLength
64+ }
6265 ctx .GetLogger ().Infof ("create sink node %s with isRetry %v, resendInterval %d, bufferLength %d" , name , isRetry , retry , rOpt .BufferLength )
6366 return & SinkNode {
6467 defaultSinkNode : newDefaultSinkNode (name , & rOpt ),
@@ -191,7 +194,7 @@ func (s *SinkNode) ingest(ctx api.StreamContext, item any) (any, bool) {
191194}
192195
193196// NewBytesSinkNode creates a sink node that collects data from the stream. Do some static validation
194- func NewBytesSinkNode (ctx api.StreamContext , name string , sink api.BytesCollector , rOpt def.RuleOption , eoflimit int , sc * conf. SinkConf , isRetry bool ) (* SinkNode , error ) {
197+ func NewBytesSinkNode (ctx api.StreamContext , name string , sink api.BytesCollector , rOpt def.RuleOption , eoflimit int , sc * SinkConf , isRetry bool ) (* SinkNode , error ) {
195198 ctx .GetLogger ().Infof ("create bytes sink node %s" , name )
196199 n := newSinkNode (ctx , name , rOpt , eoflimit , sc , isRetry )
197200 n .sink = sink
@@ -215,7 +218,7 @@ func bytesCollect(ctx api.StreamContext, sink api.Sink, data any) (err error) {
215218}
216219
217220// NewTupleSinkNode creates a sink node that collects data from the stream. Do some static validation
218- func NewTupleSinkNode (ctx api.StreamContext , name string , sink api.TupleCollector , rOpt def.RuleOption , eoflimit int , sc * conf. SinkConf , isRetry bool ) (* SinkNode , error ) {
221+ func NewTupleSinkNode (ctx api.StreamContext , name string , sink api.TupleCollector , rOpt def.RuleOption , eoflimit int , sc * SinkConf , isRetry bool ) (* SinkNode , error ) {
219222 ctx .GetLogger ().Infof ("create message sink node %s" , name )
220223 n := newSinkNode (ctx , name , rOpt , eoflimit , sc , isRetry )
221224 n .sink = sink
0 commit comments