Fix assertion error in CL.ANY timeout handling

patch by Aleksey Yeschenko; reviewed by Jonathan Ellis for
CASSANDRA-7364
This commit is contained in:
Aleksey Yeschenko 2014-06-18 13:13:00 -07:00
parent 760441ba0f
commit afa304e338
2 changed files with 7 additions and 1 deletions

View File

@ -1,4 +1,5 @@
2.0.9
* Fix assertion error in CL.ANY timeout handling (CASSANDRA-7364)
* Handle empty CFs in Memtable#maybeUpdateLiveRatio() (CASSANDRA-7401)
* Fix native protocol CAS batches (CASSANDRA-7337)
* Add per-CF range read request latency metrics (CASSANDRA-7338)

View File

@ -487,7 +487,12 @@ public class StorageProxy implements StorageProxyMBean
List<InetAddress> naturalEndpoints = StorageService.instance.getNaturalEndpoints(mutation.getKeyspaceName(), tk);
Collection<InetAddress> pendingEndpoints = StorageService.instance.getTokenMetadata().pendingEndpointsFor(tk, mutation.getKeyspaceName());
for (InetAddress target : Iterables.concat(naturalEndpoints, pendingEndpoints))
submitHint((RowMutation) mutation, target, null);
{
// local writes can timeout, but cannot be dropped (see LocalMutationRunnable and
// CASSANDRA-6510), so there is no need to hint or retry
if (!target.equals(FBUtilities.getBroadcastAddress()) && shouldHint(target))
submitHint((RowMutation) mutation, target, null);
}
}
Tracing.trace("Wrote hint to satisfy CL.ANY after no replicas acknowledged the write");
}