use of com.ctrip.xpipe.api.command.CommandFutureListener in project x-pipe by ctripcorp.
the class UntilSuccess method doExecute.
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
protected void doExecute() throws Exception {
if (future().isCancelled()) {
return;
}
CommandFuture<?> future = executeNext();
if (future == null) {
future().setFailure(new CommandChainException("until success fail", getResult()));
return;
}
future.addListener(new CommandFutureListener() {
@Override
public void operationComplete(CommandFuture commandFuture) throws Exception {
if (commandFuture.isSuccess()) {
future().setSuccess(commandFuture.get());
} else {
logger.error("[doExecute]" + currentCommand(), commandFuture.cause());
doExecute();
}
}
});
}
use of com.ctrip.xpipe.api.command.CommandFutureListener in project x-pipe by ctripcorp.
the class SequenceCommandChain method executeChain.
@SuppressWarnings({ "rawtypes", "unchecked" })
public void executeChain() {
if (future().isCancelled()) {
return;
}
CommandFuture<?> currentFuture = executeNext();
if (currentFuture == null) {
future().setSuccess(getResult());
return;
}
currentFuture.addListener(new CommandFutureListener() {
@Override
public void operationComplete(CommandFuture commandFuture) throws Exception {
if (commandFuture.isSuccess()) {
executeChain();
} else {
failExecuteNext(commandFuture);
}
}
});
}
use of com.ctrip.xpipe.api.command.CommandFutureListener in project x-pipe by ctripcorp.
the class AbstractRedisMasterReplication method masterConnected.
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void masterConnected(Channel channel) {
connectedTime = System.currentTimeMillis();
this.masterChannel = channel;
clientPool = new FixedObjectPool<NettyClient>(new DefaultNettyClient(channel));
checkTimeout(channel);
checkKeeper();
SequenceCommandChain chain = new SequenceCommandChain(false);
chain.add(listeningPortCommand());
chain.add(new FailSafeCommandWrapper<>(new Replconf(clientPool, ReplConfType.CAPA, scheduled, CAPA.EOF.toString(), CAPA.PSYNC2.toString())));
try {
executeCommand(chain).addListener(new CommandFutureListener() {
@Override
public void operationComplete(CommandFuture commandFuture) throws Exception {
if (commandFuture.isSuccess()) {
sendReplicationCommand();
} else {
logger.error("[operationComplete][listeningPortCommand]", commandFuture.cause());
}
}
});
} catch (Exception e) {
logger.error("[masterConnected]" + channel, e);
}
}
use of com.ctrip.xpipe.api.command.CommandFutureListener in project x-pipe by ctripcorp.
the class ScheduleCommandWrapper method doExecute.
@Override
protected void doExecute() throws Exception {
final ScheduledFuture<?> scheduleFuture = scheduled.schedule(new AbstractExceptionLogTask() {
@Override
protected void doRun() throws Exception {
try {
command.execute().addListener(new CommandFutureListener<V>() {
@Override
public void operationComplete(CommandFuture<V> commandFuture) throws Exception {
if (commandFuture.isSuccess()) {
future().setSuccess(commandFuture.get());
} else {
future().setFailure(ExceptionUtils.getRootCause(commandFuture.cause()));
}
}
});
} catch (Exception e) {
future().setFailure(ExceptionUtils.getRootCause(e));
}
}
}, time, timeUnit);
future().addListener(new CommandFutureListener<V>() {
@Override
public void operationComplete(CommandFuture<V> commandFuture) throws Exception {
if (commandFuture.isCancelled()) {
logger.info("[command canceled][cancel execution]{}", time);
command.future().cancel(true);
scheduleFuture.cancel(false);
}
}
});
}
use of com.ctrip.xpipe.api.command.CommandFutureListener in project x-pipe by ctripcorp.
the class TransactionalCommand method doWork.
@SuppressWarnings("unchecked")
protected void doWork(final SimpleObjectPool<NettyClient> clientPool) {
SequenceCommandChain chain = new SequenceCommandChain(false);
for (RedisCommand currentCommand : commands) {
OneTranscationCommand oneTranscationCommand = new OneTranscationCommand(clientPool, currentCommand, scheduled);
chain.add(oneTranscationCommand);
}
chain.execute().addListener(new CommandFutureListener() {
@Override
public void operationComplete(CommandFuture commandFuture) throws Exception {
if (!commandFuture.isSuccess()) {
logger.error("[doWork][fail]", commandFuture.cause());
}
endTranscation(clientPool);
}
});
}
Aggregations