Explorar el Código

Only add dirty subscriptions to the request

Also handle if the request ends up empty because all of the subscriptions were
clean.
Evan Huus hace 10 años
padre
commit
b4fb5b7b3b
Se han modificado 1 ficheros con 14 adiciones y 2 borrados
  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) {