Search in sources :

Example 1 with Replconf

use of com.ctrip.xpipe.redis.core.protocal.cmd.Replconf in project x-pipe by ctripcorp.

the class AbstractFakeRedisTest method sendInmemoryPsync.

protected InMemoryPsync sendInmemoryPsync(String ip, int port, String runid, long offset) throws Exception {
    SequenceCommandChain chain = new SequenceCommandChain(false);
    SimpleObjectPool<NettyClient> pool = getXpipeNettyClientKeyedObjectPool().getKeyPool(new InetSocketAddress(ip, port));
    NettyClient nettyClient = null;
    try {
        nettyClient = pool.borrowObject();
        SimpleObjectPool<NettyClient> clientPool = new FixedObjectPool<NettyClient>(nettyClient);
        chain.add(new Replconf(clientPool, ReplConfType.CAPA, scheduled, CAPA.EOF.toString()));
        InMemoryPsync psync = new InMemoryPsync(clientPool, runid, offset, scheduled);
        chain.add(psync);
        psync.addPsyncObserver(new PsyncObserver() {

            private long masterRdbOffset = 0;

            @Override
            public void reFullSync() {
            }

            @Override
            public void onFullSync() {
            }

            @Override
            public void onContinue(String requestReplId, String responseReplId) {
            }

            @Override
            public void endWriteRdb() {
                new Replconf(clientPool, ReplConfType.ACK, scheduled, String.valueOf(masterRdbOffset)).execute();
            }

            @Override
            public void beginWriteRdb(EofType eofType, long masterRdbOffset) throws IOException {
                this.masterRdbOffset = masterRdbOffset;
            }
        });
        chain.execute();
        return psync;
    } finally {
        if (nettyClient != null) {
            pool.returnObject(nettyClient);
        }
    }
}
Also used : InetSocketAddress(java.net.InetSocketAddress) Replconf(com.ctrip.xpipe.redis.core.protocal.cmd.Replconf) EofType(com.ctrip.xpipe.redis.core.protocal.protocal.EofType) IOException(java.io.IOException) SequenceCommandChain(com.ctrip.xpipe.command.SequenceCommandChain) NettyClient(com.ctrip.xpipe.netty.commands.NettyClient) FixedObjectPool(com.ctrip.xpipe.pool.FixedObjectPool) InMemoryPsync(com.ctrip.xpipe.redis.core.protocal.cmd.InMemoryPsync) PsyncObserver(com.ctrip.xpipe.redis.core.protocal.PsyncObserver)

Example 2 with Replconf

use of com.ctrip.xpipe.redis.core.protocal.cmd.Replconf in project x-pipe by ctripcorp.

the class ReplconfTest method test.

@Test
public void test() throws Exception {
    for (int i = 0; i < 100; i++) {
        FixedObjectPool<NettyClient> clientPool = null;
        try {
            clientPool = createClientPool(host, port);
            Replconf replconf = new Replconf(clientPool, ReplConfType.LISTENING_PORT, scheduled, String.valueOf(1234));
            replconf.execute().addListener(new CommandFutureListener<Object>() {

                @Override
                public void operationComplete(CommandFuture<Object> commandFuture) throws Exception {
                    logger.info("{}", commandFuture.get());
                }
            });
            Psync psync = new InMemoryPsync(clientPool, "?", -1L, scheduled);
            try {
                psync.execute().get(100, TimeUnit.MILLISECONDS);
                Assert.fail();
            } catch (TimeoutException e) {
            }
        } finally {
            if (clientPool != null) {
                clientPool.getObject().channel().close();
            }
        }
    }
}
Also used : NettyClient(com.ctrip.xpipe.netty.commands.NettyClient) Replconf(com.ctrip.xpipe.redis.core.protocal.cmd.Replconf) Psync(com.ctrip.xpipe.redis.core.protocal.Psync) InMemoryPsync(com.ctrip.xpipe.redis.core.protocal.cmd.InMemoryPsync) InMemoryPsync(com.ctrip.xpipe.redis.core.protocal.cmd.InMemoryPsync) TimeoutException(java.util.concurrent.TimeoutException) TimeoutException(java.util.concurrent.TimeoutException) Test(org.junit.Test)

Example 3 with Replconf

use of com.ctrip.xpipe.redis.core.protocal.cmd.Replconf in project x-pipe by ctripcorp.

the class ReplconfTest method testCapa.

@Test
public void testCapa() throws Exception {
    Replconf conf = new Replconf(getXpipeNettyClientKeyedObjectPool().getKeyPool(new InetSocketAddress(host, port)), ReplConfType.CAPA, scheduled, "eof", "psync2");
    logger.info("{}", conf.execute().get());
}
Also used : Replconf(com.ctrip.xpipe.redis.core.protocal.cmd.Replconf) InetSocketAddress(java.net.InetSocketAddress) Test(org.junit.Test)

Example 4 with Replconf

use of com.ctrip.xpipe.redis.core.protocal.cmd.Replconf 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);
    }
}
Also used : NettyClient(com.ctrip.xpipe.netty.commands.NettyClient) DefaultNettyClient(com.ctrip.xpipe.netty.commands.DefaultNettyClient) CommandFuture(com.ctrip.xpipe.api.command.CommandFuture) Replconf(com.ctrip.xpipe.redis.core.protocal.cmd.Replconf) CommandFutureListener(com.ctrip.xpipe.api.command.CommandFutureListener) DefaultNettyClient(com.ctrip.xpipe.netty.commands.DefaultNettyClient) CommandExecutionException(com.ctrip.xpipe.command.CommandExecutionException) IOException(java.io.IOException) XpipeException(com.ctrip.xpipe.exception.XpipeException) SequenceCommandChain(com.ctrip.xpipe.command.SequenceCommandChain)

Aggregations

Replconf (com.ctrip.xpipe.redis.core.protocal.cmd.Replconf)4 NettyClient (com.ctrip.xpipe.netty.commands.NettyClient)3 SequenceCommandChain (com.ctrip.xpipe.command.SequenceCommandChain)2 InMemoryPsync (com.ctrip.xpipe.redis.core.protocal.cmd.InMemoryPsync)2 IOException (java.io.IOException)2 InetSocketAddress (java.net.InetSocketAddress)2 Test (org.junit.Test)2 CommandFuture (com.ctrip.xpipe.api.command.CommandFuture)1 CommandFutureListener (com.ctrip.xpipe.api.command.CommandFutureListener)1 CommandExecutionException (com.ctrip.xpipe.command.CommandExecutionException)1 XpipeException (com.ctrip.xpipe.exception.XpipeException)1 DefaultNettyClient (com.ctrip.xpipe.netty.commands.DefaultNettyClient)1 FixedObjectPool (com.ctrip.xpipe.pool.FixedObjectPool)1 Psync (com.ctrip.xpipe.redis.core.protocal.Psync)1 PsyncObserver (com.ctrip.xpipe.redis.core.protocal.PsyncObserver)1 EofType (com.ctrip.xpipe.redis.core.protocal.protocal.EofType)1 TimeoutException (java.util.concurrent.TimeoutException)1