Github user tillrohrmann commented on a diff in the pull request:
https://github.com/apache/flink/pull/1030#discussion_r37618025
--- Diff:
flink-staging/flink-streaming/flink-streaming-core/src/test/java/org/apache/flink/streaming/api/functions/sink/SocketClientSinkTest.java
---
@@ -125,4 +121,102 @@ public void testSocketSink() throws Exception{
assertEquals("Connected", this.access);
assertEquals("testSocketSinkInvoke", value);
}
+
+ public Thread t;
+
+ @Test
+ public void testSocketSinkNoRetry() throws Exception{
+ ServerSocket server = new ServerSocket(0);
+ port = server.getLocalPort();
+
+ new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ t = Thread.currentThread();
+ SerializationSchema<String, byte[]>
simpleSchema = new SerializationSchema<String, byte[]>() {
+ @Override
+ public byte[] serialize(String element)
{
+ return element.getBytes();
+ }
+ };
+
+ try {
+ SocketClientSink<String> simpleSink =
new SocketClientSink<String>(host, port, simpleSchema, 0);
+ simpleSink.open(new Configuration());
+ Thread.sleep(10000);
--- End diff --
To be honest, I'm not a big fan of `sleep` based synchronization. Too often
these kind of tests have failed on Travis. Usually if you use sleeps, the
interval is either to short to allow different interleavings if you have bad
luck or they are too long which makes the test slow. Therefore, I'd propose a
simple wait object on which you wait from within the thread. Once you've closed
the server socket, you can trigger the `notifyAll` method on this wait object
to let the thread continue.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---