
org.infinispan.server.hotrod.tx.ServerTransactionOriginatorChecker Maven / Gradle / Ivy
package org.infinispan.server.hotrod.tx;
import java.util.Collection;
import org.infinispan.factories.annotations.Inject;
import org.infinispan.factories.scopes.Scope;
import org.infinispan.factories.scopes.Scopes;
import org.infinispan.remoting.rpc.RpcManager;
import org.infinispan.remoting.transport.Address;
import org.infinispan.server.hotrod.tx.table.ClientAddress;
import org.infinispan.transaction.impl.TransactionOriginatorChecker;
import org.infinispan.transaction.xa.GlobalTransaction;
/**
* A {@link TransactionOriginatorChecker} implementation that is aware of client transactions.
*
* The transaction originator in this case is the Hot Rod client.
*
* @author Pedro Ruivo
* @since 9.1
*/
@Scope(Scopes.NAMED_CACHE)
public class ServerTransactionOriginatorChecker implements TransactionOriginatorChecker {
@Inject RpcManager rpcManager;
@Override
public boolean isOriginatorMissing(GlobalTransaction gtx) {
return isOriginatorMissing(gtx, rpcManager.getMembers());
}
@Override
public boolean isOriginatorMissing(GlobalTransaction gtx, Collection
liveMembers) {
return !liveMembers.contains(gtx.getAddress()) && isNonClientTransaction(gtx);
}
private boolean isNonClientTransaction(GlobalTransaction gtx) {
return !(gtx.getAddress() instanceof ClientAddress);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy