Correct me if I'm wrong but we're trying to fix the following problem:
 - acquire lock explicitly 
 - send rollback
 - the rollback is currently ignored because of the isOnePhaseCommit always returning true for pessimistic caches

If this is the case then there isn't any prepare going on till this stage, so indeed the prepare condition you've just added shouldn't really have to do with the issue. The condition you're after is: if the cache is pessimistic and you've acquired a remote lock, then allow the rollback to proceed. The (!prepareSent) condition is a bit too brad here imo.