Skip to content

Commit 27d1058

Browse files
author
Mark Kuhn
committed
replace retry queue with empty stream write
1 parent ff69a3f commit 27d1058

File tree

2 files changed

+5
-18
lines changed

2 files changed

+5
-18
lines changed

src/main/java/software/amazon/cloudwatchlogs/emf/sinks/TCPClient.java

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.io.OutputStream;
2121
import java.net.InetSocketAddress;
2222
import java.net.Socket;
23-
import java.util.LinkedList;
2423
import lombok.extern.slf4j.Slf4j;
2524

2625
/** A client that would connect to a TCP socket. */
@@ -30,8 +29,6 @@ public class TCPClient implements SocketClient {
3029
private final Endpoint endpoint;
3130
private Socket socket;
3231
private boolean shouldConnect = true;
33-
private final LinkedList<String> retryQueue = new LinkedList<>();
34-
private String lastMessageSent;
3532

3633
public TCPClient(Endpoint endpoint) {
3734
this.endpoint = endpoint;
@@ -61,28 +58,17 @@ public synchronized void sendMessage(String message) {
6158
os = socket.getOutputStream();
6259
} catch (IOException e) {
6360
shouldConnect = true;
64-
retryQueue.add(message);
6561
throw new RuntimeException(
6662
"Failed to write message to the socket. Failed to open output stream.", e);
6763
}
6864

6965
try {
70-
while (!retryQueue.isEmpty()) {
71-
String retryMessage = retryQueue.peek();
72-
os.write(retryMessage.getBytes());
73-
retryQueue.pop();
74-
}
66+
// Write a space to the socket to verify connection before sending event
67+
os.write(32);
7568

7669
os.write(message.getBytes());
77-
lastMessageSent = message;
7870
} catch (IOException e) {
79-
// For broken pipe exception, retry last sent message
80-
if (e.getMessage().contains("Broken pipe")) {
81-
retryQueue.add(lastMessageSent);
82-
}
83-
8471
shouldConnect = true;
85-
retryQueue.add(message);
8672
throw new RuntimeException("Failed to write message to the socket.", e);
8773
}
8874
}

src/test/java/software/amazon/cloudwatchlogs/emf/sinks/TCPClientTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,9 @@ protected Socket createSocket() {
4646

4747
String message = "Test message";
4848
client.sendMessage(message);
49+
client.close();
4950

50-
assertEquals(bos.toString(), message);
51+
assertEquals(message, bos.toString().trim());
5152
}
5253

5354
@Test(timeout = 5000)
@@ -63,6 +64,6 @@ public void testSendMessageWithSocketServer() throws IOException {
6364
socket.close();
6465
server.close();
6566

66-
assertEquals("Test message", message);
67+
assertEquals("Test message", message.trim());
6768
}
6869
}

0 commit comments

Comments
 (0)