Ver código fonte

Only add dirty subscriptions to the request

Also handle if the request ends up empty because all of the subscriptions were
clean.
Evan Huus 10 anos atrás
pai
commit
b4fb5b7b3b
1 arquivos alterados com 14 adições e 2 exclusões
  1. 14 2
      offset_manager.go

+ 14 - 2
offset_manager.go

@@ -384,6 +384,10 @@ func (bom *brokerOffsetManager) mainLoop() {
 
 
 func (bom *brokerOffsetManager) flushToBroker() {
 func (bom *brokerOffsetManager) flushToBroker() {
 	request := bom.constructRequest()
 	request := bom.constructRequest()
+	if request == nil {
+		return
+	}
+
 	response, err := bom.broker.CommitOffset(request)
 	response, err := bom.broker.CommitOffset(request)
 
 
 	if err != nil {
 	if err != nil {
@@ -428,12 +432,20 @@ func (bom *brokerOffsetManager) constructRequest() *OffsetCommitRequest {
 		Version:       1,
 		Version:       1,
 		ConsumerGroup: bom.parent.group,
 		ConsumerGroup: bom.parent.group,
 	}
 	}
+
 	for s := range bom.subscriptions {
 	for s := range bom.subscriptions {
 		s.lock.Lock()
 		s.lock.Lock()
-		r.AddBlock(s.topic, s.partition, s.offset, 0, s.metadata)
+		if s.dirty {
+			r.AddBlock(s.topic, s.partition, s.offset, 0, s.metadata)
+		}
 		s.lock.Unlock()
 		s.lock.Unlock()
 	}
 	}
-	return r
+
+	if len(r.blocks) > 0 {
+		return r
+	}
+
+	return nil
 }
 }
 
 
 func (bom *brokerOffsetManager) abort(err error) {
 func (bom *brokerOffsetManager) abort(err error) {