File tree 1 file changed +11
-3
lines changed
1 file changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -53,7 +53,7 @@ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
53
53
54
54
##
55
55
# @param socket [Socket]
56
- # @param logger_context [#log_warn&#log_error]
56
+ # @param logger_context [#log_warn&#log_error&#logger ]
57
57
class Client
58
58
def initialize ( socket , logger_context )
59
59
@socket = socket
@@ -64,9 +64,17 @@ def initialize(socket, logger_context)
64
64
def run
65
65
loop do
66
66
begin
67
- @socket . write ( @queue . pop )
67
+ payload = @queue . pop
68
+
69
+ @logger_context . logger . trace ( "transmitting #{ payload . bytesize } bytes" , socket : @socket &.peer ) if @logger_context . logger . trace? && payload && !payload . empty?
70
+ while payload && !payload . empty?
71
+ written_bytes_size = @socket . write ( payload )
72
+ payload = payload . byteslice ( written_bytes_size ..-1 )
73
+ @logger_context . logger . log_trace ( ">transmitted #{ written_bytes_size } bytes; #{ payload . bytesize } bytes remain" , socket : @socket &.peer ) if @logger_context . logger . trace?
74
+ sleep 0.1 unless payload . empty?
75
+ end
68
76
rescue => e
69
- @logger_context . log_warn ( "tcp output exception: socket write failed" , e , :socket => @socket &.to_s )
77
+ @logger_context . log_warn ( "tcp output exception: socket write failed" , e , :socket => @socket &.peer )
70
78
break
71
79
end
72
80
end
You can’t perform that action at this time.
0 commit comments