Ensure that tcp-output do not loose messages when reconnecting

This commit is contained in:
Leonid Bugaev
2018-02-07 20:34:29 +02:00
parent 35a5957801
commit 52f4ad03f3
3 changed files with 7 additions and 6 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ RUN echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true
RUN apt-get install oracle-java8-installer -y
RUN apt-get install flex bison -y
RUN wget http://www.tcpdump.org/release/libpcap-1.7.4.tar.gz && tar xzf libpcap-1.7.4.tar.gz && cd libpcap-1.7.4 && ./configure && make install
RUN wget http://www.tcpdump.org/release/libpcap-1.8.1.tar.gz && tar xzf libpcap-1.8.1.tar.gz && cd libpcap-1.8.1 && ./configure && make install
RUN go get github.com/google/gopacket
RUN go get -u github.com/golang/lint/golint
+5 -3
View File
@@ -32,7 +32,7 @@ func NewTCPOutput(address string, config *TCPOutputConfig) io.Writer {
o.address = address
o.config = config
o.buf = make(chan []byte, 100)
o.buf = make(chan []byte, 1000)
if Settings.outputTCPStats {
o.bufStats = NewGorStat("output_tcp")
}
@@ -66,11 +66,13 @@ func (o *TCPOutput) worker() {
defer conn.Close()
for {
conn.Write(<-o.buf)
data := <-o.buf
conn.Write(data)
_, err := conn.Write([]byte(payloadSeparator))
if err != nil {
log.Println("Lost connection with aggregator instance, reconnecting")
log.Println("INFO: TCP output connection closed, reconnecting")
o.buf <- data
go o.worker()
break
}
+1 -2
View File
@@ -46,7 +46,6 @@
},
{
"checksumSHA1": "U2Ydh7vEAKlN0Wq22n1JpefF7uY=",
"origin": "github.com/buger/goreplay/vendor/github.com/google/gopacket",
"path": "github.com/google/gopacket",
"revision": "b09bf408520f7646e29b7033d9adb00ed779a1c4",
"revisionTime": "2016-05-12T15:06:07Z"
@@ -94,5 +93,5 @@
"revisionTime": "2017-02-01T04:15:14Z"
}
],
"rootPath": "github.com/buger/gor"
"rootPath": "github.com/buger/goreplay"
}