[ https://issues.apache.org/jira/browse/FLINK-4123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15357379#comment-15357379 ]
ASF GitHub Bot commented on FLINK-4123: --------------------------------------- Github user zentol commented on a diff in the pull request: https://github.com/apache/flink/pull/2183#discussion_r69163543 --- Diff: flink-streaming-connectors/flink-connector-cassandra/src/main/java/org/apache/flink/streaming/connectors/cassandra/CassandraTupleWriteAheadSink.java --- @@ -110,11 +92,25 @@ public void close() throws Exception { } @Override - protected void sendValues(Iterable<IN> values, long timestamp) throws Exception { - //verify that no query failed until now - if (exception != null) { - throw new Exception(exception); - } + protected boolean sendValues(Iterable<IN> values, long timestamp) throws Exception { + int updatesSent = 0; + final AtomicInteger updatesConfirmed = new AtomicInteger(0); + + final AtomicContainer<Throwable> exception = new AtomicContainer<>(); + + FutureCallback<ResultSet> callback = new FutureCallback<ResultSet>() { + @Override + public void onSuccess(ResultSet resultSet) { + updatesConfirmed.incrementAndGet(); + } + + @Override + public void onFailure(Throwable throwable) { + exception.set(throwable); --- End diff -- i don't think it matters too much, as long as _some_ exception is noticed. The first exception would probably be the most reasonable approach though. > CassandraWriteAheadSink can hang on cassandra failure > ----------------------------------------------------- > > Key: FLINK-4123 > URL: https://issues.apache.org/jira/browse/FLINK-4123 > Project: Flink > Issue Type: Bug > Components: Cassandra Connector > Affects Versions: 1.1.0 > Reporter: Chesnay Schepler > Assignee: Chesnay Schepler > Priority: Blocker > Fix For: 1.1.0 > > > The CassandraWriteAheadSink verifies that all writes send to cassandra have > been applied by counting how many were sent and how many callbacks were > activated. Once all writes were sent the sink enters into a loop that is only > exited once both counts are equal. > Thus, should cassandra crash after all writes were sent, without having > acknowledged all writes, the sink will deadlock in the loop. -- This message was sent by Atlassian JIRA (v6.3.4#6332)