log.tracef("%s: Rolling back to cache view %d on %s, new view id is %d", cacheName, committedViewId, validTargets, newViewId);
try {
// it's ok to send the rollback to nodes that don't have the cache yet, they will just ignore it
// on the other hand we *have* to send the rollback to any nodes that got the prepare
final CacheViewControlCommand cmd = new CacheViewControlCommand(cacheName,
CacheViewControlCommand.Type.ROLLBACK_VIEW, self, newViewId, null, committedViewId, null);
// wait until we get all the responses, but ignore the results
Map<Address, Response> rspList = transport.invokeRemotely(validTargets, cmd,
ResponseMode.SYNCHRONOUS_IGNORE_LEAVERS, timeout, false, null, false);
checkRemoteResponse(cacheName, cmd, rspList);