use of com.ctrip.xpipe.netty.commands.NettyClient in project x-pipe by ctripcorp.
the class MinSlavesRedisReadOnly method createTransactionalCommand.
private Command<?> createTransactionalCommand(int number) {
SimpleObjectPool<NettyClient> clientPool = keyedObjectPool.getKeyPool(new InetSocketAddress(ip, port));
ConfigSetMinSlavesToWrite configSetMinSlavesToWrite = new ConfigSetMinSlavesToWrite(null, number, scheduled);
return new TransactionalCommand(clientPool, scheduled, configSetMinSlavesToWrite, new ConfigRewrite(null, scheduled));
}
use of com.ctrip.xpipe.netty.commands.NettyClient in project x-pipe by ctripcorp.
the class BecomePrimaryAction method makeRedisesOk.
@Override
protected void makeRedisesOk(Pair<String, Integer> newMaster, List<RedisMeta> slaves) {
executionLog.info("[make redis master]" + newMaster);
SimpleObjectPool<NettyClient> masterPool = keyedObjectPool.getKeyPool(new InetSocketAddress(newMaster.getKey(), newMaster.getValue()));
Command<String> command = new DefaultSlaveOfCommand(masterPool, null, 0, scheduled);
try {
String result = command.execute().get();
executionLog.info("[make redis master]" + result);
RedisReadonly redisReadOnly = RedisReadonly.create(newMaster.getKey(), newMaster.getValue(), keyedObjectPool, scheduled);
if (!(redisReadOnly instanceof SlaveOfRedisReadOnly)) {
redisReadOnly.makeWritable();
}
} catch (Exception e) {
logger.error("[makeRedisesOk]" + newMaster, e);
executionLog.error("[make redis master fail]" + e.getMessage());
throw new MakeRedisMasterFailException("make redis master:" + newMaster, e);
}
executionLog.info("[make slaves slaveof][begin]" + newMaster + "," + slaves);
Command<Void> slavesJob = new DefaultSlaveOfJob(slaves, newMaster.getKey(), newMaster.getValue(), keyedObjectPool, scheduled, executors);
try {
slavesJob.execute().get(waitTimeoutSeconds, TimeUnit.SECONDS);
executionLog.info("[make slaves slaveof]success");
} catch (InterruptedException | ExecutionException | TimeoutException e) {
logger.error("[makeRedisesOk]" + slaves + "->" + newMaster, e);
executionLog.error("[make slaves slaveof][fail]" + e.getMessage());
throw new MakeRedisSlaveOfMasterFailException(String.format("fail make slaves slave of:%s, %s", newMaster, e.getMessage()), e);
}
}
use of com.ctrip.xpipe.netty.commands.NettyClient in project x-pipe by ctripcorp.
the class PrimaryDcKeeperMasterChooserAlgorithm method isMaster.
protected boolean isMaster(RedisMeta redisMeta) {
try {
SimpleObjectPool<NettyClient> clientPool = keyedObjectPool.getKeyPool(new InetSocketAddress(redisMeta.getIp(), redisMeta.getPort()));
Role role = new RoleCommand(clientPool, checkRedisTimeoutSeconds * 1000, false, scheduled).execute().get(checkRedisTimeoutSeconds, TimeUnit.SECONDS);
return SERVER_ROLE.MASTER == role.getServerRole();
} catch (InterruptedException | ExecutionException | TimeoutException e) {
logger.error("[isMaster]" + redisMeta, e);
}
return false;
}
use of com.ctrip.xpipe.netty.commands.NettyClient in project x-pipe by ctripcorp.
the class XpipeNettyClientPoolTest method testDeadBorrow.
@Test
public void testDeadBorrow() throws Exception {
XpipeNettyClientPool clientPool = new XpipeNettyClientPool(new InetSocketAddress("127.0.0.1", serverPort.getPort()));
clientPool.initialize();
clientPool.start();
NettyClient nettyClient = clientPool.borrowObject();
Channel channel1 = nettyClient.channel();
clientPool.returnObject(nettyClient);
NettyClient nettyClient2 = clientPool.borrowObject();
Assert.assertEquals(channel1, nettyClient2.channel());
logger.info("[testDeadBorrow][close client]");
channel1.close();
nettyClient2 = clientPool.borrowObject();
Assert.assertNotEquals(channel1, nettyClient2.channel());
}
use of com.ctrip.xpipe.netty.commands.NettyClient in project x-pipe by ctripcorp.
the class AbstractCommandTest method createClientPool.
protected FixedObjectPool<NettyClient> createClientPool(String host, int port) throws Exception {
NettyClientFactory nettyClientFactory = new NettyClientFactory(new InetSocketAddress(host, port));
nettyClientFactory.start();
stoppables.add(nettyClientFactory);
NettyClient nettyClient = nettyClientFactory.makeObject().getObject();
FixedObjectPool<NettyClient> clientPool = new FixedObjectPool<NettyClient>(nettyClient);
return clientPool;
}
Aggregations